Airsoft Krispies

Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Airsoft Krispies

Bonjour à tous et bienvenue

Le deal à ne pas rater :
SSD interne Crucial BX500 2,5″ SATA – 500 Go à 29,99€
29.99 €
Voir le deal

    Cible interactive

    naedioba
    naedioba
    vis rouillée
    vis rouillée


    Messages : 73
    Date d'inscription : 07/05/2017
    Age : 55
    Localisation : Saint-Louis, Sénégal

    Cible interactive Empty Cible interactive

    Message par naedioba Jeu 26 Mai - 22:08

    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

    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


      La date/heure actuelle est Dim 24 Nov - 4:02