Airsoft Krispies

Bonjour à tous et bienvenue


    Tuto ciblerie électronique

    Partagez

    astur

    Messages : 14
    Date d'inscription : 10/11/2017

    Re: Tuto ciblerie électronique

    Message par astur le Mar 10 Avr - 10:39

    Bonjour à tous !

    Après avoir réaliser avec succès le tuto de droop sur son boitier, nous nous sommes attaqués à la ciblerie electronique avec quelques adaptation plus sur la conception que sur le programme Smile

    après pas mal de debogage on à fini par réussir ! on à rajouter quelque bricole, notamment pour pouvoir alimenter le boitier maitre soit via pile soit via l'alim via un inter ( ca nous sert de deuxième inter lorsque l'alim est pas branché )

    pour le problème de cible qui se détectent en permanence quand les RJ45 sont branchés, cela vient d'un probleme de masse sur les cibles un soucis soit dans les cables entre les cibles ou dans les prises femelle des boitier cibles. un multimetre est bien pratique dans ce cas la ^^

    J'ai deux derniers soucis avec le programme.

    - En installant la dernière version, je me rend compte que lorsque je joue au mode 'ipsc' il me suffit de toucher la cible 1 pour finir le jeu hors j'aimerais qu'il faille toucher toute les cibles pour que le jeux se stop.

    - mon bouton reset ne marche pas :'(

    maintenant qu'on à mis les mains dedans, je sens qu'on va préparer un deuxième boitier esclave et suivre le code de notre cher ami Very Happy

    A bientôt Smile
    avatar
    Krispies
    Admin

    Messages : 3880
    Date d'inscription : 16/08/2009
    Age : 51
    Localisation : VERS-Pont du gard

    Re: Tuto ciblerie électronique

    Message par Krispies le Mar 10 Avr - 11:25

    Pour le mode IPSC c'est le principe, c'est juste une cible qui arrête le décompte, il te faudra modifier le prog pour avoir ce que tu veux..
    Pour le reset si je me souvient bien c'est juste la masse que tu renvoies sur le pin reset par un BP...donc si ça ne fonctionne pas soit ton BP est mort soit ton arduino bug..


    astur

    Messages : 14
    Date d'inscription : 10/11/2017

    Re: Tuto ciblerie électronique

    Message par astur le Mar 10 Avr - 11:33

    Krispies a écrit:Pour le mode IPSC c'est le principe, c'est juste une cible qui arrête le décompte, il te faudra modifier le prog pour avoir ce que tu veux..
    Pour le reset si je me souvient bien c'est juste la masse que tu renvoies sur le pin reset par un BP...donc si ça ne fonctionne pas soit ton BP est mort soit ton arduino bug..

    je crois que j'y ai envoyer du 5v au reset Shocked cyclops

    Merci en tout cas Smile
    avatar
    Kawadarze

    Messages : 10
    Date d'inscription : 13/05/2018

    Re: Tuto ciblerie électronique

    Message par Kawadarze le Dim 13 Mai - 11:50

    Salut à tous!
    Voila, j'ai commencer la ciblerie pour mon asso d'airsoft et on va l'utiliser lors d'un festival, le truc c'est que j'aimerai savoir si il est possible de régler la sensibilité de détection de piezzo?
    Avec le festival, on aura beaucoup de vibration et de monde du coup j'ai peur que ça déclenche les cibles sans raison...

    En vous remerciant! Very Happy
    avatar
    Krispies
    Admin

    Messages : 3880
    Date d'inscription : 16/08/2009
    Age : 51
    Localisation : VERS-Pont du gard

    Re: Tuto ciblerie électronique

    Message par Krispies le Dim 13 Mai - 13:12

    Oui la sensibilité peut se régler mais c'est une ligne du prog qu'il faut modifier. Pour avoir utiliser la ciblerie dans un salon airsoft et plusieurs fois chez moi, je ne pense pas que tu auras des problèmes de déclenchements intempestifs .Il faut vraiment un impact pour une détection, tu ne devrais pas avoir à changer le seuil du prog!!

    avatar
    naedioba
    vis rouillée
    vis rouillée

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

    Re: Tuto ciblerie électronique

    Message par naedioba le Dim 13 Mai - 16:46

    Bonjour Astur,

    Moi j’ai opté pour un ordre impose en touchant successivement et dans l’ordre les cibles 6, 5, 4, 3, 2, 1. Je dois préciser que c’est uniquement la cible 1 qui permet d’arrêter la partie si elle est touchée.
    On commence d’abord par déterminer le nombre de tours à effectuer :
    Code:

    void PreIPSCMode2() {

    // Determination du nombre de tours a effectuer

      digitalWrite(LED_VERTE, LOW); // Neige
      digitalWrite(LED_ROUGE, HIGH);
      
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Nombre de tours");
      delay(300);

      while(1)   {

         if(digitalRead(ButtonHaut) == HIGH)  // si le bouton HAUT est appuye...
             {tone(Buzzer, 800, 50);
              NombreTours++;                  // on incremente le nombre de tours de +1
              delay(DelayBP);}
              
         if(digitalRead(ButtonBas) == HIGH)   // si le bouton BAS est appuye...
             {tone(Buzzer, 800, 50);
              NombreTours--;                  // on decremente le nombre de tours de -1
              delay(DelayBP);}

         if(digitalRead(ButtonSelect) == HIGH)  // si le bouton OK est appuye...
           {tone(Buzzer, 800, 50);
           PreIPSCMode2_B();}                   // on valide le nombre de tour et on se met en mode attente

    // affichage du nombre de tour sur l'ecran LCD 16x2
     if (NombreTours  < 1 ) {NombreTours  = 1;}
     if (NombreTours  > 99 ) {NombreTours  = 99;}
     
     if (NombreTours  >= 10 ) {
      lcd.setCursor(6,1);
      lcd.print(NombreTours , DEC); }

       if (NombreTours  < 10 ) {
       lcd.setCursor(6,1);
       lcd.print("0");
       lcd.setCursor(7,1);
       lcd.print(NombreTours , DEC); }
      }
    }


    Une fois le nombre de tours validé, on passe en mode attente
    Code:

    void PreIPSCMode2_B() {

    // mode attente

       lcd.clear();
       lcd.setCursor(3,0);
       lcd.print("Quand pret");
       lcd.setCursor(3,1);
       lcd.print("Pressez OK");
       delay(1000);
      
     while(1)  {  
      if(digitalRead(ButtonSelect) == HIGH) // si le bouton OK ets appuye...
       {tone(Buzzer, 800, 50);
        StartIPSCMode2();}                  // on declenche le compte a rebours
     }
    }


    En mode attente, lorsqu’on valide avec le bouton OK, le compte à rebours est déclenché avec un temps aléatoire compris entre 5 et 10 secondes
    Code:

    void StartIPSCMode2() {

    // compte a rebours
      
      lcd.clear();
      lcd.setCursor(2,0);
      lcd.print("Depart dans:");
      lcd.setCursor(9,1);
      lcd.print("sec");
      randomSeed( millis() );
      PreCounterseconde = random(5, 10); // chiffre aleatoire entre 5 et 10
      
     while(1) {
       if (PreCounterseconde >= 10 ) {
          lcd.setCursor(6,1);
          lcd.print(PreCounterseconde, DEC); }
       if (PreCounterseconde < 10 ) {
          lcd.setCursor(6,1);
          lcd.print("0");
          lcd.setCursor(7,1);
          lcd.print(PreCounterseconde, DEC); }
          delay(1000);
          PreCounterseconde--;  
      
       if (PreCounterseconde == 0)        // si le compte a rebours arrive a 0 (zero)...
         { Serial.println('S');           // on se connecte au boitier secondaire
          digitalWrite(LED_VERTE, HIGH);  // Neige
          digitalWrite(LED_ROUGE, LOW);
          tone(Buzzer, 1000, 800);

          TempsInit = (millis());         // on initialise le chrono...
          
          IPSCMode2_cible6(); }           // on commence la partie avec la cible 6
      }
     }



    Quand le compte à rebours arrive à 0 (zéro), la partie démarre avec la cible 6
    Code:

    void IPSCMode2_cible6(){
     
    // demarrage de la partie avec la cible 6  
      
       reset6:
       if (Serial.available()>0) {Poubelle = Serial.read();}  

       lcd.clear();
       lcd.setCursor(0,0);
       lcd.print("Tir sur Cible 6");
      
          
       while (1) {
         if (digitalRead(ButtonSelect) == HIGH)  // si bouton OK est appuye...
           {TempsReel = (millis() - TempsInit );
           Serial.println('Z');  // fin de la partie
           delay(500);
           finIPSCMode2(); }

         if (Serial.available()>0) {
        received = Serial.read();
           if(received == 'F')              // si la cible 6 est touchee...
               {tone(Buzzer, 1000, 100);    // emettre un bip sonnore...
                Zone6++;                    // incrementer Zone6 pour le comptage du nombre de coups dans cette cible...
                Point = (Point + Cibles6);  // comptage du nombre de point pour cette cible...
                if (Serial.available()>0) {Poubelle = Serial.read();}  
                delay(200);
                IPSCMode2_cible5();         // on passe a la cible suivante, ici cible 5

                }
              
             if(received ='A'||'B'||'C'||'D'||'E')  // si la cible 6 n'est pas touchee, alors...
               {tone(Buzzer, 100, 300);
                if (Serial.available()>0) {Poubelle = Serial.read();}
                delay(200);
                goto reset6;  }                     // ... on retourne en debut de procedure et on attend un autre tir dans la cible
          } // fin if(Serial...

            TempsReel = (millis() - TempsInit );    // calcul du temps reel effectue
            CalculeMinSecMilli ();                  // conversion du temps effectue en minutes, seconde et millisecondes                
            PonctuationChrono ();                   // formatage de l'affichage du temps sur l'ecran LCD 16x2        
            
      } // fin while
    } // fin void


    Si la cible 6 est touchee, on passe a la cible suivante (ici la cible 5), sinon on recommence avec la cible 6
    Code:

    if(received == 'F')              // si la cible 6 est touchee...
               {tone(Buzzer, 1000, 100);    // emettre un bip sonnore...
                Zone6++;                    // incrementer Zone6 pour le comptage du nombre de coups dans cette cible...
                Point = (Point + Cibles6);  // comptage du nombre de point pour cette cible...
                if (Serial.available()>0) {Poubelle = Serial.read();}  
                delay(200);
                IPSCMode2_cible5();         // on passe a la cible suivante, ici cible 5

                }



    Donc on suit l’ordre cible 6, cible 5, cible 4, cible 3, cible 2, cible 1.

    Si la cible 1 est touchée et le nombre de tour est atteint (Tour == NombreTours), on calcule le temps effectue, la partie s’arrête, et on passe à l'affichage des informations. Si la cible 1 est touchée et le nombre de tour n'est pas encore atteint (Tour < NombreTours), on commence un autre tour en retournant à la cible 6.
    Code:

    void IPSCMode2_cible1(){
     
      
       reset1:
       if (Serial.available()>0) {Poubelle = Serial.read();}  

       lcd.clear();
       lcd.setCursor(0,0);
       lcd.print("Tir sur Cible 1");
      
          
       while (1) {
         if (digitalRead(ButtonSelect) == HIGH)  // si bouton OK est appuye...
           {TempsReel = (millis() - TempsInit );
           Serial.println('Z');  // fin de la partie
           delay(500);
           finIPSCMode2(); }

         if (Serial.available()>0) {
        received = Serial.read();
           if(received == 'A')
               {tone(Buzzer, 1000, 100);
                Zone1++;
                Point = (Point + Cibles1);
                if (Serial.available()>0) {Poubelle = Serial.read();}  
                delay(200);
                Tour++;    
                  if(Tour == NombreTours) {               // si la cible 1 est touchee et le nombre de tour est atteint...
                    TempsReel = (millis() - TempsInit );  // on calcule le temps effectue...
                    hitfactor = (Point*1000)/TempsReel;   // on calcul le facteur de tir...
                    Serial.println('Z');                  // fin de la partie...
                    finIPSCMode2();                       // on passe a l'affichage des informations
                  } // fin  if(Tour == NombreTours)
                  else
                  if(Tour < NombreTours) {  // si la cible 1 est touchee et le nombre de tour n'est pas encore atteint...
                     IPSCMode2_cible6();    // on commence un autre tour en retournant a la cible 6
                  }
             } // if(received == 'A')
              
             if(received ='B'||'C'||'D'||'E'||'F')
               {tone(Buzzer, 100, 300);
                if (Serial.available()>0) {Poubelle = Serial.read();}
                delay(200);
                goto reset1;  }
          } // fin if(Serial...

            TempsReel = (millis() - TempsInit );
            CalculeMinSecMilli ();                  // conversion du temps effectue en minutes, seconde et millisecondes
            PonctuationChrono ();                   // formatage de l'affichage du temps sur l'ecran LCD 16x2
            
      } // fin while
    } // fin void


    Avec ça, je peux faire jusqu’à 99 tours.

    Voici le code complet de cette partie avec des variables à adapter selon votre cas.
    Code:

    void PreIPSCMode2() {

    // Determination du nombre de tours a effectuer

      digitalWrite(LED_VERTE, LOW); // Neige
      digitalWrite(LED_ROUGE, HIGH);
      
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Nombre de tours");
      delay(300);

      while(1)   {

         if(digitalRead(ButtonHaut) == HIGH)  // si le bouton HAUT est appuye...
             {tone(Buzzer, 800, 50);
              NombreTours++;                  // on incremente le nombre de tours de +1
              delay(DelayBP);}
              
         if(digitalRead(ButtonBas) == HIGH)   // si le bouton BAS est appuye...
             {tone(Buzzer, 800, 50);
              NombreTours--;                  // on decremente le nombre de tours de -1
              delay(DelayBP);}

         if(digitalRead(ButtonSelect) == HIGH)  // si le bouton OK est appuye...
           {tone(Buzzer, 800, 50);
           PreIPSCMode2_B();}                   // on valide le nombre de tour et on se met en mode attente

    // affichage du nombre de tour sur l'ecran LCD 16x2
     if (NombreTours  < 1 ) {NombreTours  = 1;}
     if (NombreTours  > 99 ) {NombreTours  = 99;}
     
     if (NombreTours  >= 10 ) {
      lcd.setCursor(6,1);
      lcd.print(NombreTours , DEC); }

       if (NombreTours  < 10 ) {
       lcd.setCursor(6,1);
       lcd.print("0");
       lcd.setCursor(7,1);
       lcd.print(NombreTours , DEC); }
      }
    }

    //-----------------------------------------------------------

    void PreIPSCMode2_B() {

    // mode attente

       lcd.clear();
       lcd.setCursor(3,0);
       lcd.print("Quand pret");
       lcd.setCursor(3,1);
       lcd.print("Pressez OK");
       delay(1000);
      
     while(1)  {  
      if(digitalRead(ButtonSelect) == HIGH) // si le bouton OK ets appuye...
       {tone(Buzzer, 800, 50);
        StartIPSCMode2();}                  // on declenche le compte a rebours
     }
    }

    //-----------------------------------------------------------
     void StartIPSCMode2() {

    // compte a rebours
      
      lcd.clear();
      lcd.setCursor(2,0);
      lcd.print("Depart dans:");
      lcd.setCursor(9,1);
      lcd.print("sec");
      randomSeed( millis() );
      PreCounterseconde = random(5, 10); // chiffre aleatoire entre 5 et 10
      
     while(1) {
       if (PreCounterseconde >= 10 ) {
          lcd.setCursor(6,1);
          lcd.print(PreCounterseconde, DEC); }
       if (PreCounterseconde < 10 ) {
          lcd.setCursor(6,1);
          lcd.print("0");
          lcd.setCursor(7,1);
          lcd.print(PreCounterseconde, DEC); }
          delay(1000);
          PreCounterseconde--;  
      
       if (PreCounterseconde == 0)        // si le compte a rebours arrive a 0 (zero)...
         { Serial.println('S');           // on se connecte au boitier secondaire
          digitalWrite(LED_VERTE, HIGH);  // Neige
          digitalWrite(LED_ROUGE, LOW);
          tone(Buzzer, 1000, 800);

          TempsInit = (millis());         // on initialise le chrono...
          
          IPSCMode2_cible6(); }           // on commence la partie avec la cible 6
      }
     }
    //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
     void IPSCMode2_cible6(){
     
    // demarrage de la partie avec la cible 6  
      
       reset6:
       if (Serial.available()>0) {Poubelle = Serial.read();}  

       lcd.clear();
       lcd.setCursor(0,0);
       lcd.print("Tir sur Cible 6");
      
          
       while (1) {
         if (digitalRead(ButtonSelect) == HIGH)  // si bouton OK est appuye...
           {TempsReel = (millis() - TempsInit );
           Serial.println('Z');  // fin de la partie
           delay(500);
           finIPSCMode2(); }

         if (Serial.available()>0) {
        received = Serial.read();
           if(received == 'F')              // si la cible 6 est touchee...
               {tone(Buzzer, 1000, 100);    // emettre un bip sonnore...
                Zone6++;                    // incrementer Zone6 pour le comptage du nombre de coups dans cette cible...
                Point = (Point + Cibles6);  // comptage du nombre de point pour cette cible...
                if (Serial.available()>0) {Poubelle = Serial.read();}  
                delay(200);
                IPSCMode2_cible5();         // on passe a la cible suivante, ici cible 5

                }
              
             if(received ='A'||'B'||'C'||'D'||'E')  // si la cible 6 n'est pas touchee, alors...
               {tone(Buzzer, 100, 300);
                if (Serial.available()>0) {Poubelle = Serial.read();}
                delay(200);
                goto reset6;  }                     // ... on retourne en debut de procedure et on attend un autre tir dans la cible
          } // fin if(Serial...

            TempsReel = (millis() - TempsInit );    // calcul du temps reel effectue
            CalculeMinSecMilli ();                  // conversion du temps effectue en minutes, seconde et millisecondes                
            PonctuationChrono ();                   // formatage de l'affichage du temps sur l'ecran LCD 16x2        
            
      } // fin while
    } // fin void

    //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
     void IPSCMode2_cible5(){
     
      
       reset5:
       if (Serial.available()>0) {Poubelle = Serial.read();}  

       lcd.clear();
       lcd.setCursor(0,0);
       lcd.print("Tir sur Cible 5");
      
          
       while (1) {
         if (digitalRead(ButtonSelect) == HIGH)  // si bouton OK est appuye...
           {TempsReel = (millis() - TempsInit );
           Serial.println('Z');  // fin de la partie
           delay(500);
           finIPSCMode2(); }

         if (Serial.available()>0) {
        received = Serial.read();
           if(received == 'E')
               {tone(Buzzer, 1000, 100);
                Zone5++;
                Point = (Point + Cibles5);
                if (Serial.available()>0) {Poubelle = Serial.read();}  
                delay(200);
                IPSCMode2_cible4();
                }
              
             if(received ='A'||'B'||'C'||'D'||'F')
               {tone(Buzzer, 100, 300);
                if (Serial.available()>0) {Poubelle = Serial.read();}
                delay(200);
                goto reset5;  }
          } // fin if(Serial...

            TempsReel = (millis() - TempsInit );
            CalculeMinSecMilli ();                  // conversion du temps effectue en minutes, seconde et millisecondes
            PonctuationChrono ();                   // formatage de l'affichage du temps sur l'ecran LCD 16x2
          
      } // fin while
    } // fin void

    //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
     void IPSCMode2_cible4(){
     
      
       reset4:
       if (Serial.available()>0) {Poubelle = Serial.read();}  

       lcd.clear();
       lcd.setCursor(0,0);
       lcd.print("Tir sur Cible 4");
      
          
       while (1) {
         if (digitalRead(ButtonSelect) == HIGH)  // si bouton OK est appuye...
           {TempsReel = (millis() - TempsInit );
           Serial.println('Z');  // fin de la partie
           delay(500);
           finIPSCMode2(); }

         if (Serial.available()>0) {
        received = Serial.read();
           if(received == 'D')
               {tone(Buzzer, 1000, 100);
                Zone4++;
                Point = (Point + Cibles4);
                if (Serial.available()>0) {Poubelle = Serial.read();}  
                delay(200);
                IPSCMode2_cible3();
                }
              
             if(received ='A'||'B'||'C'||'E'||'F')
               {tone(Buzzer, 100, 300);
                if (Serial.available()>0) {Poubelle = Serial.read();}
                delay(200);
                goto reset4;  }
          } // fin if(Serial...

            TempsReel = (millis() - TempsInit );
            CalculeMinSecMilli ();                  // conversion du temps effectue en minutes, seconde et millisecondes
            PonctuationChrono ();                   // formatage de l'affichage du temps sur l'ecran LCD 16x2
          
      } // fin while
    } // fin void

    //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
     void IPSCMode2_cible3(){
     
      
       reset3:
       if (Serial.available()>0) {Poubelle = Serial.read();}  

       lcd.clear();
       lcd.setCursor(0,0);
       lcd.print("Tir sur Cible 3");
      
          
       while (1) {
         if (digitalRead(ButtonSelect) == HIGH)  // si bouton OK est appuye...
           {TempsReel = (millis() - TempsInit );
           Serial.println('Z');  // fin de la partie
           delay(500);
           finIPSCMode2(); }

         if (Serial.available()>0) {
        received = Serial.read();
           if(received == 'C')
               {tone(Buzzer, 1000, 100);
                Zone3++;
                Point = (Point + Cibles3);
                if (Serial.available()>0) {Poubelle = Serial.read();}  
                delay(200);
                IPSCMode2_cible2();
                }
              
             if(received ='A'||'B'||'D'||'E'||'F')
               {tone(Buzzer, 100, 300);
                if (Serial.available()>0) {Poubelle = Serial.read();}
                delay(200);
                goto reset3;  }
          } // fin if(Serial...

            TempsReel = (millis() - TempsInit );
            CalculeMinSecMilli ();                  // conversion du temps effectue en minutes, seconde et millisecondes
            PonctuationChrono ();                   // formatage de l'affichage du temps sur l'ecran LCD 16x2
            
      } // fin while
    } // fin void

    //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
     void IPSCMode2_cible2(){
     
      
       reset2:
       if (Serial.available()>0) {Poubelle = Serial.read();}  

       lcd.clear();
       lcd.setCursor(0,0);
       lcd.print("Tir sur Cible 2");
      
          
       while (1) {
         if (digitalRead(ButtonSelect) == HIGH)  // si bouton OK est appuye...
           {TempsReel = (millis() - TempsInit );
           Serial.println('Z');  // fin de la partie
           delay(500);
           finIPSCMode2(); }

         if (Serial.available()>0) {
        received = Serial.read();
           if(received == 'B')
               {tone(Buzzer, 1000, 100);
                Zone2++;
                Point = (Point + Cibles2);
                if (Serial.available()>0) {Poubelle = Serial.read();}  
                delay(200);
                IPSCMode2_cible1();
                }
              
             if(received ='A'||'C'||'D'||'E'||'F')
               {tone(Buzzer, 100, 300);
                if (Serial.available()>0) {Poubelle = Serial.read();}
                delay(200);
                goto reset2;  }
          } // fin if(Serial...

            TempsReel = (millis() - TempsInit );
            CalculeMinSecMilli ();                  // conversion du temps effectue en minutes, seconde et millisecondes
            PonctuationChrono ();                   // formatage de l'affichage du temps sur l'ecran LCD 16x2
            
      } // fin while
    } // fin void

    //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
     void IPSCMode2_cible1(){
     
      
       reset1:
       if (Serial.available()>0) {Poubelle = Serial.read();}  

       lcd.clear();
       lcd.setCursor(0,0);
       lcd.print("Tir sur Cible 1");
      
          
       while (1) {
         if (digitalRead(ButtonSelect) == HIGH)  // si bouton OK est appuye...
           {TempsReel = (millis() - TempsInit );
           Serial.println('Z');  // fin de la partie
           delay(500);
           finIPSCMode2(); }

         if (Serial.available()>0) {
        received = Serial.read();
           if(received == 'A')
               {tone(Buzzer, 1000, 100);
                Zone1++;
                Point = (Point + Cibles1);
                if (Serial.available()>0) {Poubelle = Serial.read();}  
                delay(200);
                Tour++;    
                  if(Tour == NombreTours) {               // si la cible 1 est touchee et le nombre de tour est atteint...
                    TempsReel = (millis() - TempsInit );  // on calcule le temps effectue...
                    hitfactor = (Point*1000)/TempsReel;   // on calcul le facteur de tir...
                    Serial.println('Z');                  // fin de la partie...
                    finIPSCMode2();                       // on passe a l'affichage des informations
                  } // fin  if(Tour == NombreTours)
                  else
                  if(Tour < NombreTours) {  // si la cible 1 est touchee et le nombre de tour n'est pas encore atteint...
                     IPSCMode2_cible6();    // on commence un autre tour en retournant a la cible 6
                  }
             } // if(received == 'A')
              
             if(received ='B'||'C'||'D'||'E'||'F')
               {tone(Buzzer, 100, 300);
                if (Serial.available()>0) {Poubelle = Serial.read();}
                delay(200);
                goto reset1;  }
          } // fin if(Serial...

            TempsReel = (millis() - TempsInit );
            CalculeMinSecMilli ();                  // conversion du temps effectue en minutes, seconde et millisecondes
            PonctuationChrono ();                   // formatage de l'affichage du temps sur l'ecran LCD 16x2
            
      } // fin while
    } // fin void

    //---------------------------------------------------------
    void finIPSCMode2() {

    // affichage des informations de fin de partie

      digitalWrite(LED_VERTE, HIGH); // Neige
      digitalWrite(LED_ROUGE, HIGH);
        
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Fin de la partie");

    // emission de 3 bips sonnores  
      tone(Buzzer, 100, 1000);
      delay(1000);
      tone(Buzzer, 1000, 1000);
      delay(1000);
      tone(Buzzer, 5000, 1000);
      delay(1000);
      
      CalculeMinSecMilli (); // conversion du temps effectue en minutes, seconde et millisecondes
     
      while (1) {
        
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Fin de la partie");
      PonctuationChrono ();                   // formatage de l'affichage du temps sur l'ecran LCD 16x2
    welcome========================================================
      do {
      suivant = false;
      EtatButtonSelect = digitalRead(ButtonSelect);
      EtatButtonHaut = digitalRead(ButtonHaut);
      EtatButtonBas = digitalRead(ButtonBas);
      if (EtatButtonSelect == HIGH || EtatButtonHaut == HIGH ||EtatButtonBas == HIGH)
      {delay(250);tone(Buzzer,500,150);suivant = true;}
      }
     while (suivant != true);
      
      // affichage des points
      lcd.setCursor(0,1);
      lcd.print("                ");
      lcd.setCursor(8,1);
      lcd.print("points");
      lcd.setCursor(2, 1);
      lcd.print(Point);
    welcome========================================================
      do {
      suivant = false;
      EtatButtonSelect = digitalRead(ButtonSelect);
      EtatButtonHaut = digitalRead(ButtonHaut);
      EtatButtonBas = digitalRead(ButtonBas);
      if (EtatButtonSelect == HIGH || EtatButtonHaut == HIGH ||EtatButtonBas == HIGH)
      {delay(250);tone(Buzzer,500,150);suivant = true;}
      }
     while (suivant != true);
    welcome========================================================  
      // affichage facteur de tir
      lcd.clear();  
      lcd.setCursor(0,0);
      lcd.print("Facteur de tir");
      lcd.setCursor(0, 1);
      lcd.print(hitfactor);
    welcome========================================================
      do {
      suivant = false;
      EtatButtonSelect = digitalRead(ButtonSelect);
      EtatButtonHaut = digitalRead(ButtonHaut);
      EtatButtonBas = digitalRead(ButtonBas);
      if (EtatButtonSelect == HIGH || EtatButtonHaut == HIGH ||EtatButtonBas == HIGH)
      {delay(250);tone(Buzzer,500,150);suivant = true;}
      }
     while (suivant != true);
      AffichageZones ();
      
    welcome========================================================
      do {
      suivant = false;
      EtatButtonSelect = digitalRead(ButtonSelect);
      EtatButtonHaut = digitalRead(ButtonHaut);
      EtatButtonBas = digitalRead(ButtonBas);
      if (EtatButtonSelect == HIGH || EtatButtonHaut == HIGH ||EtatButtonBas == HIGH)
      {delay(250);tone(Buzzer,500,150);suivant = true;}
      }
     while (suivant != true);
    welcome========================================================
           // reinitialisation des variables    
               NbtiresReel = 0;
               NombreTours = 0;
               TempsInit = 0;
               TempsPenal = 0;
               TempsReel = 0;
               TempsMin = 0;
               TempsSec = 0;
               TempsMil = 0;
               Tour = 0;
               hitfactor = 0;
               Point = 0;
               Zone1 = 0;
               Zone2 = 0;
               Zone3 = 0;
               Zone4 = 0;
               Zone5 = 0;
               Zone6 = 0;      
              
               Menu(); // Retour au menu principal
      }
    }

    BBOB

    Messages : 15
    Date d'inscription : 20/05/2015
    Age : 50
    Localisation : 91700

    Re: Tuto ciblerie électronique

    Message par BBOB le Mar 15 Mai - 22:21

    Salut Kawadarze. Pour faire la différence entre AEP et Snipe, j'ai fais un menu qui permet de modifier, avec un potentiomètre, le seuil de détection des piezos, ça évite de garder un PC tout le temps à coté. Il n'y a pas de sauvegarde, donc si on l’éteint , on perd la valeur, mais ça permet de s'adapter au mieux. Par défaut, la valeur est celle de Krispies qui fonctionne bien pour tout Cool
    avatar
    Kawadarze

    Messages : 10
    Date d'inscription : 13/05/2018

    Re: Tuto ciblerie électronique

    Message par Kawadarze le Mar 29 Mai - 20:36

    Merci pour vos réponse que j'ai vu un peu tard! ><

    J'ai bien pu faire le salon! (Le Bordeaux Geek Festival) et le parcours de tir que l'on a mis en mode IPSC a fonctionner a merveille!
    Merci à toi Krispies ainsi qu'a Naudnaud pour le travaille accompli!

    Il ne me reste plus qu'a mettre des LED sur mes cibles!

    J'ai déjà ma petite idée de comment faire, je publierai si ça marche Razz
    avatar
    Krispies
    Admin

    Messages : 3880
    Date d'inscription : 16/08/2009
    Age : 51
    Localisation : VERS-Pont du gard

    Re: Tuto ciblerie électronique

    Message par Krispies le Mer 30 Mai - 19:08

    Même si ça marche pas, on prends toutes les infos...T'as pas quelques photos ou vidéos de ton parcours au salon?ça peut ètre sympa de voir le résultat!! Wink

    avatar
    naedioba
    vis rouillée
    vis rouillée

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

    Re: Tuto ciblerie électronique

    Message par naedioba le Mer 30 Mai - 19:38

    Bonjour Kawadarze
    Moi j'ai ajouté des bouton et un écran lcd 16x2 au boîtier secondaire pour régler la sensibilité des capteurs. La valeur est stock dans l'EEPROM.
    Mais C'est vrai que la valeur définie par Naudnaud & Krispies marche très bien.
    Enjoy.
    Naedioba
    avatar
    Kawadarze

    Messages : 10
    Date d'inscription : 13/05/2018

    Re: Tuto ciblerie électronique

    Message par Kawadarze le Sam 2 Juin - 20:28

    Désolé Krisp', on a pas penser a faire beaucoup de photos ou même de vidéo du parcours, ce que je trouve un peu dommage, mais tu a quelques photos du stand sur notre page facebook que voici ^^
    https://www.facebook.com/geeksoft33/

    Et Naedioba, au final, je vais rester comme ça pour la sensibilités, c'etait parfait durant tous le week-end ^^
    avatar
    Kawadarze

    Messages : 10
    Date d'inscription : 13/05/2018

    Re: Tuto ciblerie électronique

    Message par Kawadarze le Mar 12 Juin - 16:59

    Bon! Je fais de nouveau des tests mais avec le système de Burnout et les nRF24 avec adaptateur pour mettre en 5v

    J'y apporte quelques modification dans le sens ou je veux le faire avec un Nano et un mega 2560 (pour pouvoir mettre beaaaaucoup de cible) mais impossible de faire transmettre les inofs de l'un à l'autre... (alors qu'avant avec deux nano ça marchait...)
    J'ai pris les branchement de ce site et mes codes suivent, si l'un d'entre vous peux m'aider...
    https://howtomechatronics.com/tutorials/arduino/arduino-wireless-communication-nrf24l01-tutorial/

    Code:
    //BASE ESCLAVE

    #include <SPI.h>
    #include <nRF24L01.h>
    #include <printf.h>
    #include <RF24.h>
    #include <RF24_config.h>
    #include <avr/wdt.h>

    //Radio
    RF24 radio(7, 8); //CE=9 CSN=53
    const byte rxAddr[6] = "00001";
    char toSend[] = "Z";

    //Variable
    //int LEDRouge = 7;
    //int LEDVert = 6;
    //int LEDJaune = 5;
    int LEDCible0 = 2;
    int LEDCible1 = 3;
    int LEDCible2 = 4;
    int LEDCible3 = 5;
    int LEDCible4 = 6;
    int LEDCible5 = 7;
    int LEDCible6 = 22;
    int LEDCible7 = 23;
    int testcible =0;
    int testPiezo=0;


    int received; //reception RF/PC
    void Jeux();
    const int threshold= 550;

    const int sensorPin0= 0;
    const int sensorPin1= 1;
    const int sensorPin2= 2;
    const int sensorPin3= 3;
    const int sensorPin4= 4;
    const int sensorPin5= 5;
    const int sensorPin6= 6;
    const int sensorPin7= 7;

    const int DelayCible = 100;

    void setup() {
      Serial.begin(9600);
      Serial.println("Started");
      radio.begin();
      radio.setRetries(15, 15);
      //radio.setPALevel(RF24_PA_MAX);
      //radio.setDataRate(RF24_250KBPS);
      //radio.setChannel(108);
      radio.openWritingPipe(rxAddr);
      radio.openReadingPipe(0, rxAddr);
      //radio.stopListening();
      radio.startListening();
      
      //pinMode(LEDRouge, OUTPUT);
      //pinMode(LEDVert, OUTPUT);
      //pinMode(LEDJaune, OUTPUT);

      pinMode(LEDCible0, OUTPUT);
      pinMode(LEDCible1, OUTPUT);
      pinMode(LEDCible2, OUTPUT);
      pinMode(LEDCible3, OUTPUT);
      pinMode(LEDCible4, OUTPUT);
      pinMode(LEDCible5, OUTPUT);
      pinMode(LEDCible6, OUTPUT);
      pinMode(LEDCible7, OUTPUT);

      digitalWrite(LEDCible0, LOW);
      digitalWrite(LEDCible1, LOW);
      digitalWrite(LEDCible2, LOW);
      digitalWrite(LEDCible3, LOW);
      digitalWrite(LEDCible4, LOW);
      digitalWrite(LEDCible5, LOW);
      digitalWrite(LEDCible6, LOW);
      digitalWrite(LEDCible7, LOW);

    }

    void loop() {
      
      if (radio.available())
      {
        char text[32] = {0};
        radio.read(&text, sizeof(text));
        if(text[0]=='S'){
          Serial.println("Jeux");
          jeux();}
        if(text[0]=='T'){
          Serial.println("Test");
          test();}
      }

    }

    void jeux(){
      //radio.stopListening();
      
      //digitalWrite(LEDRouge, LOW);
      //digitalWrite(LEDVert, HIGH);
      //digitalWrite(LEDJaune, LOW);

      while(1){
          
        if (radio.available())
          {
            char text[1] = {0};
            radio.read(&text, sizeof(text));
            Serial.println(text[0]);
            if(text[0]=='F'){
              digitalWrite(LEDCible0, LOW);
              digitalWrite(LEDCible1, LOW);
              digitalWrite(LEDCible2, LOW);
              digitalWrite(LEDCible3, LOW);
              digitalWrite(LEDCible4, LOW);
              digitalWrite(LEDCible5, LOW);
              digitalWrite(LEDCible6, LOW);
              digitalWrite(LEDCible7, LOW);
              return;
              }
            if(text[0]=='0'){digitalWrite(LEDCible0, HIGH);}
            if(text[0]=='1'){digitalWrite(LEDCible1, HIGH);}
            if(text[0]=='2'){digitalWrite(LEDCible2, HIGH);}
            if(text[0]=='3'){digitalWrite(LEDCible3, HIGH);}
            if(text[0]=='4'){digitalWrite(LEDCible4, HIGH);}
            if(text[0]=='5'){digitalWrite(LEDCible5, HIGH);}
            if(text[0]=='6'){digitalWrite(LEDCible6, HIGH);}
            if(text[0]=='7'){digitalWrite(LEDCible7, HIGH);}
            if(text[0]=='A'){
              digitalWrite(LEDCible0, HIGH);
              digitalWrite(LEDCible1, HIGH);
              digitalWrite(LEDCible2, HIGH);
              digitalWrite(LEDCible3, HIGH);
              digitalWrite(LEDCible4, HIGH);
              digitalWrite(LEDCible5, HIGH);
              digitalWrite(LEDCible6, HIGH);
              digitalWrite(LEDCible7, HIGH);      
              }
          }

      //----------------- LECTURE DES CIBLES -----------------//
          //-- CIBLE 0 --//
        
        if((testPiezo=analogRead(sensorPin0)) >= threshold){
          Serial.println(testPiezo);
          radio.stopListening();
          toSend[0]='0';
          //Serial.println('A');
          radio.write(&toSend, sizeof(toSend));
          radio.startListening();
          digitalWrite(LEDCible0, LOW);
          delay(DelayCible);
        }
          //-- CIBLE 1 --//
        if(analogRead(sensorPin1) >= threshold){
          radio.stopListening();
          toSend[0]='1';
          //Serial.println('B');
          radio.write(&toSend, sizeof(toSend));
          radio.startListening();
          digitalWrite(LEDCible1, LOW);
          delay(DelayCible);
        }
          //-- CIBLE 2 --//
        if(analogRead(sensorPin2) >= threshold){
          radio.stopListening();
          toSend[0]='2';
          //Serial.println('C');
          radio.write(&toSend, sizeof(toSend));
          radio.startListening();
          digitalWrite(LEDCible2, LOW);
          delay(DelayCible);
        }
          //-- CIBLE 3 --//
        if(analogRead(sensorPin3) >= threshold){
          radio.stopListening();
          toSend[0]='3';
          //Serial.println('D');
          radio.write(&toSend, sizeof(toSend));
          radio.startListening();
          digitalWrite(LEDCible3, LOW);
          delay(DelayCible);
        }
          //-- CIBLE 4 --//
        if(analogRead(sensorPin4) >= threshold){
          radio.stopListening();
          toSend[0]='4';
          //Serial.println('E');
          radio.write(&toSend, sizeof(toSend));
          radio.startListening();
          digitalWrite(LEDCible4, LOW);
          delay(DelayCible);
        }
          //-- CIBLE 5 --//
        if(analogRead(sensorPin5) >= threshold){
          radio.stopListening();
          toSend[0]='5';
          //Serial.println('F');
          radio.write(&toSend, sizeof(toSend));
          radio.startListening();
          digitalWrite(LEDCible5, LOW);
          delay(DelayCible);
        }
        //-- CIBLE 6 --//
        if(analogRead(sensorPin6) >= threshold){
          radio.stopListening();
          toSend[0]='6';
          //Serial.println('G');
          radio.write(&toSend, sizeof(toSend));
          radio.startListening();
          digitalWrite(LEDCible6, LOW);
          delay(DelayCible);
        }
        //-- CIBLE 7 --//
        if(analogRead(sensorPin7) >= threshold){
          radio.stopListening();
          toSend[0]='7';
          //Serial.println('H');
          radio.write(&toSend, sizeof(toSend));
          radio.startListening();
          digitalWrite(LEDCible7, LOW);
          delay(DelayCible);
        }
        
      } //Fin While

      
    }//Fin jeux

    void test(){
      boolean Received=false;
      while(1){
        if (radio.available()){
          char text[1] = {0};
          radio.read(&text, sizeof(text));
          Serial.println(text[0]);
          if(text[0]=='F'){return;}      
        }else{
          delay(1000);
          radio.stopListening();
          toSend[0]='B';
          radio.write(&toSend, sizeof(toSend));
          radio.startListening();  
        }
      }
    }


    Code:
    //BASE MAITRE
    /*
     * AVANT TOUTE CHOSE, VERIFIEZ LA CORRESPONDANCE DES NUMERO DE PIN
     */
    #include <nRF24L01.h>
    #include <printf.h>
    #include <RF24.h>
    #include <RF24_config.h>
    #include <SPI.h>
    #include <LiquidCrystal_I2C.h>
    #include <Wire.h>
    #include <EEPROM.h>

    LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

    String liste="BCDEF";

    int Buzzer = 7;
    int ButtonHaut = 4;
    int ButtonBas = 3;
    int ButtonSelect = 2;
    int DelayBP = 200; //delais anti rebons boutons
    int PreCounterseconde = 0; //Délais avant début de partie
    int ValMenu = 1;
    int BipSonoresActifs = EEPROM.read(0);
    int FreqBipSonores;

    byte Validate[8] = {
      B00000,
      B00001,
      B00011,
      B10110,
      B11100,
      B01000,
      B00000,
      B00000,
    };

    unsigned long TempsInit = 0;
    unsigned long TempsReel = 0;
    unsigned long TempsPenal = 0;
    unsigned long TempsReelJ2 = 0;
    unsigned long TempsPenalJ2 = 0;
    unsigned long TempsSec = 0;
    unsigned long TempsMil = 0;
    unsigned long TempsMin = 0;
    unsigned long TempsSecJ2 = 0;
    unsigned long TempsMilJ2 = 0;
    unsigned long TempsMinJ2 = 0;

    RF24 radio(7, 8);
    const byte rxAddr[6] = "00001";


    void testBouton();

    void setup() {
      radio.begin();
      radio.setRetries(15, 15);
      //radio.setPALevel(RF24_PA_MAX);
      //radio.setDataRate(RF24_250KBPS);
      //radio.setChannel(108);
      radio.openReadingPipe(0, rxAddr);
      radio.openWritingPipe(rxAddr);

      //radio.startListening();
      
      pinMode(Buzzer, OUTPUT);
      if(BipSonoresActifs==1){FreqBipSonores=800;}else{FreqBipSonores=0;}
      
      Serial.begin(9600);
      Serial.println("Debut programme");
      lcd.begin(16, 2);
      lcd.createChar(0, Validate);
      lcd.setCursor(2, 0);
      lcd.print("Stand de tir  ");
      lcd.setCursor(2, 1);
      lcd.print("By Kawadarze");
      delay(5000);
      
      tone(Buzzer, 500, 100);
      delay(101);
      tone(Buzzer, 550, 100);
      delay(101);
      tone(Buzzer, 600, 100);
      delay(101);
      tone(Buzzer, 650, 100);
      delay(101);
      tone(Buzzer, 700, 100);
      delay(101);
      tone(Buzzer, 750, 100);
      delay(101);

      lcd.clear();

    }

    void loop() {
      // put your main code here, to run repeatedly:
      menu();
    }

    void menu() {
    //  while(1){
        
      
        if (digitalRead(ButtonHaut) == HIGH) // Boutons Haut
        { tone(Buzzer, FreqBipSonores, 300);
          ValMenu--;
        }
        if (digitalRead(ButtonBas) == HIGH) // Boutons Bas
        { tone(Buzzer, FreqBipSonores, 300);
          ValMenu++;
        }
        if (ValMenu >= 10)
        {
          ValMenu = 1;
        }
        if (ValMenu <= 0)
        {
          ValMenu = 9;
        }
      
        switch (ValMenu) { // debut de la structure
          case 1: // Jeu Classique
            lcd.setCursor(0, 0);
            lcd.print("      Jeu       ");
            lcd.setCursor(0, 1);
            lcd.print("    Classique   ");
            if (digitalRead(ButtonSelect) == HIGH) // Boutons Select
            {
              tone(Buzzer, FreqBipSonores, 300);
              Classique();          
            }
            delay(DelayBP);
            break;

          case 2: //
            lcd.setCursor(0, 0);
            lcd.print("      Jeu       ");
            lcd.setCursor(0, 1);
            lcd.print("    Parcours    ");
            if (digitalRead(ButtonSelect) == HIGH) // Boutons Select
            {
              tone(Buzzer, FreqBipSonores, 300);
              Parcours();
            }
            delay(DelayBP);
            break;

          case 3: // Aleatoire
            lcd.setCursor(0, 0);
            lcd.print("      Jeu       ");
            lcd.setCursor(0, 1);
            lcd.print("    Aleatoire   ");
            if (digitalRead(ButtonSelect) == HIGH) // Boutons Select
            {
              tone(Buzzer, FreqBipSonores, 300);
              Aleatoire();
            }
            delay(DelayBP);
            break;
            
          case 4: //2 Joueurs
      
            lcd.setCursor(0, 0);
            lcd.print("      Jeu       ");
            lcd.setCursor(0, 1);
            lcd.print("    2 joueurs   ");
            if (digitalRead(ButtonSelect) == HIGH) // Boutons Select
            {
              tone(Buzzer, FreqBipSonores, 300);
              MultiJoueurs();
            }
            delay(DelayBP);
            break;
            
          case 5:
            lcd.setCursor(0, 0);
            lcd.print("      Test      ");
            lcd.setCursor(0, 1);
            lcd.print("     boutons    ");
            if (digitalRead(ButtonSelect) == HIGH) // Boutons Select
            {
              tone(Buzzer, FreqBipSonores, 300);
              testBouton();
            }
            delay(DelayBP);
            break;

          case 6:
            lcd.setCursor(0, 0);
            lcd.print("      Test      ");
            lcd.setCursor(0, 1);
            lcd.print("  Base esclave  ");
            if (digitalRead(ButtonSelect) == HIGH) // Boutons Select
            {
              tone(Buzzer, FreqBipSonores, 300);
              testBase();
            }
            delay(DelayBP);
            break;
            
          case 7:
            lcd.setCursor(0, 0);
            lcd.print("      Test      ");
            lcd.setCursor(0, 1);
            lcd.print("     Cibles     ");
            if (digitalRead(ButtonSelect) == HIGH) // Boutons Select
            {
              tone(Buzzer, FreqBipSonores, 300);
              testCibles();
            }
            delay(DelayBP);
            break;
      
          case 8:
            lcd.setCursor(0, 0);
            lcd.print("      Test      ");
            lcd.setCursor(0, 1);
            lcd.print("     Buzzer     ");
            if (digitalRead(ButtonSelect) == HIGH) // Boutons Select
            {
              tone(Buzzer, FreqBipSonores, 300);
              testBuzzer();
            }
            delay(DelayBP);
            break;


          case 9:
            lcd.setCursor(0, 0);
            lcd.print(" Configuration  ");
            lcd.setCursor(0, 1);
            lcd.print("  Bip sonores   ");
            if (digitalRead(ButtonSelect) == HIGH) // Boutons Select
            {
              tone(Buzzer, FreqBipSonores, 300);
              ConfigBip();
            }
            delay(DelayBP);
            break;
        }
      
    //  }//fin while
      
    }
    avatar
    burnout'
    vis rouillée
    vis rouillée

    Messages : 30
    Date d'inscription : 06/04/2015
    Age : 25
    Localisation : Le Mans

    Re: Tuto ciblerie électronique

    Message par burnout' le Jeu 14 Juin - 23:10

    Bonjour,

    Kawadarze, avant toute chose je tient à préciser que les modules NRF24L01+ fonctionnent bien avec une tension de 3.3V et non pas 5V.

    Concernant ton problème, tu as configuré le module NRF24L01+ sur les pins 7 et 8 grâce à ligne :

    Code:
    RF24 radio(7, 8);

    Mais cette configuration entre en conflit avec d'autres déclaration dans le code:

    • Pour la base maître :

    La sortie 7 est déjà déclarée pour l'utilisation du buzzer (ligne 18 de ton code):
    Code:
    int Buzzer = 7;


    • Pour la base esclave:

    La sortie 7 est déjà déclarée pour l’utilisation de la LED de la cible 5 (ligne 24 de ton code):
    Code:
    int LEDCible5 = 7;

    La sortie 7 de tes deux arduino est utilisée deux fois et cela pose un conflit de configuration.

    Pour résoudre le problème, supprime l'une des deux déclaration. Donc soit tu déplace le buzzer et la LED sur d'autres pins, soit tu déplace les modules NRF24L01+ sur une autre pin.

    Bon courage pour la suite,
    Burnout'.
    avatar
    Kawadarze

    Messages : 10
    Date d'inscription : 13/05/2018

    Re: Tuto ciblerie électronique

    Message par Kawadarze le Ven 15 Juin - 18:12

    Merci Burnout'!

    concernant l'alimentation, j'y ai mis les régulateur 5v-3.3v

    et pour ce qui est des codes, je fait ça de suite, je vous direz ce qu'il en est ^^

    Merci encore d'avoir pris le temps de lire me codes (qui sont les tiens au final ><)
    avatar
    burnout'
    vis rouillée
    vis rouillée

    Messages : 30
    Date d'inscription : 06/04/2015
    Age : 25
    Localisation : Le Mans

    Re: Tuto ciblerie électronique

    Message par burnout' le Mer 20 Juin - 10:26

    Je dirais plus que ce sont "Nos codes", puisque nous les partageons et participons tous à leur modification/amélioration. Smile

    Bon courage pour la suite.

    jeremyjaz

    Messages : 3
    Date d'inscription : 25/06/2018

    Re: Tuto ciblerie électronique

    Message par jeremyjaz le Lun 25 Juin - 8:44

    Bonjour à tous,  Smile

    Je trouve votre tuto extra et super complet.
    Je me suis donné comme objectif cette été de réaliser ma ciblerie électronique avec 8 Cibles (si possible)

    Je voudrais savoir si avec le Arduino Nano avec liaison Wireless il y avais possibilité d'ajoutée sur chaque cibles un bloc de plusieurs led pour qu’au moment où l'on doit engager telle ou telle cible, celle-ci s'allume, puis s’éteint une foi touché.
    Un timer via Afficheur 7 segment sera installer en plus sur le boitier maitre.

    D’après vous cela est-il possible avec le Nano ? si pas plus judicieux de passer sur le mega ?
    Y’a-t-il de grande perte de réactivité si je mets l’ensemble en Wireless ?  

    Merci d’avance
    avatar
    Krispies
    Admin

    Messages : 3880
    Date d'inscription : 16/08/2009
    Age : 51
    Localisation : VERS-Pont du gard

    Re: Tuto ciblerie électronique

    Message par Krispies le Lun 25 Juin - 9:38

    Avant d'avoir tes réponses , passes par la rubrique présentation, c'est la rêgle sur le forum, merci..


    jeremyjaz

    Messages : 3
    Date d'inscription : 25/06/2018

    Re: Tuto ciblerie électronique

    Message par jeremyjaz le Lun 25 Juin - 11:42

    Mes excuse,Embarassed
    Chose faite
    avatar
    naedioba
    vis rouillée
    vis rouillée

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

    Re: Tuto ciblerie électronique

    Message par naedioba le Jeu 16 Aoû - 0:22

    Bonjour à tous,
    Encore une fois, merci à Naudnaud et à Krispies.
    Je vous présente ici une nouvelle version de la ciblerie électronique avec plusieurs options en plus.
    Cliquez sur ce lien :

    regus06
    vis rouillée
    vis rouillée

    Messages : 37
    Date d'inscription : 24/09/2015
    Age : 52
    Localisation : NICE

    Re: Tuto ciblerie électronique

    Message par regus06 le Jeu 16 Aoû - 20:19

    Un vrai travail d'orfèvre et de programmation même avec du RFID.

    Du projet de base aux différents avancements, il n'y a pas de limites.

    Chapeau bas à tous pour votre ingéniosité et partage.
    avatar
    Krispies
    Admin

    Messages : 3880
    Date d'inscription : 16/08/2009
    Age : 51
    Localisation : VERS-Pont du gard

    Re: Tuto ciblerie électronique

    Message par Krispies le Sam 18 Aoû - 22:20

    En effet une sacrée progression depuis les premiers prototypes, du beau travail.. J'aime bien le système de protection par carte , pas obligatoire mais tellement pro!!Bravo.. cheers

    avatar
    naedioba
    vis rouillée
    vis rouillée

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

    Merci Krispies

    Message par naedioba le Dim 19 Aoû - 3:41

    Merci Krispies,
    Tout le mérite vous revient toi et Naudnaud pour avoir initié le projet. approuved

    regus06
    vis rouillée
    vis rouillée

    Messages : 37
    Date d'inscription : 24/09/2015
    Age : 52
    Localisation : NICE

    Re: Tuto ciblerie électronique

    Message par regus06 le Sam 25 Aoû - 16:21

    Bonjour à tous,

    Ayant réussi à faire la ciblerie qui fonctionne parfaitement avec des arduinos nano, je m'aperçois que selon où sont placées les cibles la led n'éclaire pas assez.

    Existe t'il une astuce pour raccorder des leds type guirlande 12 volts (par 3 en coupant le ruban) pour les faire fonctionner avec un arduino Nano.

    J'avoue être une quiche en électronique. Un grand merci à vous.

    Régis.
    avatar
    burnout'
    vis rouillée
    vis rouillée

    Messages : 30
    Date d'inscription : 06/04/2015
    Age : 25
    Localisation : Le Mans

    Re: Tuto ciblerie électronique

    Message par burnout' le Sam 25 Aoû - 18:17

    Salut regus06,

    Tu as deux solutions :

    - utiliser un relai 12V
    - utiliser un transistor

    Dans les deux cas il te faudra quand même une source de tension 12V.

    Le relai est super simple a mettre en pratique, mais il prend un peu plus de place.

    Le transistor quand à lui a vraiment une taille réduite mais nécessite un peu plus de connaissances et implique aussi des calculs d'intensité et de résistances.

    C'est peu être un peu flou, mais je ne voulais pas trop entrer dans les détails, on trouve des montages bien expliqué sur Internet.

    Burnout'.

    regus06
    vis rouillée
    vis rouillée

    Messages : 37
    Date d'inscription : 24/09/2015
    Age : 52
    Localisation : NICE

    Re: Tuto ciblerie électronique

    Message par regus06 le Sam 25 Aoû - 20:27

    Bonsoir Burnout,

    Cela fait toujours plaisir de te lire. J'ai regardé les schémas et au vu de la place je vais tenter d'opter pour des transistors.

    Donc étant néophyte, j'ai vu un montage avec des transistors IRF520N et si je ne me trompe pas le plus 12 volts au + du bandeau led.

    Depuis la sortie 5 volts de l'arduino Nano on mets une résistance 1 kiloohm sur la première patte (posé à plat tout à gauche).

    Sur celle du milieu ont la soude à la couleur désirée du bandeau led.

    Et le Ground de l'arduino sur la troisième patte (celle de droite).

    Ayant peur de me tromper, ai je bien interprété la chose ?

    Avec mes remerciements.

    Contenu sponsorisé

    Re: Tuto ciblerie électronique

    Message par Contenu sponsorisé


      La date/heure actuelle est Ven 21 Sep - 16:51