Aide svp compteur 0 to 99

Bonjour a tous :slight_smile:

Je débute en prog arduino est j’ai besoin d’un peu d’aide svp…

Voila je désire faire un compteur de 0 a 99, jusque la j’ai bien réussi mon montage, mon problème est que je voudrais que quand le compteur arrive a 99 il reste bloqué 5 secondes sur 99 et au delà des 5 secondes il reprend son cycle de 0 a 99.

j’espère m’être bien expliqué :slight_smile: :slight_smile:

Si quelqu’un aurait la gentillesse de m’aider :slight_smile:

J’ai un arduino UNO

Voici mon code :

//SSD is Seven-Segment Display

void setup()
{
  for (int i = 0; i <= 13; i++)
    pinMode(i, OUTPUT); //Set all pins from 0 to 13 as OUTPUT
}
//The line below is the array containing all the binary numbers for the digits on a SSD from 0 to 9
const int number[11] = {0b1000000, 0b1111001, 0b0100100, 0b0110000, 0b0011001, 0b0010010, 0b0000010, 0b1111000, 0b0000000, 0b0010000};

void loop()
{
  for (int tens = 0; tens < 10; tens++)

  {
    display_tens(tens);
  }
}

void display_tens(const int tens)
{
  int pin1, a, ones;     
  //pin1 is just used to deal with pins of the 1st SSD which desplays the tens digit

  for (pin1 = 0, a = 0; pin1 < 7; pin1++, a++)
  {
    digitalWrite(pin1, bitRead(number[tens], a));
  }
  for (ones = 0; ones < 10; ones++)
  {
    display_ones(ones);
    delay(300); 
    //I have given a delay of 300 milliseconds. You can put your own Time!!
  }
}

void display_ones(const int x)
{ int pin2, b;             
//pin2 is just used to deal with pins of the 2nd SSD which desplays the ones digit

  for (pin2 = 7, b = 0; pin2 <= 13; pin2++, b++)
  {
    digitalWrite(pin2, bitRead(number[x], b));

  }

}

Merci pour votre aide. :slight_smile: :slight_smile: :slight_smile: :slight_smile:

Votre code est illisible, y’a un petit carré noir - utilisez les tags de codes (cf le post épinglés en haut du forum sur comment poster, lisez Faire un Nouveau Sujet avec les Balises)

Voila j'ai modifié désolé :confused:

Si vous n’avez rien d’autre à traiter, rajoutez juste un delay(5000); à la fin de la loop()

vous devriez écrire une fonction qui prend un nombre entre 0 et 99 en paramètre et qui l’affiche comme cela la structure du code serait beaucoup plus simple, par exemple

const unsigned int pauseCourte = 100; // ms d'attente entre 2 affichages
const unsigned int pauseLonge = 5000; // ms d'attente entre 2 séquences

// vos autres déclarations
// ...

void affiche(byte n)
{
  byte unite;
  byte dizaine;

  n = n % 100;    // on ne conserve que la partie entre 0 et 99
  unite = n % 10;   // les unités
  dizaine = n / 10;  // les dizaines (division entière)

  // effectuer l'affichage de unite sur l'afficheur des unités
  // ....

  // effectuer l'affichage de dizaine sur l'afficheur des dizaines
  // ....
  
}

void setup() {
  // ... le setup qui va bien
}

void loop() {

  // on incrémente
  for (int n = 0; n <= 99; n++) {
    affiche(n);
    delay(pauseCourte); // gère la vitesse de défilement
  }

  delay(pauseLonge); // pause quand on arrive au bout

  // on décrémente
  for (int n = 99; n >= 0; n--) {
    affiche(n);
    delay(pauseCourte); // gère la vitesse de défilement
  }
  
  delay(pauseLonge); // pause quand on arrive au bout
}

ça se lit mieux comme cela, non ?

Merci pour votre aide, je vais de ce pas essayer, je vous tiens au courant du résultat :) :)

Merci

Alors j'avoue avoir un peu de mal la :confused: j'ai essayé de m'aider de votre prog en y mélangeant le mien, mais le mieux que j'arrive a faire c'est une pause de 5 secondes a chaque dizaine est non a la fin comme je le veux.

Je suis sur que çà doit être simple une fois le truc compris, mais étant newbies et autodidacte dans ce domaine c'est pas évident :)

Merci a tous pour vos explication et surtout pour votre temps...

J'ai pu réussir avec vos explication a faire ce que je voulais, il me reste peut être un petit bug a régler, mais je vais me faire la main dessus :) :)