Bonjour à tous,
Je veux faire des cibles interactives avec Arduino. Je veux un programme qui choisis des cibles au hasard parmi les 6 cibles. Quand une cible est choisie, le boitier principal envoie une lettre au boitier cible qui allume la LED correspondante. Par exemple si la cible 1 est choisie, on envoie ‘a’ au boitier cible qui allume la LED1. Si c’est 2, on envoie ‘b’ pour allumer la LED2, etc.
Ensuite quand la cible est touchée, le LED s’éteint et le boitier principal choisie une autre cible.
J’avais commencé à bien faire, mais actuellement le problème c’est que quand la partie commence, lorsque la première cible est choisie, le boitier principal envoie à plusieurs reprises la lettre correspondante. Après une dizaine d’envois, cela se stabilise.
Que me suggérez-vous comme solution.
Merci d’avance.
Voici les programmes sur le boitier principal et sur le boitier secondaire
Boitier principal
Boitier secondaire
Je veux faire des cibles interactives avec Arduino. Je veux un programme qui choisis des cibles au hasard parmi les 6 cibles. Quand une cible est choisie, le boitier principal envoie une lettre au boitier cible qui allume la LED correspondante. Par exemple si la cible 1 est choisie, on envoie ‘a’ au boitier cible qui allume la LED1. Si c’est 2, on envoie ‘b’ pour allumer la LED2, etc.
Ensuite quand la cible est touchée, le LED s’éteint et le boitier principal choisie une autre cible.
J’avais commencé à bien faire, mais actuellement le problème c’est que quand la partie commence, lorsque la première cible est choisie, le boitier principal envoie à plusieurs reprises la lettre correspondante. Après une dizaine d’envois, cela se stabilise.
Que me suggérez-vous comme solution.
Merci d’avance.
Voici les programmes sur le boitier principal et sur le boitier secondaire
Boitier principal
- Code:
void Random() {
if (Serial.available()>0) {Poubelle = Serial.read();}
delay(250);
digitalWrite(LEDVerte, HIGH); // Neige
digitalWrite(LEDRouge, LOW);
digitalWrite(LEDJaune, LOW);
tone(Buzzer, 1500, 500);
TempsInit = (millis());
reset10:
randomSeed( millis() );
CibleRandom = random(1, 7);
if (NbtiresReel == Nbtires) {
TempsReel = (millis() - TempsInit);
TempsTotal = TempsReel + TempsPenal;
Serial.println('Z');
delay(250);
finRandom();
}
if (CibleRandom == 1) {
reset1:
if (Serial.available()>0) {Poubelle = Serial.read(); }
delay(250);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("--------------------");
lcd.setCursor(0,1);
lcd.print(" Tirez sur ");
lcd.setCursor(0,2);
lcd.print(" la Cible 1 ");
lcd.setCursor(0,3);
lcd.print("--------------------");
Serial.println('a');
while (1) {
if (digitalRead(BoutonSelect) == HIGH)
{
TempsReel = (millis() - TempsInit);
TempsTotal = TempsReel + TempsPenal;
Serial.println('Z');
delay(250);
finRandom(); }
if (Serial.available()>0) {
received = Serial.read();
if(received == 'A')
{tone(Buzzer, 500, 100);
NbtiresReel++;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("--------------------");
lcd.setCursor(0,1);
lcd.print(" BRAVO! ");
lcd.setCursor(0,2);
lcd.print(" CIBLE 1 TOUCHEE ");
lcd.setCursor(0,3);
lcd.print("--------------------");
Zone1++;
Point = (Point + Cible1);
if (Serial.available()>0) { Poubelle = Serial.read();}
delay(250);
goto reset10; }
if(received =='B'||'C'||'D'||'E'||'F')
{tone(Buzzer,100,100);
TempsPenal = (TempsPenal + PenaliteCibleAleatoire * 1000); // on ajoute quelques secondes de penalite
lcd.clear();
lcd.setCursor(0,0);
lcd.print("--------------------");
lcd.setCursor(0,1);
lcd.print(" CIBLE 1 RATEE ");
lcd.setCursor(0,2);
lcd.print("Veuillez reessayer !");
lcd.setCursor(0,3);
lcd.print("--------------------");
if (Serial.available()>0) {Poubelle = Serial.read();}
delay(250);
goto reset1; }
}
}
}
if (CibleRandom == 2) {
reset2:
if (Serial.available()>0) {Poubelle = Serial.read(); }
delay(250);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("--------------------");
lcd.setCursor(0,1);
lcd.print(" Tirez sur ");
lcd.setCursor(0,2);
lcd.print(" la Cible 2 ");
lcd.setCursor(0,3);
lcd.print("--------------------");
Serial.println('b');
while (1) {
if (digitalRead(BoutonSelect) == HIGH)
{
TempsReel = (millis() - TempsInit);
TempsTotal = TempsReel + TempsPenal;
Serial.println('Z');
delay(250);
finRandom(); }
if (Serial.available()>0) {
received = Serial.read();
if(received == 'B')
{tone(Buzzer, 500, 100);
NbtiresReel++;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("--------------------");
lcd.setCursor(0,1);
lcd.print(" BRAVO! ");
lcd.setCursor(0,2);
lcd.print(" CIBLE 2 TOUCHEE ");
lcd.setCursor(0,3);
lcd.print("--------------------");
Zone2++;
Point = (Point + Cible2);
if (Serial.available()>0) { Poubelle = Serial.read();}
delay(250);
goto reset10;}
if(received =='A'||'C'||'D'||'E'||'F')
{tone(Buzzer,100,100);
TempsPenal = (TempsPenal + PenaliteCibleAleatoire * 1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("--------------------");
lcd.setCursor(0,1);
lcd.print(" CIBLE 2 RATEE ");
lcd.setCursor(0,2);
lcd.print("Veuillez reessayer !");
lcd.setCursor(0,3);
lcd.print("--------------------");
if (Serial.available()>0) {Poubelle = Serial.read();}
delay(250);
goto reset2; }
}
}
}
if (CibleRandom == 3) {
reset3:
if (Serial.available()>0) {Poubelle = Serial.read(); }
delay(250);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("--------------------");
lcd.setCursor(0,1);
lcd.print(" Tirez sur ");
lcd.setCursor(0,2);
lcd.print(" la Cible 3 ");
lcd.setCursor(0,3);
lcd.print("--------------------");
Serial.println('c');
while (1) {
if (digitalRead(BoutonSelect) == HIGH)
{
TempsReel = (millis() - TempsInit);
TempsTotal = TempsReel + TempsPenal;
Serial.println('Z');
delay(250);
finRandom(); }
if (Serial.available()>0) {
received = Serial.read();
if(received == 'C')
{tone(Buzzer, 500, 100);
NbtiresReel++;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("--------------------");
lcd.setCursor(0,1);
lcd.print(" BRAVO! ");
lcd.setCursor(0,2);
lcd.print(" CIBLE 3 TOUCHEE ");
lcd.setCursor(0,3);
lcd.print("--------------------");
Zone3++;
Point = (Point + Cible3);
if (Serial.available()>0) {Poubelle = Serial.read();}
delay(250);
goto reset10;}
if(received =='B'||'A'||'D'||'E'||'F')
{tone(Buzzer,100,100);
TempsPenal = (TempsPenal + PenaliteCibleAleatoire * 1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("--------------------");
lcd.setCursor(0,1);
lcd.print(" CIBLE 3 RATEE ");
lcd.setCursor(0,2);
lcd.print("Veuillez reessayer !");
lcd.setCursor(0,3);
lcd.print("--------------------");
if (Serial.available()>0) {Poubelle = Serial.read();}
delay(250);
goto reset3; }
}
}
}
if (CibleRandom == 4) {
reset4:
if (Serial.available()>0) {Poubelle = Serial.read(); }
delay(250);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("--------------------");
lcd.setCursor(0,1);
lcd.print(" Tirez sur ");
lcd.setCursor(0,2);
lcd.print(" la Cible 4 ");
lcd.setCursor(0,3);
lcd.print("--------------------");
Serial.println('d');
while (1) {
if (digitalRead(BoutonSelect) == HIGH)
{
TempsReel = (millis() - TempsInit);
TempsTotal = TempsReel + TempsPenal;
Serial.println('Z');
delay(250);
finRandom(); }
if (Serial.available()>0) {
received = Serial.read();
if(received == 'D')
{tone(Buzzer, 500, 100);
NbtiresReel++;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("--------------------");
lcd.setCursor(0,1);
lcd.print(" BRAVO! ");
lcd.setCursor(0,2);
lcd.print(" CIBLE 4 TOUCHEE ");
lcd.setCursor(0,3);
lcd.print("--------------------");
Zone4++;
Point = (Point + Cible4);
if (Serial.available()>0) {Poubelle = Serial.read(); }
delay(250);
goto reset10;}
if(received =='B'||'C'||'A'||'E'||'F')
{tone(Buzzer,100,100);
TempsPenal = (TempsPenal + PenaliteCibleAleatoire * 1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("--------------------");
lcd.setCursor(0,1);
lcd.print(" CIBLE 4 RATEE ");
lcd.setCursor(0,2);
lcd.print("Veuillez reessayer !");
lcd.setCursor(0,3);
lcd.print("--------------------");
if (Serial.available()>0) {Poubelle = Serial.read();}
delay(250);
goto reset4; }
}
}
}
if (CibleRandom == 5) {
reset5:
if (Serial.available()>0) {Poubelle = Serial.read(); }
delay(250);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("--------------------");
lcd.setCursor(0,1);
lcd.print(" Tirez sur ");
lcd.setCursor(0,2);
lcd.print(" la Cible 5 ");
lcd.setCursor(0,3);
lcd.print("--------------------");
Serial.println('e');
while (1) {
if (digitalRead(BoutonSelect) == HIGH)
{
TempsReel = (millis() - TempsInit);
TempsTotal = TempsReel + TempsPenal;
Serial.println('Z');
delay(250);
finRandom(); }
if (Serial.available()>0) {
received = Serial.read();
if(received == 'E')
{tone(Buzzer, 500, 100);
NbtiresReel++;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("--------------------");
lcd.setCursor(0,1);
lcd.print(" BRAVO! ");
lcd.setCursor(0,2);
lcd.print(" CIBLE 5 TOUCHEE ");
lcd.setCursor(0,3);
lcd.print("--------------------");
Zone5++;
Point = (Point + Cible5);
if (Serial.available()>0) { Poubelle = Serial.read();}
delay(250);
goto reset10;}
if(received =='B'||'C'||'D'||'A'||'F')
{tone(Buzzer,100,100);
TempsPenal = (TempsPenal + PenaliteCibleAleatoire * 1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("--------------------");
lcd.setCursor(0,1);
lcd.print(" CIBLE 5 RATEE ");
lcd.setCursor(0,2);
lcd.print("Veuillez reessayer !");
lcd.setCursor(0,3);
lcd.print("--------------------");
if (Serial.available()>0) {Poubelle = Serial.read();}
delay(250);
goto reset5; }
}
}
}
if (CibleRandom == 6) {
reset6:
if (Serial.available()>0) {Poubelle = Serial.read(); }
delay(250);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("--------------------");
lcd.setCursor(0,1);
lcd.print(" Tirez sur ");
lcd.setCursor(0,2);
lcd.print(" la Cible 6 ");
lcd.setCursor(0,3);
lcd.print("--------------------");
Serial.println('f');
while (1) {
if (digitalRead(BoutonSelect) == HIGH)
{
TempsReel = (millis() - TempsInit);
TempsTotal = TempsReel + TempsPenal;
Serial.println('Z');
delay(250);
finRandom(); }
if (Serial.available()>0) {
received = Serial.read();
if(received == 'F')
{tone(Buzzer, 500, 100);
NbtiresReel++;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("--------------------");
lcd.setCursor(0,1);
lcd.print(" BRAVO! ");
lcd.setCursor(0,2);
lcd.print(" CIBLE 6 TOUCHEE ");
lcd.setCursor(0,3);
lcd.print("--------------------");
Zone6++;
Point = (Point + Cible6);
if (Serial.available()>0) {Poubelle = Serial.read(); }
delay(250);
goto reset10;}
if(received =='B'||'C'||'D'||'E'||'A')
{tone(Buzzer,100,100);
TempsPenal = (TempsPenal + PenaliteCibleAleatoire * 1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("--------------------");
lcd.setCursor(0,1);
lcd.print(" CIBLE 6 RATEE ");
lcd.setCursor(0,2);
lcd.print("Veuillez reessayer !");
lcd.setCursor(0,3);
lcd.print("--------------------");
if (Serial.available()>0) {Poubelle = Serial.read();}
delay(250);
goto reset6; }
}
}
}
}
Boitier secondaire
- Code:
void LED_target(){
digitalWrite(LEDVerte, HIGH);
digitalWrite(LEDJaune, LOW);
digitalWrite(LEDRouge, LOW);
if (Serial.available()>0){Poubelle = Serial.read();}
Sensibilite_stored = EEPROM.read(1);
Sensibilite = Sensibilite_stored*100;
while(1){
if (Serial.available()>0){
received = Serial.read();
if(received == 'Z'){
loop();
} // fin if(received == 'Z'...
if(received == 'a'){
digitalWrite(LED_C1, HIGH);
}
if(received == 'b'){
digitalWrite(LED_C2, HIGH);
}
if(received == 'c'){
digitalWrite(LED_C3, HIGH);
}
if(received == 'd'){
digitalWrite(LED_C4, HIGH);
}
if(received == 'e'){
digitalWrite(LED_C5, HIGH);
}
if(received == 'f'){
digitalWrite(LED_C6, HIGH);
}
} // fin if (Serial.available...
//Cible 1 ----------------------------
int valeurCapteur1 = analogRead(pinCapteur1);
valeurCapteur1 = map(valeurCapteur1, 0, 1023, 0, 255);
if(valeurCapteur1 >= Sensibilite){
etatCapteur_C1=1;
}
else{ etatCapteur_C1=0;}
if (etatCapteur_C1 != lastEtatCapteur_C1){
if ( etatCapteur_C1 == 1){
Serial.println('A');
digitalWrite(LED_C1, LOW);
}
lastEtatCapteur_C1 = etatCapteur_C1;
if(Serial.available()>0){Poubelle = Serial.read();}
}
//Cible 2 ----------------------------
int valeurCapteur2 = analogRead(pinCapteur2);
valeurCapteur2 = map(valeurCapteur2, 0, 1023, 0, 255);
if(valeurCapteur2 >= Sensibilite){
etatCapteur_C2=1;
}
else{ etatCapteur_C2=0;}
if (etatCapteur_C2 != lastEtatCapteur_C2){
if ( etatCapteur_C2 == 1){
Serial.println('B');
digitalWrite(LED_C2, LOW);
}
lastEtatCapteur_C2 = etatCapteur_C2;
if(Serial.available()>0){Poubelle = Serial.read();}
}
//Cible 3 ----------------------------
int valeurCapteur3 = analogRead(pinCapteur3);
valeurCapteur3 = map(valeurCapteur3, 0, 1023, 0, 255);
if(valeurCapteur3 >= Sensibilite){
etatCapteur_C3=1;
}
else{ etatCapteur_C3=0;}
if (etatCapteur_C3 != lastEtatCapteur_C3){
if ( etatCapteur_C3 == 1){
Serial.println('C');
digitalWrite(LED_C3, LOW);
}
lastEtatCapteur_C3 = etatCapteur_C3;
if(Serial.available()>0){Poubelle = Serial.read();}
}
//Cible 4 ----------------------------
int valeurCapteur4 = analogRead(pinCapteur4);
valeurCapteur4 = map(valeurCapteur4, 0, 1023, 0, 255);
if(valeurCapteur4 >= Sensibilite){
etatCapteur_C4=1;
}
else{ etatCapteur_C4=0;}
if (etatCapteur_C4 != lastEtatCapteur_C4){
if ( etatCapteur_C4 == 1){
Serial.println('D');
digitalWrite(LED_C4, LOW);
}
lastEtatCapteur_C4 = etatCapteur_C4;
if(Serial.available()>0){Poubelle = Serial.read();}
}
//Cible 5 ----------------------------
int valeurCapteur5 = analogRead(pinCapteur5);
valeurCapteur5 = map(valeurCapteur5, 0, 1023, 0, 255);
if(valeurCapteur5 >= Sensibilite){
etatCapteur_C5=1;
}
else{ etatCapteur_C5=0;}
if (etatCapteur_C5 != lastEtatCapteur_C5){
if ( etatCapteur_C5 == 1){
Serial.println('E');
digitalWrite(LED_C5, LOW);
}
lastEtatCapteur_C5 = etatCapteur_C5;
if(Serial.available()>0){Poubelle = Serial.read();}
}
//Cible 6 ----------------------------
int valeurCapteur6 = analogRead(pinCapteur6);
valeurCapteur6 = map(valeurCapteur6, 0, 1023, 0, 255);
if(valeurCapteur6 >= Sensibilite){
etatCapteur_C6=1;
}
else{ etatCapteur_C6=0;}
if (etatCapteur_C6 != lastEtatCapteur_C6){
if ( etatCapteur_C6 == 1){
Serial.println('F');
digitalWrite(LED_C6, LOW);
}
lastEtatCapteur_C6 = etatCapteur_C6;
if(Serial.available()>0){Poubelle = Serial.read();}
}
} // fin while
} // fin jeux