Bonjour,
Je suis loin d’être expert en Arduino, je suis un débutant. C’est pourquoi j’ai besoin de votre aide.
Je dois programmer une partie dans laquelle je dois tirer 5 coups sur une cible.
-
Avant chaque coup je dois réinitialiser le temps de départ (TempsInitTir)
-
Quand la cible est touchée, le chrono est arrêté et le temps mesuré avec cette formule : TempsTir1 = millis()-TempsInitTir.
-
Ensuite je convertis ce temps en minutes, secondes et millisecondes, et je l’affiche sur l’écran LCD.
Les étapes 1, 2, 3 sont répétées pour les 5 tirs.
A la fin des 5 tirs, je dois :
a. Comptabiliser le temps total mis (TempsTotal = TempsTir1 + TempsTir2 + TempsTir3 + TempsTir4 + TempsTir5) et je l’affiche aussi sur l’écran LCD.
b. Déterminer l’index du tir qui a le temps le plus petit et l’afficher avec le temps mis (par exemple : « Meilleur tir : tir 1 » et « Temps : 00 :07 :45 »)
Voici mon code:
void Tir1() {
PonctuationTemps5();
lcd.setCursor(18,1);
lcd.print(" ");
lcd.setCursor(18,2);
lcd.write(4);
TempsInitTir1 = millis();
while (1) {
if (digitalRead(BoutonSELECT) == HIGH){
Serial.println('Z');
delay(wait500);
finChrono5tirs(); }
if (Serial.available()>0) {
received = Serial.read();
if(received ='A'||'B'||'C'||'D'||'E'||'F')
{tone(Buzzer, freq500, dur100);
Zone1++;
TempsTir1 = (millis() - TempsInitTir1 );
// convert time to minutes, seconds, milliseconds
// conversion temps en minutes, secondes, millisecondes
TempsSec1 = (TempsTir1 /1000)%60;
TempsMil1 = (TempsTir1 %1000)/10;
TempsMin1 = (TempsTir1 /1000)/60;
// display time min, sec, mill on the LCD
// affichage du temps min, sec, mill sur l'écran LCD
lcd.setCursor(0,1);
lcd.print("Tps1:");
lcd.setCursor(13,1);
lcd.print(" sec");
lcd.setCursor(7,1);
lcd.print(":");
lcd.setCursor(10,1);
lcd.print(".");
if (TempsMin1 >= 10 ) {
lcd.setCursor(5,1);
lcd.print(TempsMin1, DEC); }
if (TempsSec1 >= 10 ) {
lcd.setCursor(8,1);
lcd.print(TempsSec1], DEC); }
if (TempsMil1 >= 10 ) {
lcd.setCursor(11,1);
lcd.print(TempsMil1, DEC); }
if (TempsMin1 < 10 ) {
lcd.setCursor(5,1);
lcd.print("0");
lcd.setCursor(6,1);
lcd.print(TempsMin1, DEC); }
if (TempsSec1 < 10 ) {
lcd.setCursor(8,1);
lcd.print("0");
lcd.setCursor(9,1);
lcd.print(TempsSec1, DEC); }
if (TempsMil1 < 10 ) {
lcd.setCursor(11,1);
lcd.print("0");
lcd.setCursor(12,1);
lcd.print(TempsMil1, DEC); }
//=====================================
lcd.setCursor(18,1);
lcd.print(" ");
lcd.setCursor(18,2);
lcd.write(4);
TempsTotal= TempsTir1 + TempsTir2 + TempsTir3 + TempsTir4 + TempsTir1;
}
} // fin if(Serial...
} // fin while
}