chrono au format 00:00:000

bonjour,

j’ai un problème pour l’affichage du chrono,
je souhaite avoir le chrono sous forme 01:02:156 (minute:seconde:milliseconde)

actuellement j’ai le format sous forme 0:2:123

 if (etatCapteurArrive == LOW && etatChrono == true) //Si etat du capteur d'arrive est coupé et chrono en marche --> arreter le chrono
 {
  tempsOFF = (millis() - tempsON);   //la variable tempsOFF est égal à la valeur de millis - celle de tempsON --> millis n'est pas rellement un chrono, il est excuté au lancement, il faut un temps 1 - temps 0 pour avoir le temps
  minutes = ((tempsOFF / 1000) / 60); // pour avoir le temps en minute : (1 min = 60 000 ms) donc exemple : tempsOFF = 60 000 ms / 1000 = 60 / 60 = 1 min
  //Serial.println(minutes);
  secondes = ((tempsOFF / 1000) % 60); // pour avoir le temps en secondes faut utiliser le modulo, exemple tempsOFF = 50 000 / 1000 = 50 %60 = 50 s
  //Serial.println(secondes);
  millisecondes = (tempsOFF % 1000);  // pour avoir le temps en millisecondes, même principe faut utiliser le modulo, exemple tempsOFF = 1235 % 1000 = 235 --> 1235 ms contient 235 ms
  //Serial.println(millisecondes);

  tempsAEnvoyer [0] = minutes;  //les minutes sont attribuées à tempsAEnvoyer à la ligne 1
  tempsAEnvoyer [1] = secondes;  //les secondes sont attribuées à tempsAEnvoyer à la ligne 2
  tempsAEnvoyer [2] = millisecondes;  //et les millisecondes sont attribuées à tempsAEnvoyer à la ligne 3

 for (int tableau=0; tableau <=2; tableau +=1) {  //pour afficher le contenu du tableau
  Serial.print(tempsAEnvoyer[tableau]); // le temps contenu dans tempsAEnvoyer sera affiché
  Serial.print (":"); //caractère " : " pour séparer les minutes : secondes : milisecondes 
 }
   etatChrono = false;   //etat du chrono prend la valeur false --> chrono arrêté
   delay(1000);
   }

}

Pour moi, les calculs sont bons.
Il y a juste un problème dans l’affichage. Dans la boucle for, il faudrait tester si les valeurs à afficher sont inférieures à 10 et ajouter un zéro et en plus dans le cas des millisecondes si elles sont inférieures à 100 ajouter un autre zéro.

 for (int tableau=0; tableau <=2; tableau +=1) {  //pour afficher le contenu du tableau
  if (tempsAEnvoyer[tableau]<10) Serial.print("0");  // pour toutes les valeurs si < 10 on ajoute un 0
  if (tempsAEnvoyer[tableau]<100  && tableau == 2) Serial.print("0");  // pour les millisecondes si <100 on ajoute un autre zéro
  Serial.print(tempsAEnvoyer[tableau]); // le temps contenu dans tempsAEnvoyer sera affiché
  Serial.print (":"); //caractère " : " pour séparer les minutes : secondes : milisecondes 
 }

Bonjour,

Tu peux utiliser sprintf()

  char str[20];
  sprintf(str,"%02d:%02d:%03d",minutes,secondes,millisecondes);
  Serial.println(str);