Airsoft Krispies

Bonjour à tous et bienvenue


    Tuto ciblerie électronique

    Partagez
    avatar
    Bidou914
    vis rouillée
    vis rouillée

    Messages : 39
    Date d'inscription : 12/06/2015
    Age : 28
    Localisation : Essonne

    Re: Tuto ciblerie électronique

    Message par Bidou914 le Mer 10 Mai - 16:17

    Pour ma part j'ai essayé pour un autre projet d'utiliser des émetteurs récepteurs NRF24L01 (wifi si je ne dis pas de bêtise) pour quelques € la pièce ou la paire. La liaison fonctionnait très bien entre plusieurs carte dans un programme simple mais dès que j'ai essayé avec un programme plus compliqué la liaison semblait coupée au bout d'un moment... Alors est-ce que ça venait de mon programme ? de mes nano qui ne fournisse pas assez de courant aussi longtemps ? J'ai pas eu le temps de m'y pencher plus longuement mais c'est peut être à voir sachant que le nombre est quand même limitée (8 ou 9 de mémoire mais là aussi je peux dire des bêtises je ne suis pas certain)
    avatar
    Naudnaud
    ecrou argent
    ecrou argent

    Messages : 401
    Date d'inscription : 30/08/2011
    Age : 27
    Localisation : Metabief

    Re: Tuto ciblerie électronique

    Message par Naudnaud le Mer 10 Mai - 19:15

    Hello !!

    Le système de cible individuelle est envisageable, mais comme la dit Krispies: ça peut revenir assez chère.

    Pour un système à 9 cibles:
    9 Disque metal
    9 Arduino nano (ou Attiny85)
    9 Systeme RF (APC220, ou autre)
    9 LED bicolor
    9 Pizeo avec résistances
    9 buzzer
    9 boutons on/off
    9 système d'alimentation (batterie, piles... )

    Après ça reste faisable, le code ne sera pas beaucoup plus complexe que pour la version full câblé.



    avatar
    burnout'

    Messages : 16
    Date d'inscription : 06/04/2015
    Age : 23
    Localisation : Le Mans

    Re: Tuto ciblerie électronique

    Message par burnout' le Mer 10 Mai - 20:30

    Salut à tous,

    Je suis aussi en train de fabriquer mon ensemble de cibles.

    Personnellement j'ai opté pour la version base maître + base esclave.
    Les deux dialogues avec des modules sans fils NRF24L01+. (plus fastidieux à mettre en place mais pas impossible)

    Petit détail :
    Les modules NRF24L01 ne fonctionnent pas en wifi, mais avec un protocole de communication propriétaire.
    En revanche ils utilisent les mêmes fréquence que le Wifi (2.4 GHz)


    Côté base esclave j'ai gardé le principe des cibles connectées en filaires.
    Je suis en train de tester l'intégration d'une LED dans chaque cible, ça avance doucement.

    Il me reste encore du code à écrire, je vous tiendrais au courant quand j'aurais terminé.

    A bientôt tout le monde.
    avatar
    naedioba
    vis rouillée
    vis rouillée

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

    Re: Tuto ciblerie électronique

    Message par naedioba le Jeu 11 Mai - 1:32

    Bonsoir à tous,
    J’ai pu réaliser le boitier maître en prenant le modèle de Krispies. J’attends de recevoir les piezo commandés chez dx.com pour faire le boitier esclave et voir ce que ça va donner. Voici les premières images, avec un clin d’œil à Krispies et Naudnaud. Le design n’est pas au top, mais ça marche quand même.  Very Happy Very Happy Very Happy





    A très bientôt !
    avatar
    Krispies
    Admin

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

    Re: Tuto ciblerie électronique

    Message par Krispies le Jeu 11 Mai - 8:50

    En fait c'est plutôt merci Naudnaud car c'est son programme!!


    _________________

    http://airsoft-krisp.e-monsite.com/
    http://www.facebook.com/pages/Krispies-Team/470577369635210
    avatar
    naedioba
    vis rouillée
    vis rouillée

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

    Re: Tuto ciblerie électronique

    Message par naedioba le Jeu 11 Mai - 9:32

    Oui il est dedans. J'ai juste mis ça par ordre alphabétique.
    Best regards.
    avatar
    Bidou914
    vis rouillée
    vis rouillée

    Messages : 39
    Date d'inscription : 12/06/2015
    Age : 28
    Localisation : Essonne

    Re: Tuto ciblerie électronique

    Message par Bidou914 le Jeu 11 Mai - 11:27

    Merci burnout' pour la précision ne maitrisant pas parfaitement le sujet je savais bien que je risquais de dire une bêtise Laughing par contre est-ce que tu pourrais partager ton code car je suis bien intéresser de voir comment tu assure la communication avec les modules NRF24L01
    avatar
    burnout'

    Messages : 16
    Date d'inscription : 06/04/2015
    Age : 23
    Localisation : Le Mans

    Re: Tuto ciblerie électronique

    Message par burnout' le Jeu 11 Mai - 18:53

    Bien sûr que je partagerais mon code. Smile
    Pour l'instant j'essaie d'optimiser, mais c'est pas simple car les modules fonctionnent soit en émetteur soit en receveurs... Et le mode ce change directement dans le code. Donc quand on veut changer d'émetteur (base maître ou esclave) ça devient vite un casse tête car l'autre module doit être en receveur..

    Enfin bref, j'enverrai le code dès que c'est prêt Smile En attendant si ça vous intéresse je peux mettre mon code de test? (Pas de jeux)

    À bientôt.
    Burnout'

    avatar
    Bidou914
    vis rouillée
    vis rouillée

    Messages : 39
    Date d'inscription : 12/06/2015
    Age : 28
    Localisation : Essonne

    Re: Tuto ciblerie électronique

    Message par Bidou914 le Jeu 11 Mai - 19:47

    Si ton code de test contient les lignes de communications des modules moi ça m'intéresse Very Happy
    avatar
    burnout'

    Messages : 16
    Date d'inscription : 06/04/2015
    Age : 23
    Localisation : Le Mans

    Re: Tuto ciblerie électronique

    Message par burnout' le Jeu 11 Mai - 20:07

    Voilà mon code de test : A télécharger ici

    Fait bien attention au numéros de PIN, j'en ai surement modifiés quelques uns.

    Comme précisé il n'y à pas de jeux, juste du test de communication et détection de cibles.

    Attention dans la partie base esclave j'ai rajouté des PIN pour les LEDs des cibles, vérifie que tu n'as rien de branché sur ces sorties.

    Smile
    avatar
    Bidou914
    vis rouillée
    vis rouillée

    Messages : 39
    Date d'inscription : 12/06/2015
    Age : 28
    Localisation : Essonne

    Re: Tuto ciblerie électronique

    Message par Bidou914 le Jeu 11 Mai - 20:58

    Super merci beaucoup je vais regarder ça attentivement
    avatar
    naedioba
    vis rouillée
    vis rouillée

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

    Ciblerie electronique

    Message par naedioba le Ven 12 Mai - 16:51

    Bonjour Naudnaud,
    Pour la cible multizone, le boitier maître s'allume correctement, mais affiche les différents menus continuellement avec des bips.
    En regardant le code du boitier esclave, j'ai vu que 9 cibles on été définis (cible0, cible1... jusqu’à cible8). Est-ce que cela ne serait pas la cause du problème vu que il n'y que 6 cibles qui sont branches?

    All the best.
    avatar
    Krispies
    Admin

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

    Re: Tuto ciblerie électronique

    Message par Krispies le Ven 12 Mai - 18:35

    Si tu as chargé ce prog:
    https://www.dropbox.com/s/ed49xc5yzc7danb/Prog%208cibles.rar?dl=0

    il te faut brancher 8 cibles..


    _________________

    http://airsoft-krisp.e-monsite.com/
    http://www.facebook.com/pages/Krispies-Team/470577369635210
    avatar
    Naudnaud
    ecrou argent
    ecrou argent

    Messages : 401
    Date d'inscription : 30/08/2011
    Age : 27
    Localisation : Metabief

    Re: Tuto ciblerie électronique

    Message par Naudnaud le Ven 12 Mai - 21:15

    Si les menu défile tout seul, c'est que tes boutons sont mal câblés.

    Le problème des 9 cibles programme alors que y'a 6 cibles câbles viendras après, lors des jeux.
    avatar
    naedioba
    vis rouillée
    vis rouillée

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

    Re: Tuto ciblerie électronique

    Message par naedioba le Sam 13 Mai - 16:14

    Bonjour à tous.
    Quelqu'un aurait-il le code des boîtiers maître et esclave de la ciblerie à 6 cibles développée par Naudnaud et Krispies?
    Merci d'avance
    avatar
    Naudnaud
    ecrou argent
    ecrou argent

    Messages : 401
    Date d'inscription : 30/08/2011
    Age : 27
    Localisation : Metabief

    Re: Tuto ciblerie électronique

    Message par Naudnaud le Dim 14 Mai - 10:33

    Coucou

    Tout est téléchargeable sur le deuxième poste du sujet.
    avatar
    naedioba
    vis rouillée
    vis rouillée

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

    Re: Tuto ciblerie électronique

    Message par naedioba le Lun 15 Mai - 4:30

    Merci Naudnaud pour la précision.
    Finalement, la base maître s'allume et affiche correctement les menus. J'arrive même à sélectionner un mode jeu, sauf que après le décompte, ça dit que le jeu a commencé avec le bip sonore, mais la base esclave ne réagit pas (la LED rouge reste allumée et quand je tape sur les piezos ça ne réagit pas). Est-ce que les 2 bases communiquent via les modules wifi? Comment je peux le vérifier?

    Merci encore mille fois.
    avatar
    Krispies
    Admin

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

    Re: Tuto ciblerie électronique

    Message par Krispies le Lun 15 Mai - 8:34

    Eventuellement si tu veux etre certain que ta base esclave fonctionne bien tu peux remplacer les modules wifi par un petit morceau de cable, au moins tu sera sur qu'au niveau base c'est bon!!


    _________________

    http://airsoft-krisp.e-monsite.com/
    http://www.facebook.com/pages/Krispies-Team/470577369635210
    avatar
    naedioba
    vis rouillée
    vis rouillée

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

    Re: Tuto ciblerie électronique

    Message par naedioba le Mer 17 Mai - 2:17

    Bonsoir Krispies
    J'ai fait comme tu as dit avec le câble, et ça a marché. Ce qui est curieux c'est que quand j'ai enlevé le câble et remis les modules wifi, ça a continué a marcher.
    Peut être une petite chose a revoir c'est le retour au MENU après une partie. Quand on fait le réglage des points, après la cible 6 çà retourne directement au MENU. Mais pour les autres cas ça affiche en boucle "fin du jeu; points", le temps et les zones touchées. A chaque fois il faut appuyer sur le bouton RESET pour redémarrer.

    Mais c'est déjà extraordinaire comme application !

    Merci infiniment !
    avatar
    naedioba
    vis rouillée
    vis rouillée

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

    Re: Tuto ciblerie électronique

    Message par naedioba le Sam 20 Mai - 20:23

    Bonsoir,
    Je n’ai pas bien compris pourquoi il n’y avait pas de retour au menu directement après les parties, mais j’ai finalement pu résoudre mon problème en insérant de petits bouts de codes dans les différents croquis (là où j’ai écrit « ajoute par Naedioba »). Ce n’est pas très professionnelle, mais ça marche quand même. J’envoie les codes pour que vous puissiez y jeter un coup d’œil et, peut-être, me donner une solution beaucoup plus pro.
    J’ai mis les codes dans ce message parce que je n’arrive pas à joindre les fichiers.
    Encore mille mercis à tous.

    ================================================

    // Pour le mode IPSC

    void PreIPSC() {

    //Impression info tires sur lcd
    lcd.clear();
    lcd.setCursor(3,0);
    lcd.print("Quand pret");
    lcd.setCursor(3,1);
    lcd.print("Pressez OK");

    delay(1000);

    while(1) {

    // Demarrage compte a rebours avant depart ipsc
    if(digitalRead(ButtonSelect) == HIGH) // Boutons Select
    {tone(12, 800, 300);
    StartIPSC();} //Apelle menu timer_pret_partie

    }//fin while
    } //fin PreIPSC

    /*----------------------------------------------------------------------------------------- */

    void StartIPSC() {

    //Affichage
    lcd.clear();
    lcd.setCursor(2,0);
    lcd.print("Depart dans:");
    lcd.setCursor(9,1);
    lcd.print("sec");

    //Tempo Demarrage random
    randomSeed( millis() );
    PreCounterseconde = random(2, Cool;

    while(1) {

    //Affiche seconde
    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); }

    //tempo seconde
    delay(1000);
    PreCounterseconde--;

    //Fin decompte, appelle timer jeux
    if (PreCounterseconde == 0)
    { Serial.println('S'); //Envoie S pour demarrer esclave
    IPSCGame(); } //Apelle menu Timerjeux

    }//fin while
    }// fin pretimer

    /*----------------------------------------------------------------------------------------- */

    void IPSCGame() {

    //Buzzer et debut jeux
    tone(12, 1000, 1000);

    //Impression info tires sur lcd
    lcd.clear();
    lcd.setCursor(6,0);
    lcd.print("IPSC");

    TempsInit = (millis());


    //jeux en cours
    while(1) {

    if (Serial.available()>0) { // Si des données sont disponibles
    received = Serial.read(); // On les récupère


    //Cibles 1
    if(received == 'A') // Recois A depuis Esclave = Cible 1
    {tone(12, 1000, 500);
    TempsReel = (millis() - TempsInit );
    Serial.println('F');
    finIPSC(); }

    else
    if(received == 'B'||'C'||'D'||'E'||'F') // Recois A depuis Esclave = Cible 1
    {tone(12, 700, 500);}


    }//fin if

    TempsReel = (millis() - TempsInit );

    //Calcule affichage min/sec.milli
    TempsSec = (TempsReel /1000)%60;
    TempsMil = (TempsReel %1000)/10;
    TempsMin = (TempsReel /1000)/60;


    //Ponctuation chrono
    lcd.setCursor(0,1);
    lcd.print("Tps:");
    lcd.setCursor(13,1);
    lcd.print("sec");
    lcd.setCursor(7,1);
    lcd.print(":");
    lcd.setCursor(10,1);
    lcd.print(".");

    //Affichage + de 10
    if (TempsMin >= 10 ) {
    lcd.setCursor(5,1);
    lcd.print(TempsMin, DEC); }

    if (TempsSec >= 10 ) {
    lcd.setCursor(8,1);
    lcd.print(TempsSec, DEC); }

    if (TempsMil >= 10 ) {
    lcd.setCursor(11,1);
    lcd.print(TempsMil, DEC); }


    //Affichage - de 10
    if (TempsMin < 10 ) {
    lcd.setCursor(5,1);
    lcd.print("0");
    lcd.setCursor(6,1);
    lcd.print(TempsMin, DEC); }

    if (TempsSec < 10 ) {
    lcd.setCursor(8,1);
    lcd.print("0");
    lcd.setCursor(9,1);
    lcd.print(TempsSec, DEC); }

    if (TempsMil < 10 ) {
    lcd.setCursor(11,1);
    lcd.print("0");
    lcd.setCursor(12,1);
    lcd.print(TempsMil, DEC); }

    } //fin while
    } //fin Timergame

    /*----------------------------------------------------------------------------------------- */

    void finIPSC() {

    lcd.clear();
    lcd.setCursor(3,0);
    lcd.print("Fin du jeu");
    tone(12, 100, 100);
    delay(100);
    tone(12, 1000, 100);
    delay(100);
    tone(12, 5000, 100);

    //Calcule affichage min/sec.milli
    TempsSec = (TempsReel /1000)%60;
    TempsMil = (TempsReel %1000)/10;
    TempsMin = (TempsReel /1000)/60;


    while (1) {

    lcd.clear();
    lcd.setCursor(3,0);
    lcd.print("Fin du jeu");
    lcd.setCursor(0,1);
    lcd.print("Tps:");
    lcd.setCursor(13,1);

    //Ponctuation chrono
    lcd.print("sec");
    lcd.setCursor(7,1);
    lcd.print(":");
    lcd.setCursor(10,1);
    lcd.print(".");

    //Affichage + de 10
    if (TempsMin >= 10 ) {
    lcd.setCursor(5,1);
    lcd.print(TempsMin, DEC); }

    if (TempsSec >= 10 ) {
    lcd.setCursor(8,1);
    lcd.print(TempsSec, DEC); }

    if (TempsMil >= 10 ) {
    lcd.setCursor(11,1);
    lcd.print(TempsMil, DEC); }


    //Affichage - de 10
    if (TempsMin < 10 ) {
    lcd.setCursor(5,1);
    lcd.print("0");
    lcd.setCursor(6,1);
    lcd.print(TempsMin, DEC); }

    if (TempsSec < 10 ) {
    lcd.setCursor(8,1);
    lcd.print("0");
    lcd.setCursor(9,1);
    lcd.print(TempsSec, DEC); }

    if (TempsMil < 10 ) {
    lcd.setCursor(11,1);
    lcd.print("0");
    lcd.setCursor(12,1);
    lcd.print(TempsMil, DEC); }

    delay(2500);

    Menu(); // Ajoute par Naedioba

    }//fin while


    }//fin fingame


    =========================================================
    // Pour le mode Random Games
    void PreRandom() {

    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Nombre de tirs ");
    delay(300);


    // while pour incrementer ou decrementer Counterminute, boutons haut ou bas
    while(1)
    {

    //Incrementation de Counterminute
    if(digitalRead(ButtonHaut) == HIGH) // Boutons Haut
    {tone(12, 800, 300);
    Nbtires++;
    delay(DelayBP);}

    //Decrementation de Counterminute
    if(digitalRead(ButtonBas) == HIGH) // Boutons Bas
    {tone(12, 800, 300);
    Nbtires --;
    delay(DelayBP); }

    // Demarrage compte a rebours avant depart partie
    if(digitalRead(ButtonSelect) == HIGH) // Boutons Select
    {tone(12, 800, 300);
    TimerRandom();} //Apelle menu timer_pret_partie


    //Anti valeur negative
    if (Nbtires < 1 ) {Nbtires = 1;}

    // Ecriture valeur sur lcd
    //Affichage + de 10
    if (Nbtires >= 10 ) {
    lcd.setCursor(6,1);
    lcd.print(Nbtires , DEC); }

    //Affichage + de 10
    if (Nbtires < 10 ) {
    lcd.setCursor(6,1);
    lcd.print("0");
    lcd.setCursor(7,1);
    lcd.print(Nbtires , DEC); }


    } // fin while
    }//random

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

    void TimerRandom() {

    //Affichage
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Depart dans ");
    lcd.setCursor(9,1);
    lcd.print("sec");

    //Tempo Demarrage random
    randomSeed( millis() );
    PreCounterseconde = random(2, Cool;

    while(1) {

    //Affiche seconde
    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); }


    //tempo seconde
    delay(1000);
    PreCounterseconde--;


    //Fin decompte, appelle timer jeux
    if (PreCounterseconde == 0)
    { Serial.println('S');
    tone(12, 1000, 1000); //Envoie S pour demarrer esclave
    GOGames(); } //Apelle menu Timerjeux



    }//fin while
    }// fin preRandom

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

    void GOGames() {

    //Buzzer et debut jeux
    lcd.clear();
    lcd.setCursor(8,0);
    lcd.print("GO");
    tone(12, 1000, 1000);
    TempsInit = (millis());
    Random(); //Apelle menu RandomGames
    }

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

    void Random() {

    reset10:
    randomSeed( millis() );
    CibleRandom = random(1, 7);


    //Fin des tires
    if (NbtiresReel == Nbtires)
    {TempsReel = (millis() + TempsPenal - TempsInit);
    Serial.println('F');
    delay(500);
    finRandom(); }

    if (CibleRandom == 1) {

    reset1:

    if (Serial.available()>0) { // Si des données sont disponibles
    Poubelle = Serial.read(); } // On les récupère

    //Impression info tires sur lcd
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Tirez sur ");
    lcd.setCursor(0,1);
    lcd.print(" Cible 1 ");

    while (1) {
    if (digitalRead(ButtonSelect) == HIGH)
    {TempsReel = (millis() + TempsPenal - TempsInit);
    Serial.println('F');
    delay(500);
    finRandom(); }

    if (Serial.available()>0) { // Si des données sont disponibles
    received = Serial.read(); // On les récupère

    if(received == 'A') // Recois A depuis Esclave = Cible 1
    {tone(12, 1000, 500);
    NbtiresReel++;
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Cible 1 ");
    lcd.setCursor(0,1);
    lcd.print(" OK ");
    Zone1++;
    if (Serial.available()>0) { // Si des données sont disponibles
    Poubelle = Serial.read(); } // On les récupère
    delay(300);
    goto reset10; }

    if(received ='B'||'C'||'D'||'E'||'F') // Recois A depuis Esclave = Cible 1
    {tone(12, 100, 1000);
    TempsPenal = (TempsPenal + 5000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Cible 1 ");
    lcd.setCursor(0,1);
    lcd.print(" RATEE ");
    if (Serial.available()>0) { // Si des données sont disponibles
    Poubelle = Serial.read(); } // On les récupère
    delay(300);
    goto reset1; ; }

    } //fin while
    }
    }

    if (CibleRandom == 2) {

    reset2:

    if (Serial.available()>0) { // Si des données sont disponibles
    Poubelle = Serial.read(); } // On les récupère

    //Impression info tires sur lcd
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Tirez sur ");
    lcd.setCursor(0,1);
    lcd.print(" Cible 2 ");

    while (1) {
    if (digitalRead(ButtonSelect) == HIGH)
    {TempsReel = (millis() + TempsPenal - TempsInit);
    Serial.println('F');
    delay(500);
    finRandom(); }

    if (Serial.available()>0) { // Si des données sont disponibles
    received = Serial.read(); // On les récupère

    if(received == 'B') // Recois A depuis Esclave = Cible 1
    {tone(12, 1000, 500);
    NbtiresReel++;
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Cible 2 ");
    lcd.setCursor(0,1);
    lcd.print(" OK ");
    Zone2++;
    if (Serial.available()>0) { // Si des données sont disponibles
    Poubelle = Serial.read(); } // On les récupère
    delay(300);
    goto reset10;}

    if(received ='A'||'C'||'D'||'E'||'F') // Recois A depuis Esclave = Cible 1
    {tone(12, 100, 1000);
    TempsPenal = (TempsPenal + 5000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Cible 2 ");
    lcd.setCursor(0,1);
    lcd.print(" RATEE ");
    if (Serial.available()>0) { // Si des données sont disponibles
    Poubelle = Serial.read(); } // On les récupère
    delay(300);
    goto reset2; ; }

    } //fin while
    }
    }


    if (CibleRandom == 3) {

    reset3:

    if (Serial.available()>0) { // Si des données sont disponibles
    Poubelle = Serial.read(); } // On les récupère

    //Impression info tires sur lcd
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Tirez sur ");
    lcd.setCursor(0,1);
    lcd.print(" Cible 3 ");

    while (1) {
    if (digitalRead(ButtonSelect) == HIGH)
    {TempsReel = (millis() + TempsPenal - TempsInit);
    Serial.println('F');
    delay(500);
    finRandom(); }

    if (Serial.available()>0) { // Si des données sont disponibles
    received = Serial.read(); // On les récupère

    if(received == 'C') // Recois A depuis Esclave = Cible 1
    {tone(12, 1000, 500);
    NbtiresReel++;
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Cible 3 ");
    lcd.setCursor(0,1);
    lcd.print(" OK ");
    Zone3++;
    if (Serial.available()>0) { // Si des données sont disponibles
    Poubelle = Serial.read(); } // On les récupère
    delay(300);
    goto reset10;}

    if(received ='B'||'A'||'D'||'E'||'F') // Recois A depuis Esclave = Cible 1
    {tone(12, 100, 1000);
    TempsPenal = (TempsPenal + 5000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Cible 3 ");
    lcd.setCursor(0,1);
    lcd.print(" RATEE ");
    if (Serial.available()>0) { // Si des données sont disponibles
    Poubelle = Serial.read(); } // On les récupère
    delay(300);
    goto reset3; ; }

    } //fin while
    }
    }

    if (CibleRandom == 4) {

    reset4:

    if (Serial.available()>0) { // Si des données sont disponibles
    Poubelle = Serial.read(); } // On les récupère

    //Impression info tires sur lcd
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Tirez sur ");
    lcd.setCursor(0,1);
    lcd.print(" Cible 4 ");

    while (1) {
    if (digitalRead(ButtonSelect) == HIGH)
    {TempsReel = (millis() + TempsPenal - TempsInit);
    Serial.println('F');
    delay(500);
    finRandom(); }

    if (Serial.available()>0) { // Si des données sont disponibles
    received = Serial.read(); // On les récupère

    if(received == 'D') // Recois A depuis Esclave = Cible 1
    {tone(12, 1000, 500);
    NbtiresReel++;
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Cible 4 ");
    lcd.setCursor(0,1);
    lcd.print(" OK ");
    Zone4++;
    if (Serial.available()>0) { // Si des données sont disponibles
    Poubelle = Serial.read(); } // On les récupère
    delay(300);
    goto reset10;}

    if(received ='B'||'C'||'A'||'E'||'F') // Recois A depuis Esclave = Cible 1
    {tone(12, 100, 1000);
    TempsPenal = (TempsPenal + 5000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Cible 4 ");
    lcd.setCursor(0,1);
    lcd.print(" RATEE ");
    if (Serial.available()>0) { // Si des données sont disponibles
    Poubelle = Serial.read(); } // On les récupère
    delay(300);
    goto reset4; ; }

    } //fin while
    }
    }

    if (CibleRandom == 5) {

    reset5:

    if (Serial.available()>0) { // Si des données sont disponibles
    Poubelle = Serial.read(); } // On les récupère

    //Impression info tires sur lcd
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Tirez sur ");
    lcd.setCursor(0,1);
    lcd.print(" Cible 5 ");

    while (1) {

    if (digitalRead(ButtonSelect) == HIGH)
    {TempsReel = (millis() + TempsPenal - TempsInit);
    Serial.println('F');
    delay(500);
    finRandom(); }

    if (Serial.available()>0) { // Si des données sont disponibles
    received = Serial.read(); // On les récupère

    if(received == 'E') // Recois A depuis Esclave = Cible 1
    {tone(12, 1000, 500);
    NbtiresReel++;
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Cible 5 ");
    lcd.setCursor(0,1);
    lcd.print(" OK ");
    Zone5++;
    if (Serial.available()>0) { // Si des données sont disponibles
    Poubelle = Serial.read(); } // On les récupère
    delay(300);
    goto reset10;}

    if(received ='B'||'C'||'D'||'A'||'F') // Recois A depuis Esclave = Cible 1
    {tone(12, 100, 1000);
    TempsPenal = (TempsPenal + 5000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Cible 5 ");
    lcd.setCursor(0,1);
    lcd.print(" RATEE ");
    if (Serial.available()>0) { // Si des données sont disponibles
    Poubelle = Serial.read(); } // On les récupère
    delay(300);
    goto reset5; ; }

    } //fin while
    }
    }
    if (CibleRandom == 6) {

    reset6:

    if (Serial.available()>0) { // Si des données sont disponibles
    Poubelle = Serial.read(); } // On les récupère

    //Impression info tires sur lcd
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Tirez sur ");
    lcd.setCursor(0,1);
    lcd.print(" Cible 6 ");

    while (1) {

    if (digitalRead(ButtonSelect) == HIGH)
    {TempsReel = (millis() + TempsPenal - TempsInit);
    Serial.println('F');
    delay(500);
    finRandom(); }

    if (Serial.available()>0) { // Si des données sont disponibles
    received = Serial.read(); // On les récupère

    if(received == 'F') // Recois A depuis Esclave = Cible 1
    {tone(12, 1000, 500);
    NbtiresReel++;
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Cible 6 ");
    lcd.setCursor(0,1);
    lcd.print(" OK ");
    Zone6++;
    if (Serial.available()>0) { // Si des données sont disponibles
    Poubelle = Serial.read(); } // On les récupère
    delay(300);
    goto reset10;}

    if(received ='B'||'C'||'D'||'E'||'A') // Recois A depuis Esclave = Cible 1
    {tone(12, 100, 1000);
    TempsPenal = (TempsPenal + 5000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Cible 6 ");
    lcd.setCursor(0,1);
    lcd.print(" RATEE ");
    if (Serial.available()>0) { // Si des données sont disponibles
    Poubelle = Serial.read(); } // On les récupère
    delay(300);
    goto reset6; ; }


    } //fin while
    }
    }
    }

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

    void finRandom() {

    lcd.clear();
    lcd.setCursor(3,0);
    lcd.print(" Fin du jeu ");
    delay(100);
    tone(12, 100, 200);
    delay(100);
    tone(12, 1000, 200);
    delay(100);
    tone(12, 5000, 200);

    //Calcule affichage min/sec.milli
    TempsSec = (TempsReel /1000)%60;
    TempsMil = (TempsReel %1000)/10;
    TempsMin = (TempsReel /1000)/60;


    while (1) {

    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Fin du jeu ");
    lcd.setCursor(0,1);
    lcd.print("Tps:");
    lcd.setCursor(13,1);

    //Ponctuation chrono
    lcd.print("sec");
    lcd.setCursor(7,1);
    lcd.print(":");
    lcd.setCursor(10,1);
    lcd.print(".");

    //Affichage + de 10
    if (TempsMin >= 10 ) {
    lcd.setCursor(5,1);
    lcd.print(TempsMin, DEC); }

    if (TempsSec >= 10 ) {
    lcd.setCursor(8,1);
    lcd.print(TempsSec, DEC); }

    if (TempsMil >= 10 ) {
    lcd.setCursor(11,1);
    lcd.print(TempsMil, DEC); }


    //Affichage - de 10
    if (TempsMin < 10 ) {
    lcd.setCursor(5,1);
    lcd.print("0");
    lcd.setCursor(6,1);
    lcd.print(TempsMin, DEC); }

    if (TempsSec < 10 ) {
    lcd.setCursor(8,1);
    lcd.print("0");
    lcd.setCursor(9,1);
    lcd.print(TempsSec, DEC); }

    if (TempsMil < 10 ) {
    lcd.setCursor(11,1);
    lcd.print("0");
    lcd.setCursor(12,1);
    lcd.print(TempsMil, DEC); }

    delay(2500);
    lcd.clear();

    lcd.setCursor(0,0);//affichage des zones
    lcd.print("Z1:");
    lcd.setCursor(3,0);
    lcd.print(Zone1);
    lcd.setCursor(6,0);
    lcd.print("Z2:");
    lcd.setCursor(9,0);
    lcd.print(Zone2);
    lcd.setCursor(11,0);
    lcd.print("Z3:");
    lcd.setCursor(14,0);
    lcd.print(Zone3);
    lcd.setCursor(0,1);
    lcd.print("Z4:");
    lcd.setCursor(3,1);
    lcd.print(Zone4);
    lcd.setCursor(6,1);
    lcd.print("Z5:");
    lcd.setCursor(9,1);
    lcd.print(Zone5);
    lcd.setCursor(11,1);
    lcd.print("Z6:");
    lcd.setCursor(14,1);
    lcd.print(Zone6);

    delay(5000);

    // debut ajout par Naedioba

    if (NbtiresReel == Nbtires){
    Serial.println('F');
    NbtiresReel = 0;
    TempsInit = 0;
    TempsPenal = 0;
    TempsReel = 0;
    TempsMin = 0;
    TempsSec = 0;
    TempsMil = 0;
    Zone1 = 0;
    Zone2 = 0;
    Zone3 = 0;
    Zone4 = 0;
    Zone5 = 0;
    Zone6 = 0;
    Menu();}

    // fin ajout par Naedioba

    }//fin while


    }//fin PreRandom



    =====================================================================
    // Pour le mode Spped Games

    void PreSpeed() {

    // Ecriture sur lcd
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Nombre de tirs");
    delay(300);

    // while pour incrementer ou decrementer Counterminute, boutons haut ou bas
    while(1)
    {

    //Incrementation de Counterminute
    if(digitalRead(ButtonHaut) == HIGH) // Boutons Haut
    {tone(12, 800, 300);
    Nbtires++;
    delay(DelayBP);}

    //Decrementation de Counterminute
    if(digitalRead(ButtonBas) == HIGH) // Boutons Bas
    {tone(12, 800, 300);
    Nbtires --;
    delay(DelayBP);}

    // Demarrage compte a rebours avant depart partie
    if(digitalRead(ButtonSelect) == HIGH) // Boutons Select
    {tone(12, 800, 300);
    TimerSpeed();} //Apelle menu timer_pret_partie

    //Anti valeur negative
    if (Nbtires < 1 ) {Nbtires = 1;}

    // Ecriture valeur sur lcd
    //Affichage + de 10
    if (Nbtires >= 10 ) {
    lcd.setCursor(6,1);
    lcd.print(Nbtires , DEC); }

    //Affichage + de 10
    if (Nbtires < 10 ) {
    lcd.setCursor(6,1);
    lcd.print("0");
    lcd.setCursor(7,1);
    lcd.print(Nbtires , DEC); }

    } // fin while
    } // fin reglage

    void TimerSpeed() {

    //Affichage
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Depart dans ");
    lcd.setCursor(9,1);
    lcd.print("sec");

    //Tempo Demarrage random
    randomSeed( millis() );
    PreCounterseconde = random(2, Cool;

    while(1) {

    //Affiche seconde
    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); }

    //tempo seconde
    delay(1000);
    PreCounterseconde--;

    //Fin decompte, appelle timer jeux
    if (PreCounterseconde == 0)
    { Serial.println('S'); //Envoie S pour demarrer esclave
    SpeedGame(); } //Apelle menu Timerjeux

    }//fin while
    }// fin pretimer


    void SpeedGame() {

    //Buzzer et debut jeux
    lcd.clear();
    lcd.setCursor(4,0);
    lcd.print("GO");
    tone(12, 1000, 1000);


    //Impression info tires sur lcd
    lcd.clear();
    lcd.setCursor(2,0);
    lcd.print("Points:");
    lcd.setCursor(9,0);
    lcd.print(Point);
    lcd.setCursor(0,1);
    lcd.print("Tir n");
    lcd.setCursor(5,1);
    lcd.print((char)223);
    lcd.setCursor(9,1);
    lcd.print(NbtiresReel);
    lcd.setCursor(11,1);
    lcd.print("/");
    lcd.setCursor(12,1);
    lcd.print(Nbtires);

    TempsInit = (millis());


    //jeux en cours
    while(1) {


    if (digitalRead(ButtonSelect) == HIGH)
    {TempsReel = (millis() - TempsInit ); Serial.println('F'); finSpeedGame(); }

    if (Serial.available()>0) { // Si des données sont disponibles
    received = Serial.read(); // On les récupère


    //Cibles 1
    if(received == 'A') // Recois A depuis Esclave = Cible 1
    {Point = (Point + Cibles1);
    tone(12, 1000, 500);
    NbtiresReel++;
    Zone1++;
    lcd.setCursor(9,0);
    lcd.print(Point);
    lcd.setCursor(9,1);
    lcd.print(NbtiresReel); }

    //Cible 2
    if(received == 'B') // Recois B depuis Esclave = Cible 2
    {Point = (Point + Cibles2);
    tone(12, 1000, 500);
    NbtiresReel++;
    Zone2++;
    lcd.setCursor(9,0);
    lcd.print(Point);
    lcd.setCursor(9,1);
    lcd.print(NbtiresReel); }

    //Cible 3
    if(received == 'C') // Recois C depuis Esclave = Cible 3
    {Point = (Point + Cibles3);
    tone(12, 1000, 500);
    NbtiresReel++;
    Zone3++;
    lcd.setCursor(9,0);
    lcd.print(Point);
    lcd.setCursor(9,1);
    lcd.print(NbtiresReel); }


    //Cible 4
    if(received == 'D') // Recois D depuis Esclave = Cible 4
    {Point = (Point + Cibles4);
    tone(12, 1000, 500);
    NbtiresReel++;
    Zone4++;
    lcd.setCursor(9,0);
    lcd.print(Point);
    lcd.setCursor(9,1);
    lcd.print(NbtiresReel); }

    //Cible 5
    if(received == 'E') // Recois E depuis Esclave = Cible 5
    {Point = (Point + Cibles5);
    tone(12, 1000, 500);
    NbtiresReel++;
    Zone5++;
    lcd.setCursor(9,0);
    lcd.print(Point);
    lcd.setCursor(9,1);
    lcd.print(NbtiresReel); }


    //Cible 6
    if(received == 'F') // Recois F depuis Esclave = Cible 6
    {Point = (Point + Cibles6);
    tone(12, 1000, 500);
    NbtiresReel++;
    Zone6++;
    lcd.setCursor(9,0);
    lcd.print(Point);
    lcd.setCursor(9,1);
    lcd.print(NbtiresReel); }

    //Fin des tires
    if (NbtiresReel == Nbtires)
    {TempsReel = (millis() - TempsInit );
    Serial.println('F');
    finSpeedGame(); }


    } //fin while

    } //fin Timergame
    }


    void finSpeedGame() {

    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Fin du jeu ");
    tone(12, 100, 100);
    delay(100);
    tone(12, 1000, 100);
    delay(100);
    tone(12, 5000, 100);

    //Calcule affichage min/sec.milli
    TempsSec = (TempsReel /1000)%60;
    TempsMil = (TempsReel %1000)/10;
    TempsMin = (TempsReel /1000)/60;


    while (1) {

    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Fin du jeu ");
    lcd.setCursor(8,1);
    lcd.print("points");
    lcd.setCursor(2, 1);
    lcd.print(Point);
    delay(2500);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Fin du jeu ");
    lcd.setCursor(0,1);
    lcd.print("Tps:");
    lcd.setCursor(13,1);

    //Ponctuation chrono
    lcd.print("sec");
    lcd.setCursor(7,1);
    lcd.print(":");
    lcd.setCursor(10,1);
    lcd.print(".");

    //Affichage + de 10
    if (TempsMin >= 10 ) {
    lcd.setCursor(5,1);
    lcd.print(TempsMin, DEC); }

    if (TempsSec >= 10 ) {
    lcd.setCursor(8,1);
    lcd.print(TempsSec, DEC); }

    if (TempsMil >= 10 ) {
    lcd.setCursor(11,1);
    lcd.print(TempsMil, DEC); }


    //Affichage - de 10
    if (TempsMin < 10 ) {
    lcd.setCursor(5,1);
    lcd.print("0");
    lcd.setCursor(6,1);
    lcd.print(TempsMin, DEC); }

    if (TempsSec < 10 ) {
    lcd.setCursor(8,1);
    lcd.print("0");
    lcd.setCursor(9,1);
    lcd.print(TempsSec, DEC); }

    if (TempsMil < 10 ) {
    lcd.setCursor(11,1);
    lcd.print("0");
    lcd.setCursor(12,1);
    lcd.print(TempsMil, DEC); }

    delay(2500);
    lcd.clear();

    lcd.setCursor(0,0);
    lcd.print("Z1:");
    lcd.setCursor(3,0);
    lcd.print(Zone1);
    lcd.setCursor(6,0);
    lcd.print("Z2:");
    lcd.setCursor(9,0);
    lcd.print(Zone2);
    lcd.setCursor(11,0);
    lcd.print("Z3:");
    lcd.setCursor(14,0);
    lcd.print(Zone3);
    lcd.setCursor(0,1);
    lcd.print("Z4:");
    lcd.setCursor(3,1);
    lcd.print(Zone4);
    lcd.setCursor(6,1);
    lcd.print("Z5:");
    lcd.setCursor(9,1);
    lcd.print(Zone5);
    lcd.setCursor(11,1);
    lcd.print("Z6:");
    lcd.setCursor(14,1);
    lcd.print(Zone6);

    delay(5000);

    // debut ajout par Naedioba

    if (NbtiresReel == Nbtires){
    Serial.println('F');
    NbtiresReel = 0;
    Point = 0;
    Zone1 = 0;
    Zone2 = 0;
    Zone3 = 0;
    Zone4 = 0;
    Zone5 = 0;
    Zone6 = 0;
    Menu();}

    // fin ajout par Naedioba

    }//fin while

    }//fin fingame


    =======================================================================
    // Pour le mode Test des cibles

    void TestCible() {

    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Test des Cibles");
    delay(1000);
    Serial.println('S'); //Envoie S pour demarrer esclave


    while (1) {


    if (Serial.available()>0) { // Si des données sont disponibles
    received = Serial.read(); // On les récupère


    //Cibles 1
    if(received == 'A') // Recois A depuis Esclave = Cible 1
    {lcd.setCursor(0,1);
    lcd.print(" Cible 1 OK " );
    tone(12, 200, 300);}

    //Cible 2
    if(received == 'B') // Recois B depuis Esclave = Cible 2
    {lcd.setCursor(0,1);
    lcd.print(" Cible 2 OK " );
    tone(12, 400, 300);}


    //Cible 3
    if(received == 'C') // Recois C depuis Esclave = Cible 3
    {lcd.setCursor(0,1);
    lcd.print(" Cible 3 OK " );
    tone(12, 600, 300);}



    //Cible 4
    if(received == 'D') // Recois D depuis Esclave = Cible 4
    {lcd.setCursor(0,1);
    lcd.print(" Cible 4 OK " );
    tone(12, 800, 300);}


    //Cible 5
    if(received == 'E') // Recois E depuis Esclave = Cible 5
    {lcd.setCursor(0,1);
    lcd.print(" Cible 5 OK " );
    tone(12, 1000, 300);}

    //Cible 6
    if(received == 'F') // Recois F depuis Esclave = Cible 6
    {lcd.setCursor(0,1);
    lcd.print(" Cible 6 OK " );
    tone(12, 1200, 300);}

    }//fin IF

    // debut ajout par Naedioba

    if(digitalRead(ButtonHaut) == HIGH)
    {Serial.println('F');
    Menu();}

    // fin ajout par Naedioba

    }//fin While

    }//fin testcible


    =========================================================
    // Pour le mode Reglage des points

    void RegPoint() {

    Reset:

    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Reglages Points");
    delay(1000);



    //Reglage Cibles 1



    if (RegCible == 0 ) {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Points Cible 1 ");
    lcd.setCursor(7,1);
    lcd.print(Cibles1);

    while(1) {

    if(digitalRead(ButtonHaut) == HIGH) // Boutons Haut
    {tone(12, 800, 300);
    Cibles1 = (Cibles1 + 10);
    lcd.setCursor(7,1);
    lcd.print(Cibles1);
    delay(DelayBP);}


    if(digitalRead(ButtonBas) == HIGH) // Boutons Bas
    {tone(12, 800, 300);
    Cibles1 = (Cibles1 - 10);
    lcd.setCursor(7,1);
    lcd.print(Cibles1);
    delay(DelayBP); }


    if (Cibles1 < 00) {Cibles1 = 00;
    lcd.setCursor(7,1);
    lcd.print(Cibles1); }

    if (Cibles1 > 200) {Cibles1 = 200;
    lcd.setCursor(7,1);
    lcd.print(Cibles1); }

    //Affichage 0
    if (Cibles1 <= 0 ) {
    lcd.setCursor(7,1);
    lcd.print(Cibles1 , DEC);
    lcd.setCursor(8,1);
    lcd.print(" ");
    lcd.setCursor(6,1);
    lcd.print(" "); }

    //Affichage + de 10
    if (Cibles1 >= 100 ) {
    lcd.setCursor(7,1);
    lcd.print(Cibles1 , DEC);
    lcd.setCursor(10,1);
    lcd.print(" ");
    lcd.setCursor(6,1);
    lcd.print(" "); }

    //Affichage - de 10
    if (Cibles1 > 1 && Cibles1 < 100 ) {
    lcd.setCursor(7,1);
    lcd.print(Cibles1 , DEC);
    lcd.setCursor(9,1);
    lcd.print(" ");
    lcd.setCursor(6,1);
    lcd.print(" "); }

    if(digitalRead(ButtonSelect) == HIGH) // Boutons OK
    {tone(12, 800, 300);
    EEPROM.write(1, Cibles1);
    RegCible++;
    goto Reset;}

    } //fin while
    }//fin if regcible

    if (RegCible == 1 ) {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Points Cible 2 ");
    lcd.setCursor(7,1);
    lcd.print(Cibles2);

    while(1) {

    if(digitalRead(ButtonHaut) == HIGH) // Boutons Haut
    {tone(12, 800, 300);
    Cibles2 = (Cibles2 + 10);
    lcd.setCursor(7,1);
    lcd.print(Cibles2);
    delay(DelayBP);}


    if(digitalRead(ButtonBas) == HIGH) // Boutons Bas
    {tone(12, 800, 300);
    Cibles2 = (Cibles2 - 10);
    lcd.setCursor(7,1);
    lcd.print(Cibles2);
    delay(DelayBP); }


    if (Cibles2 < 00) {Cibles2 = 00;
    lcd.setCursor(7,1);
    lcd.print(Cibles2); }

    if (Cibles2 > 200) {Cibles2 = 200;
    lcd.setCursor(7,1);
    lcd.print(Cibles2); }

    //Affichage 0
    if (Cibles2 <= 0 ) {
    lcd.setCursor(7,1);
    lcd.print(Cibles2 , DEC);
    lcd.setCursor(8,1);
    lcd.print(" ");
    lcd.setCursor(6,1);
    lcd.print(" "); }


    //Affichage + de 10
    if (Cibles2 >= 100 ) {
    lcd.setCursor(7,1);
    lcd.print(Cibles2 , DEC);
    lcd.setCursor(10,1);
    lcd.print(" ");
    lcd.setCursor(6,1);
    lcd.print(" "); }

    //Affichage - de 10
    if (Cibles2 < 100 ) {
    lcd.setCursor(7,1);
    lcd.print(Cibles2 , DEC);
    lcd.setCursor(9,1);
    lcd.print(" ");
    lcd.setCursor(6,1);
    lcd.print(" "); }

    if(digitalRead(ButtonSelect) == HIGH) // Boutons OK
    {tone(12, 800, 300);
    EEPROM.write(2, Cibles2);
    RegCible++;
    goto Reset;}

    } //fin while
    }//fin if regcible

    if (RegCible == 2 ) {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Points Cible 3 ");
    lcd.setCursor(7,1);
    lcd.print(Cibles3);

    while(1) {

    if(digitalRead(ButtonHaut) == HIGH) // Boutons Haut
    {tone(12, 800, 300);
    Cibles3 = (Cibles3 + 10);
    lcd.setCursor(7,1);
    lcd.print(Cibles3);
    delay(DelayBP); }


    if(digitalRead(ButtonBas) == HIGH) // Boutons Bas
    {tone(12, 800, 300);
    Cibles3 = (Cibles3 - 10);
    lcd.setCursor(7,1);
    lcd.print(Cibles3);
    delay(DelayBP);}


    if (Cibles3 < 00) {Cibles3 = 00;
    lcd.setCursor(7,1);
    lcd.print(Cibles3); }

    if (Cibles3 > 200) {Cibles3 = 200;
    lcd.setCursor(7,1);
    lcd.print(Cibles3); }

    //Affichage 0
    if (Cibles3 <= 0 ) {
    lcd.setCursor(7,1);
    lcd.print(Cibles3 , DEC);
    lcd.setCursor(8,1);
    lcd.print(" ");
    lcd.setCursor(6,1);
    lcd.print(" "); }

    //Affichage + de 10
    if (Cibles3 >= 100 ) {
    lcd.setCursor(7,1);
    lcd.print(Cibles3 , DEC);
    lcd.setCursor(10,1);
    lcd.print(" ");
    lcd.setCursor(6,1);
    lcd.print(" "); }

    //Affichage - de 10
    if (Cibles3 < 100 ) {
    lcd.setCursor(7,1);
    lcd.print(Cibles3 , DEC);
    lcd.setCursor(9,1);
    lcd.print(" ");
    lcd.setCursor(6,1);
    lcd.print(" "); }

    if(digitalRead(ButtonSelect) == HIGH) // Boutons OK
    {tone(12, 800, 300);
    EEPROM.write(3, Cibles3);
    RegCible++;
    goto Reset;}


    } //fin while
    }//fin if regcible

    if (RegCible == 3 ) {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Points Cible 4 ");
    lcd.setCursor(7,1);
    lcd.print(Cibles4);

    while(1) {

    if(digitalRead(ButtonHaut) == HIGH) // Boutons Haut
    {tone(12, 800, 300);
    Cibles4 = (Cibles4 + 10);
    lcd.setCursor(7,1);
    lcd.print(Cibles4);
    delay(DelayBP); }


    if(digitalRead(ButtonBas) == HIGH) // Boutons Bas
    {tone(12, 800, 300);
    Cibles4 = (Cibles4 - 10);
    lcd.setCursor(7,1);
    lcd.print(Cibles4);
    delay(DelayBP); }


    if (Cibles4 < 00) {Cibles4 = 00;
    lcd.setCursor(7,1);
    lcd.print(Cibles4); }

    if (Cibles1 > 200) {Cibles4 = 200;
    lcd.setCursor(7,1);
    lcd.print(Cibles4); }

    //Affichage 0
    if (Cibles4 <= 0 ) {
    lcd.setCursor(7,1);
    lcd.print(Cibles4 , DEC);
    lcd.setCursor(8,1);
    lcd.print(" ");
    lcd.setCursor(6,1);
    lcd.print(" "); }


    //Affichage + de 10
    if (Cibles4 >= 100 ) {
    lcd.setCursor(7,1);
    lcd.print(Cibles4 , DEC);
    lcd.setCursor(10,1);
    lcd.print(" ");
    lcd.setCursor(6,1);
    lcd.print(" "); }

    //Affichage - de 10
    if (Cibles4 < 100 ) {
    lcd.setCursor(7,1);
    lcd.print(Cibles4 , DEC);
    lcd.setCursor(9,1);
    lcd.print(" ");
    lcd.setCursor(6,1);
    lcd.print(" "); }

    if(digitalRead(ButtonSelect) == HIGH) // Boutons OK
    {tone(12, 800, 300);
    EEPROM.write(4, Cibles4);
    RegCible++;
    goto Reset;}

    } //fin while
    }//fin if regcible

    if (RegCible == 4 ) {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Points Cible 5 ");
    lcd.setCursor(7,1);
    lcd.print(Cibles5);

    while(1) {

    if(digitalRead(ButtonHaut) == HIGH) // Boutons Haut
    {tone(12, 800, 300);
    Cibles5 = (Cibles5 + 10);
    lcd.setCursor(7,1);
    lcd.print(Cibles5);
    delay(DelayBP); }


    if(digitalRead(ButtonBas) == HIGH) // Boutons Bas
    {tone(12, 800, 300);
    Cibles5 = (Cibles5 - 10);
    lcd.setCursor(7,1);
    lcd.print(Cibles5);
    delay(DelayBP); }


    if (Cibles5 < 00) {Cibles5 = 00;
    lcd.setCursor(7,1);
    lcd.print(Cibles5); }

    if (Cibles1 > 200) {Cibles5 = 200;
    lcd.setCursor(7,1);
    lcd.print(Cibles5); }

    //Affichage 0
    if (Cibles5 <= 0 ) {
    lcd.setCursor(7,1);
    lcd.print(Cibles5 , DEC);
    lcd.setCursor(8,1);
    lcd.print(" ");
    lcd.setCursor(6,1);
    lcd.print(" "); }

    //Affichage + de 10
    if (Cibles5 >= 100 ) {
    lcd.setCursor(7,1);
    lcd.print(Cibles5 , DEC);
    lcd.setCursor(10,1);
    lcd.print(" ");
    lcd.setCursor(6,1);
    lcd.print(" "); }

    //Affichage - de 10
    if (Cibles5 < 100 ) {
    lcd.setCursor(7,1);
    lcd.print(Cibles5 , DEC);
    lcd.setCursor(9,1);
    lcd.print(" ");
    lcd.setCursor(6,1);
    lcd.print(" "); }

    if(digitalRead(ButtonSelect) == HIGH) // Boutons OK
    {tone(12, 800, 300);
    EEPROM.write(5, Cibles5);
    RegCible++;
    goto Reset;}

    } //fin while
    }//fin if regcible


    if (RegCible == 5 ) {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Points Cible 6 ");
    lcd.setCursor(7,1);
    lcd.print(Cibles6);

    while(1) {

    if(digitalRead(ButtonHaut) == HIGH) // Boutons Haut
    {tone(12, 800, 300);
    Cibles6 = (Cibles6 + 10);
    lcd.setCursor(7,1);
    lcd.print(Cibles6);
    delay(DelayBP); }


    if(digitalRead(ButtonBas) == HIGH) // Boutons Bas
    {tone(12, 800, 300);
    Cibles6 = (Cibles6 - 10);
    lcd.setCursor(7,1);
    lcd.print(Cibles6);
    delay(DelayBP); }


    if (Cibles6 < 00) {Cibles6 = 00;
    lcd.setCursor(7,1);
    lcd.print(Cibles6); }

    if (Cibles6 > 200) {Cibles6 = 200;
    lcd.setCursor(7,1);
    lcd.print(Cibles6); }

    //Affichage 0
    if (Cibles6 <= 0 ) {
    lcd.setCursor(7,1);
    lcd.print(Cibles6 , DEC);
    lcd.setCursor(8,1);
    lcd.print(" ");
    lcd.setCursor(6,1);
    lcd.print(" "); }

    //Affichage + de 10
    if (Cibles6 >= 100 ) {
    lcd.setCursor(7,1);
    lcd.print(Cibles6 , DEC);
    lcd.setCursor(10,1);
    lcd.print(" ");
    lcd.setCursor(6,1);
    lcd.print(" "); }

    //Affichage - de 10
    if (Cibles6 < 100 ) {
    lcd.setCursor(7,1);
    lcd.print(Cibles6 , DEC);
    lcd.setCursor(9,1);
    lcd.print(" ");
    lcd.setCursor(6,1);
    lcd.print(" "); }

    if(digitalRead(ButtonSelect) == HIGH) // Boutons OK
    {tone(12, 800, 300);
    EEPROM.write(6, Cibles6);
    RegCible++;
    goto Reset;}

    } //fin while
    }//fin if regcible


    if (RegCible == 6 ) { Menu(); }

    }//fin reglage point

    avatar
    Bidou914
    vis rouillée
    vis rouillée

    Messages : 39
    Date d'inscription : 12/06/2015
    Age : 28
    Localisation : Essonne

    Re: Tuto ciblerie électronique

    Message par Bidou914 le Dim 21 Mai - 11:18

    En fait avec ton petit bout de code comme tu dis tu laisses simplement 2.5s pour lire les résultats avant de retourner au menu ce qui peut être très court.
    A ta place, dans la boucle while(1) je rajouterai à la fin après l'affichage du résultat :
    Code:
    if(digitalRead(ButtonSelect) == HIGH || digitalRead(ButtonHaut) == HIGH || digitalRead(ButtonBas) == HIGH)
    {Menu()}; //ou break; pour sortir de la boucle et tu mets Menu(); juste après
    Comme ça le résultat reste affiché le temps que tu le désire et dès que tu appuies sur un bouton tu retourne au menu
    avatar
    naedioba
    vis rouillée
    vis rouillée

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

    Re: Tuto ciblerie électronique

    Message par naedioba le Dim 21 Mai - 15:07

    Bonjour Bidou914,
    En fait j'avais bien essaye cette méthode, mais cela ne marche qu'avec le mode Test Cible. Meme dans cas, je n'ai pas mis le Bouton Select parce qu'avec ce bouton on retourne directement dans le mode Test Cibles. Mais les boutons haut et bas marchent ici.
    J'ai aussi mis le délai à 10 secondes.
    avatar
    naedioba
    vis rouillée
    vis rouillée

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

    Re: Tuto ciblerie électronique

    Message par naedioba le Dim 21 Mai - 15:09

    Code:

      // Eviter de choisir le Bouton Select parce que dans ce cas on retourne directement dans la partie Test Cibles
        if(digitalRead(ButtonHaut) == HIGH || digitalRead(ButtonBas) == HIGH) // Si on appuie sur Bouton Haut ou Bouton Bas
        {Menu();} //ou break; pour sortir de la boucle et tu mets Menu(); juste après

    avatar
    naedioba
    vis rouillée
    vis rouillée

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

    Re: Tuto ciblerie électronique

    Message par naedioba le Lun 22 Mai - 1:09

    Bonsoir,
    Il ne me reste plus qu’à fixer les capteurs sur les cibles qui sont encore en cours de fabrication. Pour la connexion des cibles à la base esclave, j’ai préféré utiliser des fiches RCA femelles que je viens brancher sur les fiches RCA mâles fixées au bout d’un câble internet à 8 fils. A l’autre bout du câble il y a une fiche RJ45 qui se branche au port RJ45 de la base esclave. Evidemment les 2 bases communiquent via des modules apc220.
    Un très grand bravo à Naudnaud et Krispies pour cette prouesse « arduinesque ». Lol












    avatar
    Naudnaud
    ecrou argent
    ecrou argent

    Messages : 401
    Date d'inscription : 30/08/2011
    Age : 27
    Localisation : Metabief

    Re: Tuto ciblerie électronique

    Message par Naudnaud le Lun 22 Mai - 10:02

    Hooooo, je part un WE et je loupe 120000 poste Very Happy

    Pour le reset système à chaque fin de jeux, c'est voulus, ça permet au système de repartir de zéro au niveau décompte de point/cible toucher et autre.
    Ta modif peut marcher, mais tu risque d'avoir des problèmes de décompte de points et zone toucher.

    Le fait que quand tu utilise le bp select, le boitier reparte en jeux, et du au fait que l'appuie du bp n'est pas "filtré", le programme et si rapide, qu'il valide le jeux dans le menu, on peut résoudre ça en utilisant uniquement le front montant du bp pour faire un retour au menu sans le reset.


    Grand merci à toi pour ce retour !!! ça fait toujours autant plaisir de voir que le tuto sert !!


    Contenu sponsorisé

    Re: Tuto ciblerie électronique

    Message par Contenu sponsorisé


      La date/heure actuelle est Ven 23 Juin - 7:16