Arduino tableaux

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.

  1. Avant chaque coup je dois réinitialiser le temps de départ (TempsInitTir)

  2. Quand la cible est touchée, le chrono est arrêté et le temps mesuré avec cette formule : TempsTir1 = millis()-TempsInitTir.

  3. 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
}

Bonjour,

ceci est incorrect (plutôt ne fait pas ce que tu espères)

      if(received ='A'||'B'||'C'||'D'||'E'||'F')

il faut faire

      if(received ='A'||received ='B'||received ='C'||received ='D'||received ='E'||received ='F')

Kamil, tu nous caches quelque chose :slight_smile:

==

      if(received =='A'||received =='B'||received =='C'||received =='D'||received =='E'||received =='F')
      ou //
      if(received >='A' && received <='F')

trimarco232:
Kamil, tu nous caches quelque chose :slight_smile:

Houla :-[ . Effectivement, le copié collé a encore frappé, une erreur peut en cacher une autre.

bon, et moi j'ai oublié un "l", sorry, édité