Airsoft Krispies

Bonjour à tous et bienvenue


    Tuto ciblerie électronique

    Partagez
    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 - 16:12

    Bonjour,
    C’est vrai que j’ai eu ces problèmes de remise à zéro. A chaque fois, il y avait une agrégation du nombre de tirs réels, nombre de zones touchées, et même du temps. C’est pourquoi j’ai forcé la remise à zéro avant l’appel du Menu en ajoutant ça :

    Pour le Randomgames:
    Code:

       
            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();}



    Pour le SpeedGames:
    Code:

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



    C'est à toi que nous devons des remerciements. Bonne continuation.
    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 - 22:28

    Bonsoir,
    Est-il possible de déterminer la distance entre la base maître et la base esclave par le module apc220 ?
    avatar
    burnout'

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

    Re: Tuto ciblerie électronique

    Message par burnout' le Mar 23 Mai - 1:06

    Bonjour à tous,

    Le projet avance plutôt bien de mon côté.

    J'ai monté les 2 bases et fait fonctionné le tout avec les modules sans fils NRF24L01+.
    Donc j'ai adapté tout le code pour ces modules.

    J'ai aussi modifié les modes de jeux, certains ne m’intéressais pas, et j'en ai ajouté.
    J'ai essayé d'optimiser un peu le code... A vous de juger ^^

    J'ai apporté une petite modification : je n'utilise pas 4 mais seulement 3 boutons poussoirs pour commander le boitier.
    Et j'ai réussi à faire fonctionner les LEDs dans les cibles Smile.

    J'ai choisi d'intégrer les batteries directement dans les boîtiers afin d'être totalement autonome (Batterie 12V).

    Pour répondre à la question de naedioba concernant le problème du retour au menu principal. Personnelement j'utilise un "return;" à la fin de mes fonctions pour retourner au menu principal.

    Et parce-que les images valent mieux que les mots ...

    Base maître :



    Base esclave :



    En prime une petite vidéo du fonctionnement :


    Pour ceux que ça intéresse vous pouvez télécharger le package à l'adresse suivante : Package
    Il contient :
    * Le schéma de câblage avec les modules NRF24L01+
    * Les codes des Arduinos
    * Un manuel utilisateur qui explique les différents modes de jeux.

    Il ne me reste plus que les disques en métal à fabriquer pour les cibles.

    Bonne lecture,
    N'hésitez pas à faire un retour Smile
    Encore merci à Naudnaud et Krispies.

    A bientôt,
    Burnout'.
    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 Mer 24 Mai - 18:26

    Bravo!! As-tu testé la distance maxi de communication entre les deux bases?


    _________________

    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 24 Mai - 19:01

    Bonjour à tous,
    J’ai personnellement testé jusqu’à 700m et ça marche impeccablement. D’après les spécifications du apc220, ils peuvent communiquer jusqu’à 1200m en espace ouvert.
    En fait, je demande s’il est possible de déterminer la distance entre les deux et de l’afficher. Mon idée, c’est d’ajouter une option Mesure de la distance entre les 2 bases.
    Ca peut toujours servir.

    Best regards.
    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 25 Mai - 10:50

    Je posais la question à Burnout pour ses modules NRF24L01?


    _________________

    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 25 Mai - 13:48

    Lol. Sorry.
    Mais question t'es aussi destinée.
    avatar
    burnout'

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

    Re: Tuto ciblerie électronique

    Message par burnout' le Ven 26 Mai - 16:34

    Salut à tous,

    Aujourd’hui j'ai testé la distance de communication entre les deux bases.

    Pour répondre à Naedioba, j'ai créé une fonction "Test base esclave", elle n'affiche pas la distance entre les deux bases mais me permet de la déterminer. Quand je démarre la fonction, la base esclave envoie en continu des paquets de test. Dès que la base maître reçoit un de ces paquets, elle émet un Bip sonore et affiche à l'écran le nombre de paquets reçus.

    J'ai donc pris ma base maître et j'ai marché dans la rue jusqu'a ce que je n'entende plus de BIP.

    J'ai testé deux types de modules.

    Le 1er : module NRF24L01+ (Antenne intégrée)
    0.56€ sur Aliexpress



    Avec ce module j'arrive à 100 mètres en champ libre.

    Le 2eme module : NRF24L01+ PoweAmplifier + LowNoiseAmplifier (possède une antenne externe)
    1.83€ sur Aliexpress



    Avec ce module j'arrive à 500 mètres en champ libre. Ma rue n'étant pas assez longue, la portée doit surement être plus grande... je retenterais plus tard.

    Attention les modules NRF24L01+ fonctionnent en 3.3V !

    Pour me simplifier la tâche j'utilise un module adaptateur (optionnel) :
    0.47€ sur Aliexpress
    Il convertit le 5V en 3.3V régulé.


    Aucune modification de configuration à effectué puisque ce sont les mêmes modules (NRF24L01+)

    A bientôt,
    Burnout'.


    Dernière édition par burnout' le Ven 26 Mai - 18:46, édité 1 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 Ven 26 Mai - 18:40

    Tout ça est parfait surtout vu le prix des ACP220 par rapport à ceux-là..Merci à toi pour ce partage..et encore bravo pour cette réalisation.


    _________________

    http://airsoft-krisp.e-monsite.com/
    http://www.facebook.com/pages/Krispies-Team/470577369635210
    avatar
    burnout'

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

    Re: Tuto ciblerie électronique

    Message par burnout' le Ven 26 Mai - 18:49

    Oui niveau prix c'est sur que ça vaux le coup !

    Après je vais voir ce que ça donne en condition réel ... Les modules sont assez sensibles au obstacles.
    J'ai vu qu'on pouvais jouer sur les puissances d'émissions et les débits, je n'ai pas encore explorer cette voie.

    Pour les modules avec antenne, les obstacles ne posent pas de problèmes à courte distance. (toujours avec les paramètres par défaut).
    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 26 Mai - 19:28

    D'un autre coté c'est une ciblerie airsoft, donc on va rarement dépasser les 40m entre les bases..Mais ça peut ètre intéressant pour les bases de type batlerfield qui ont été évoquées dans un autre sujet.


    _________________

    http://airsoft-krisp.e-monsite.com/
    http://www.facebook.com/pages/Krispies-Team/470577369635210
    avatar
    burnout'

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

    Re: Tuto ciblerie électronique

    Message par burnout' le Sam 27 Mai - 10:33

    Exactement pour notre utilisation pas besoin de longue distance. Après ce qui m'inquiète c'est les obstacles sur un terrain d'airsoft qui pourrait couper le signal. J'irai tester ça en forêt pour voir Smile
    avatar
    burnout'

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

    Re: Tuto ciblerie électronique

    Message par burnout' le Dim 28 Mai - 21:00

    Bonsoir la compagnie,

    En exclusivité pour vous, j'ai effectué d'autres tests de communication sans-fils.Cette fois-ci non plus en champ libre, mais avec des obstacles.

    1er test : Module NRF24L01+ classique (antenne intégrée)
    Comme je l'imaginais ce module est très sensible aux obstacles. J'ai réalisé le test de communication autour d'une rangée d'arbre. J'ai posé la base esclave au bout de la rangée, puis je me suis éloigné doucement. Au bout du 3 ou 4eme arbre entre les deux bases la communication est perdue ...

    2eme test : Module NRF24L01+, Power Amplifer +Low Noise Amplifer (antenne externe)
    Ce module est tout de suite plus adapté ! Aucun problème pour passer à travers les arbres. J'ai été jusqu'a 30 mètres sans problèmes. J'ai même testé en diagonale de mon terrain (env. 30 mètres) et le signale passe très bien à travers la maison !

    Donc pour résumer :
    Si vos bases sont assez proches (<50 mètres) et que vous prévoyez de les placer en champs libre, vous pouvez optez pour un NRF24L01+ classique.

    En revanche si vos bases sont assez éloignées (>50 mètres) et qu'il y a beaucoup d’obstacles à l'endroit où vous prévoyez de les installez, optez pour un module NRF24L01+ avec "Power Amplifier" (PA) +  "Low Noise Amplifier" (LNA) et antenne externe.

    Pour rappel l'écart de prix entre les deux version est d'environ 1.40€

    Petite note :
    Pour effectuer mes tests, j'ai tenté d'améliorer la distance max en modifiant les paramètres des boitiers.

    Code:

      radio.setPALevel(RF24_PA_MAX);  //Configuration de la puissance d'émission au max
      radio.setDataRate(RF24_250KBPS); //Configuration du débit au minimum (censé améliorer la distance)
      radio.setChannel(108); //Changement de la bande de fréquence pour éviter les parasites du WiFi qui utilise les mêmes gammes de fréquences

    Malgré ces changement, j'en retient que tout ce joue sur le module sans-fils lui-même, la configuration ci-dessus étant peu significative.

    Bonne lecture,
    A bientôt,
    Burnout'.
    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 28 Mai - 22:22

    Merci Burnout pour ces infos. Ca pourra toujours servir.

    All the best.
    avatar
    droopaille
    boulon platine
    boulon platine

    Messages : 2501
    Date d'inscription : 03/04/2011
    Age : 42
    Localisation : Vitré (35)

    Re: Tuto ciblerie électronique

    Message par droopaille le Lun 29 Mai - 19:28

    C'est bizarre, j'avais fait des tests avec le module NRF24L01+ et j'étais pas loin de 100m en terrain dégagé.


    _________________
    Toutes mes créations
    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 Mar 30 Mai - 1:30

    Bonsoir à tous,
    J'ai pu faire des test avec les APC220 et ça a marche très bien à plus de 800m. Je n'ai pas pu aller plus loin parce que je ne voyais plus la base esclave que j'avais posée sur ma terrasse.

    bruce2813

    Messages : 5
    Date d'inscription : 24/04/2017

    Re: Tuto ciblerie électronique

    Message par bruce2813 le Mer 7 Juin - 17:42

    bonjour la compagnie,
    Je reviens vers vous car je viens de m'atteler à la réalisation de la ciblerie électronique. J'ai voulu commencer plutôt mais le taf m'en a empêcher.

    PROBLEME :

    Je regarde la vidéo, je charge le programme esclave sur la première carte, impec.
    Je fais le même principe pour le programme maître et la crac problème le logiciel arduino me dit ceci :
    C:\Users\Abbadone2813\Desktop\tuto krisp\Programme stand\Boitier_Maitre\Boitier_maitre.ino:17:63: fatal error: LiquidCrystal_I2C.h: No such file or directory

    #include  // librairie pour écran 4fils
                                                                 ^
    compilation terminated.

    exit status 1
    Erreur de compilation pour la carte Arduino/Genuino Uno

    Donc  :!!\  :!!\  :!!\ s'il vous plait

    bruce2813

    Messages : 5
    Date d'inscription : 24/04/2017

    Re: Tuto ciblerie électronique

    Message par bruce2813 le Mer 7 Juin - 18:07

    Alors j'ai essayé les programme v.1 / v.2 / v2.1 et v2.2 mais j'ai toujours le problème de librairie

    bruce2813

    Messages : 5
    Date d'inscription : 24/04/2017

    Re: Tuto ciblerie électronique

    Message par bruce2813 le Mer 7 Juin - 18:47

    Ca y est ca fonctionne : J'avais pas le bon pilote pour la carte arduino

    BBOB

    Messages : 13
    Date d'inscription : 20/05/2015
    Age : 49
    Localisation : 91700

    Re: Tuto ciblerie électronique

    Message par BBOB le Jeu 8 Juin - 17:03

    Bonjour à tous. J'ai découvert ça sur le net:
    https://www.adafruit.com/product/1312
    Des Leds multi-couleurs, qui peuvent être câblés en série, et qui ont une adresse, ce qui donne des réglages et des couleurs indépendantes. Juste un +, un -, et un fil en série pour les paramètres. J'ai fait un montage pour une cible qui change de couleurs à chaque impactes = chaque équipe de joueurs aura une couleur:

    Etant donné le succès, et le coté pratique, je suis entrain de passer ma "cibles électroniques" avec ces Néopixels  Very Happy

    Et bravo à tous pour les idées et l’ingéniosité.

    noha

    Messages : 3
    Date d'inscription : 08/05/2017
    Age : 33
    Localisation : Tahiti

    Re: Tuto ciblerie électronique

    Message par noha le Ven 9 Juin - 10:03

    Put*in Burnout' tu me mâche le travail merci ^^
    Depuis mon dernier passage, j'ai commandé justement des modules NRF24L01 sur aliexpress (les simples), ils devraient arriver d'ici peu Smile

    Donc du coup je vais télécharger tes codes et m'y mettre aussi.

    Par contre, je n'ai pas du tout pensé aux adaptateurs 3.3v lol
    avatar
    burnout'

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

    Re: Tuto ciblerie électronique

    Message par burnout' le Dim 11 Juin - 21:45

    Ah au moins ça aura servi à quelqu'un ^^

    Par contre je te conseille très fortement d'acheter les adaptateurs 3.3V. Tu auras une alimentation mieux stabilisée que sur la sortie 3.3V de l'arduino.

    A bientôt.

    Spyruff

    Messages : 2
    Date d'inscription : 12/06/2017

    Re: Tuto ciblerie électronique

    Message par Spyruff le Lun 12 Juin - 22:36

    Bonjour a tous je viens de commencer l'airsoft, j'ai regarder plusieur fois les videos, je m'appretai a acheter tout le necessaire pour me lancer mais dx n'as plus de piezo savez. Ous ou jpe en trouver et je voudrais aussi savoir si les trépied de naunau pour c'est cible individuel tiennent bien??
    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 Mar 13 Juin - 6:19

    Bonsoir Naudnaus et Krispies, Bonsoir a tous,
    Je me suis permis de modifier quelques petits éléments pour adapter un peu le programme de la ciblerie. Voici en gros les modifications :

    1.Changements de noms :
    Speedgame devient Rapidité
    Randomgame devient Cible aléatoire
    ISPC devient APC1 (acronyme de « Arrêt Par Cible 1 » parce que ISPC est une marque déposée. Lol)

    2.Réglage points cibles : il se fait par +/- 5 au lieu de +/- 10

    3.Ajout de fonctionnalités /fonctions :
    Facteur de tir (Hitfactor) : ajouté dans Speedgame et RandomGame avec cette formule :
    hitfactor = (Point*1000)/TempsReel;

    4.Onglets
    PonctuationChrono : regroupe toutes les instructions pour la ponctuation du chrono.
    CalculeMinSecMilli : regroupe toutes les instructions pour le calcul du temps en Min, Sec et Millis.
    AffichageZones : regroupe toutes les instructions pour l’affichage des zones de tir.

    5.Temps d’attente entre les écrans :
    Après une partie, affichage des informations un écran après l’autre en appuyant sur un des trois boutons (Haut, Bas, Select) pour permettre au joueur de prendre le temps qui lui convient grâce à ce bout de code avant chaque écran :
     do {
     suivant = false;
     EtatButtonSelect = digitalRead(ButtonSelect);
     EtatButtonHaut = digitalRead(ButtonHaut);
     EtatButtonBas = digitalRead(ButtonBas);
     if (EtatButtonSelect == HIGH || EtatButtonHaut == HIGH||EtatButtonBas == HIGH)
     {delay(250);tone(12,500,150);suivant = true;}
     }
    while (suivant != true);


    J’espère n’avoir pas trop altéré ce programme que je trouve vraiment très excellent et trop passionnant.
    Par contre, je n'arrive pas a joindre le fichier contenant les programmes.!
    Code:

    #include <SoftwareSerial.h>//Naedioba from burnout'
    #include <Wire.h>
    #include <LCD.h>
    #include <LiquidCrystal_I2C.h>  // librairie pour écran 4fils
    LiquidCrystal_I2C lcd(0x38, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
    #include <avr/wdt.h>
    #include <EEPROM.h>

    //Variable
    int Buzzer = 7; //Neige from burnout'
    const int pinRX = 12;
    const int pinTX = 11;
    const int pinSET= 13;
    SoftwareSerial apc220(pinRX, pinTX);
    int ButtonHaut=3;
    int ButtonBas=4;
    int ButtonSelect=2;
    int Klaxon = 12;  
    int DelayBP = 100; //delais anti rebons boutons
    int ValMenu = 1;
    int received; //reception RF/PC
    int Poubelle;
    int Nbtires = 1;
    int NbtiresReel = 0;
    unsigned long Point = 0;
    int Cibles1 = 10;
    int Cibles2 = 20;
    int Cibles3 = 30;
    int Cibles4 = 40;
    int Cibles5 = 50;
    int Cibles6 = 60;
    int Zone1 = 0;
    int Zone2 = 0;
    int Zone3 = 0;
    int Zone4 = 0;
    int Zone5 = 0;
    int Zone6 = 0;
    int CibleRandom = 0;
    int Counterseconde = 00;
    int PreCounterseconde = 0;
    unsigned long TempsInit = 0;
    unsigned long TempsReel = 0;
    unsigned long TempsPenal = 0;
    unsigned long TempsSec = 0;
    unsigned long TempsMil = 0;
    unsigned long TempsMin = 0;
    int RegCible = 0;
    void admin();
    void TestCible();
    void PreIPSC();
    void RegPoint();
    void PreRandom();
    // Naedioba: debut ajout
    void Menu();
    unsigned long hitfactor = 0;
    boolean EtatButtonHaut;
    boolean EtatButtonBas;
    boolean EtatButtonSelect;
    boolean suivant;
    // Naedioba: fin ajout

    void setup() {
      // put your setup code here, to run once:
    Cibles1 = EEPROM.read(1);
    Cibles2 = EEPROM.read(2);
    Cibles3 = EEPROM.read(3);
    Cibles4 = EEPROM.read(4);
    Cibles5 = EEPROM.read(5);
    Cibles6 = EEPROM.read(6);

    pinMode(pinSET, HIGH);
    pinMode(Klaxon, OUTPUT);
      Serial.begin(9600);
      Serial.println('F');
      lcd.begin(16, 2);
      lcd.setCursor(0, 0);
      lcd.print("     CIBLES     ");
      delay(1000);
      lcd.setCursor(0, 1);
      lcd.print("  INTERACTIVES  ");
      delay(2000);
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("  par Naudnaud  ");
      delay(1000);
      lcd.setCursor(0, 1);
      lcd.print("  et  Krispies  ");
      delay(2000);
     //------------------------------
      tone(12, 500, 100);
      delay(100);
      tone(12, 550, 100);
      delay(100);
      tone(12, 600, 100);
      delay(100);
      tone(12, 650, 100);
      delay(100);
      tone(12, 700, 100);
      delay(100);
      tone(12, 750, 100);
      delay(100);
      lcd.clear();
    }//fin Setup

    void loop() {

      Menu();  //appelle menu
    }





    Code:

    void AffichageZones (){
       // Naedioba: debut nouvelle procedure AffichageZones
      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);
     // Naedioba: fin nouvelle procedure AffichageZones
    }


    Code:

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


    Code:

    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, 8);
      
     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, 800);
      
    //Impression info tires sur lcd  
       lcd.clear();
       lcd.setCursor(6,0);
       lcd.print("APC1"); // IPSC devient APC1

       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
     
     //Cible 1
             if(received == 'A') // Recois A depuis Esclave = Cible 1
               {tone(12, 1000, 300);
                TempsReel = (millis() - TempsInit );
                Serial.println('F');
                finIPSC();  }
             else
             if(received == 'B'||'C'||'D'||'E'||'F') // Recois A depuis Esclave = Cible 1
               {tone(12, 700, 300);}
     }//fin if
     
     TempsReel = (millis() - TempsInit );
     
     //Calcule affichage min/sec.milli  
      CalculeMinSecMilli ();
      
    // Naedioba: debut nouvelle procedure PonctuationChrono
      PonctuationChrono ();
    // Naedioba: fin nouvelle procedure PonctuationChrono  
    } //fin while  
    } //fin Timergame

    //---------------------------------------------------------
    void finIPSC() {
      
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Fin de la partie");
      tone(12, 100, 100);
      delay(100);
      tone(12, 1000, 100);
      delay(100);
      tone(12, 5000, 100);
      
    //Calcule affichage min/sec.milli  
      CalculeMinSecMilli ();

      while (1) {
        
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Fin de la partie");
     
      // Naedioba: debut nouvelle procedure PonctuationChrono
      PonctuationChrono ();
      // Naedioba: fin nouvelle procedure PonctuationChron
    welcome========================================================
      do {
      suivant = false;
      EtatButtonSelect = digitalRead(ButtonSelect);
      EtatButtonHaut = digitalRead(ButtonHaut);
      EtatButtonBas = digitalRead(ButtonBas);
      if (EtatButtonSelect == HIGH || EtatButtonHaut == HIGH ||EtatButtonBas == HIGH)
      {delay(250);tone(12,500,150);suivant = true;} //Attente appui sur un bouton pour afficher l'ecran suivant
      }
     while (suivant != true);
    welcome========================================================    
       Menu(); // Naedioba: retour au Menu
    }//fin while
    }//fin fingame



    Code:

    void Menu() {
      
    // lcd.setCursor(0,0);
    // lcd.print("----- MENU -----");
     
    while(1) {

    if(digitalRead(ButtonHaut) == HIGH) // Boutons Haut
       {tone(12, 800, 300);
        ValMenu++;}
    if(digitalRead(ButtonBas) == HIGH) // Boutons Bas
       {tone(12, 800, 300);
        ValMenu--;}
    // debut Neige ajout
    if(ValMenu >=6)
       {ValMenu = 1;}
    if(ValMenu <=0)
       {ValMenu = 5;}
    // fin Neige ajout

    switch (ValMenu) { // debut de la structure
        case 1: // cas 1
           lcd.clear();
           lcd.setCursor(0,0);
           lcd.print("----- MENU -----");
           lcd.setCursor(0,1);
           lcd.print("    Rapidite    ");
           if(digitalRead(ButtonSelect) == HIGH) // Boutons Select
              {tone(12, 800, 300); PreSpeed();}
           delay(DelayBP);
           break;

        case 2: // cas 2
           lcd.clear();
           lcd.setCursor(0,0);
           lcd.print("----- MENU -----");
           lcd.setCursor(0,1);
           lcd.print("Cible  aleatoire");
           if(digitalRead(ButtonSelect) == HIGH) // Boutons Select
              {tone(12, 800, 300); PreRandom();}
           delay(DelayBP);
           break;
          
        case 3: // cas 3
           lcd.clear();
           lcd.setCursor(0,0);
           lcd.print("----- MENU -----");
           lcd.setCursor(0,1);
           lcd.print("      APC1      ");
           if(digitalRead(ButtonSelect) == HIGH) // Boutons Select
              {tone(12, 800, 300); PreIPSC();}
           delay(DelayBP);
           break;

        case 4: // cas 4
            lcd.clear();
            lcd.setCursor(0,0);
            lcd.print("----- MENU -----");
            lcd.setCursor(0,1);
            lcd.print("Reglages  Points");
            if(digitalRead(ButtonSelect) == HIGH) // Boutons Select
              {tone(12, 800, 300); RegPoint();}
            delay(DelayBP);
            break;
          
        case 5: // cas 5
           lcd.clear();
           lcd.setCursor(0,0);
           lcd.print("----- MENU -----");
           lcd.setCursor(0,1);
           lcd.print("Test des Cibles");
           if(digitalRead(ButtonSelect) == HIGH) // Boutons Select
              {tone(12, 800, 300); TestCible();}
           delay(DelayBP);
           break;

      }
     }//fin while  
    }//fin 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 Mar 13 Juin - 6:21

    Suite des codes:

    Code:

    void PonctuationChrono (){
      // Naedioba: debut nouvelle procedure PonctuationChrono
      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); }
     // Naedioba: fin nouvelle procedure PonctuationChrono  
    }


    Code:

    void PreRandom() {
      Point = 0;
      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, 8);
      
     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("     TOUCHEE    ");
                Zone1++;
                Point = (Point + Cibles1); // Naedioba: ajout points pour affichage
                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, 800);
                TempsPenal = (TempsPenal + 5000); // Penalite de temps 5 milliseconde
                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("     TOUCHEE    ");
                Zone2++;
                Point = (Point + Cibles2); // Naedioba: ajout points pour affichage
                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, 800);
                TempsPenal = (TempsPenal + 5000); // Penalite de temps 5 milliseconde
                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("     TOUCHEE    ");
                Zone3++;
                Point = (Point + Cibles3); // Naedioba: ajout points pour affichage
                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, 800);
                TempsPenal = (TempsPenal + 5000); // Penalite de temps 5 milliseconde
                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("     TOUCHEE    ");
                Zone4++;
                Point = (Point + Cibles4); // Naedioba: ajout points pour affichage
                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, 800);
                TempsPenal = (TempsPenal + 5000); // Penalite de temps 5 milliseconde
                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("     TOUCHEE    ");
                Zone5++;
                Point = (Point + Cibles5); // Naedioba: ajout points pour affichage
                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, 800);
                TempsPenal = (TempsPenal + 5000); // Penalite de temps 5 milliseconde
                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("     TOUCHEE    ");
                Zone6++;
                Point = (Point + Cibles6); // Naedioba: ajout points pour affichage
                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, 800);
                TempsPenal = (TempsPenal + 5000); // Penalite de temps 5 milliseconde
                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(0,0);
      lcd.print("Fin de la partie");
      delay(100);
      tone(12, 100, 1000);
      delay(100);
      tone(12, 1000, 1000);
      delay(100);
      tone(12, 5000, 1000);

      hitfactor = (Point*1000)/TempsReel; // Naedioba: ajout Facteur de tir (hitfactor) pour affichage
      
    //Calcule affichage min/sec.milli  
      CalculeMinSecMilli ();
      
      while (1) {
      
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Fin de la partie");
      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(12,500,150);suivant = true;} //Attente appui sur un bouton pour afficher l'ecran suivant
      }
     while (suivant != true);
    welcome========================================================  
      // Naedioba: debut nouvelle procedure PonctuationChrono
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Fin de la partie");
      PonctuationChrono ();
      // Naedioba: fin nouvelle procedure PonctuationChrono
     welcome========================================================
      do {
      suivant = false;
      EtatButtonSelect = digitalRead(ButtonSelect);
      EtatButtonHaut = digitalRead(ButtonHaut);
      EtatButtonBas = digitalRead(ButtonBas);
      if (EtatButtonSelect == HIGH || EtatButtonHaut == HIGH ||EtatButtonBas == HIGH)
      {delay(250);tone(12,500,150);suivant = true;} //Attente appui sur un bouton pour afficher l'ecran suivant
      }
     while (suivant != true);
    welcome========================================================    
      lcd.clear();  // Naedioba: affichage facteur de tir
      lcd.setCursor(0,0);
      lcd.print("Facteur de tir");
      lcd.setCursor(0, 1);
      lcd.print(hitfactor);
      delay(5000);
    welcome========================================================
      do {
      suivant = false;
      EtatButtonSelect = digitalRead(ButtonSelect);
      EtatButtonHaut = digitalRead(ButtonHaut);
      EtatButtonBas = digitalRead(ButtonBas);
      if (EtatButtonSelect == HIGH || EtatButtonHaut == HIGH ||EtatButtonBas == HIGH)
      {delay(250);tone(12,500,150);suivant = true;} //Attente appui sur un bouton pour afficher l'ecran suivant
      }
     while (suivant != true);
    welcome========================================================  
       // Naedioba: debut nouvelle procedure AffichageZones
       AffichageZones ();
       // Naedioba: fin nouvelle procedure AffichageZones
    welcome========================================================
      do {
      suivant = false;
      EtatButtonSelect = digitalRead(ButtonSelect);
      EtatButtonHaut = digitalRead(ButtonHaut);
      EtatButtonBas = digitalRead(ButtonBas);
      if (EtatButtonSelect == HIGH || EtatButtonHaut == HIGH ||EtatButtonBas == HIGH)
      {delay(250);tone(12,500,150);suivant = true;} //Attente appui sur un bouton pour afficher l'ecran suivant
      }
     while (suivant != true);
    welcome========================================================  
        
             if (NbtiresReel == Nbtires){
               Serial.println('F');
         // Naedioba: debut reinitialisation tirs, points, zones, temps, hitfactor, NbtiresReel
               NbtiresReel = 0;
               TempsInit = 0;
               TempsPenal = 0;
               TempsReel = 0;
               TempsMin = 0;
               TempsSec = 0;
               TempsMil = 0;
               hitfactor = 0;
               Zone1 = 0;
               Zone2 = 0;
               Zone3 = 0;
               Zone4 = 0;
               Zone5 = 0;
               Zone6 = 0;
               Menu();} // Retour au Menu
      // Naedioba: fin reinitialisation
      }//fin while
    }//fin PreRandom

    Contenu sponsorisé

    Re: Tuto ciblerie électronique

    Message par Contenu sponsorisé


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