Airsoft Krispies

Bonjour à tous et bienvenue


    Tuto Checkpoint avec Arduino

    Partagez
    avatar
    pic-pac
    ecrou or
    ecrou or

    Messages : 663
    Date d'inscription : 20/06/2011
    Age : 36
    Localisation : Issoire (63)

    Tuto Checkpoint avec Arduino

    Message par pic-pac le Mer 12 Mar - 18:19

    Salut à tout le monde,

    je poste enfin le tuto de réalisation du Checkpoint avec Arduino, ce tuto fait suite au projet de réalisation qui se trouve ICI

    A quoi ressemble un Arduino??


    Un Arduino c'est quoi??

    source wikipedia

    Arduino est un circuit imprimé en matériel libre (dont les plans de la carte elle-même sont publiés en licence libre mais dont certains composants sur la carte, comme le microcontrôleur par exemple, ne sont pas en licence libre) sur lequel se trouve un microcontrôleur qui peut être programmé pour analyser et produire des signaux électriques, de manière à effectuer des tâches très diverses comme la domotique (le contrôle des appareils domestiques - éclairage, chauffage…), le pilotage d'un robot, etc. C'est une plateforme basée sur une interface entrée/sortie simple. Il était destiné à l'origine principalement mais pas exclusivement à la programmation multimédia interactive en vue de spectacle ou d'animations artistiques. C'est une partie de l'explication de la descendance de son interface de programmation de Processing, lui-même inspiré de l'environnement de programmation Wiring1.

    Arduino peut être utilisé pour construire des objets interactifs indépendants (prototypage rapide), ou bien peut être connecté à un ordinateur pour communiquer avec ses logiciels (ex. : Macromedia Flash, Processing, Max/MSP, Usine Hollyhock, Pure Data, SuperCollider). En 2011, les versions vendues sont préassemblées. Des informations sont fournies pour ceux qui souhaitent assembler l'Arduino eux-mêmes.


    Sur l'Arduino se trouve un composant qui est un ATMEGA 328.

    Le schéma de fonctionnement


    Brancher un ATMEGA 328 (charger par un Arduino) sur un circuit indépendant.

    Liste du Matériel:
    un Atmega 328
    4 boutons 3 pour les équipes et 1 pour le menu
    4 résistances 10K ohms
    1 cristal 16 Mhz
    1 potentiomètre 10K
    1 écran LCD 2 lignes 16 colonnes
    1 LM7805 (permet de passer de 9V en 5V)
    1 Buzzer



    petit schéma de branchement d'un bouton poussoir histoire de faciliter la compréhension


    !!! Attention sur le schéma par manque de place je n'ai représenté qu'un seul bouton, il en manque donc 3 (je suis trop fort en maths), ce schéma est pour un montage avec un ATMEGA 328 ( pour connaitre les numéros des sorties consultez le schéma de fonctionnement de l'ATMEGA 328)!!!

    Pour utiliser directement l'arduino

    Liste du Matériel:
    un Arduino
    4 boutons 3 pour les équipes et 1 pour le menu
    4 résistances 10K ohms
    1 potentiomètre 10K
    1 écran LCD 2 lignes 16 colonnes
    1 Buzzer



    le code à charger se trouve dans mon prochain message à cause de la limite de caractères dans un seul post

    vous pouvez aussi télécharger le fichier pde à charger dans l'arduino ICI



    Fonctionnement du Menu


    Voila mes réalisations







    petites vidéos du fonctionnement

    Mode Standard

    Mode RAZ


    Dernière édition par pic-pac le Ven 28 Mar - 15:05, édité 5 fois
    avatar
    Krispies
    Admin

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

    Re: Tuto Checkpoint avec Arduino

    Message par Krispies le Mer 12 Mar - 20:08

    Un joli tuto que voilà, très complet et bien monté, juste une remarque tu devrais y joindre un petit scénar ou un mode de fonctionnement pour que tous le monde comprenne l'utilité du système en jeu..En fait un descriptif du mode fonctionnement dans une partie... Wink 

    avatar
    pic-pac
    ecrou or
    ecrou or

    Messages : 663
    Date d'inscription : 20/06/2011
    Age : 36
    Localisation : Issoire (63)

    Re: Tuto Checkpoint avec Arduino

    Message par pic-pac le Mer 12 Mar - 20:53

    Voila le code à charger dans l'arduino
    mis à jour le 28/03/2014

    vous pouvez aussi télécharger le fichier pde à charger dans l'arduino ICI

    ceci est la partie 1 (à cause du nombre de caractères possible dans les messages sur le forum, les parties seront à coller bout à bout).

    Code:

    /* Checkpoint Airsoft à base d'arduino
    Merci à Droopaille et à Obélix21 qui m'ont bien aidé pour faire les tests
    et le developpement de ce petit checkpoint*/
    /*To do
     - tester le mode compteur, petit beug au niveau du changement des couleur si on appuie deux fois sur le bouton*/
    #include <LiquidCrystal.h>
       // initialize the library with the numbers of the interface pins
       LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
       // set up the LCD's number of columns and rows:
     const int menuboutton = 4;  
    const int buttonred = 3;
    const int buttonblue = 2;  
    const int buttongreen = 1;
    const int redledPin = 7;      // the number of the LED pin
    const int greenledPin = 5;      // the number of the LED pin
    const int blueledPin = 6;      // the number of the LED pin
    const int speakerPin = 0;
    int buttonStatered = 0;        // variable for reading the pushbutton status
    int buttonStategreen = 0;        // variable for reading the pushbutton status
    int buttonStateblue = 0;        // variable for reading the pushbutton status
    int bouttonmenu = 0;
    int bouttonblue = 0;
    int bouttonred = 0;
    int bouttongreen = 0;
    int dernier_etat_buttonStatered = LOW;
    int dernier_etat_buttonStateblue = LOW;
    int dernier_etat_buttonStategreen = LOW;
    int temps_defini = 3000;
    int redsecond=30, redminute=0, redhour=0; // declare time variables
    int redmillis = 0;
    int greensecond=30, greenminute=0, greenhour=0; // declare time variables
    int greenmillis = 0;
    int bluesecond=30, blueminute=0, bluehour=0; // declare time variables  
    int bluemillis = 0;
    int secondRAZGREEN=30, minuteRAZGREEN=0, hourRAZGREEN=0, millisRAZGREEN= 0; // declare time variables
    int secondRAZRED=30, minuteRAZRED=0, hourRAZRED=0, millisRAZRED=0;  
    int secondRAZBLUE=30, minuteRAZBLUE=0, hourRAZBLUE=0, millisRAZBLUE=0;
    int second=30, minute=0, hour=0;
    int typejeu = 0;
    int redmillis1 = 0;
    int redsecond1 = 0;
    int redminute1 = 0;
    int redhour1 = 0;
    int bluemillis1 = 0;
    int bluesecond1 = 0;
    int blueminute1 = 0;
    int bluehour1 = 0;
    int bleu = 0;
    int rouge = 0;
    int etat_bouton1;
    int etat_bouton2;
    int reset;
    int etat_led1 = LOW;
    int etat_led2 = LOW;
    int etat_redled = LOW;
    int etat_blueled = LOW;
    int etat_greenled = LOW;
        float tempo = temps_defini / 16;
    long debut_appui1;
    long debut_appui2;
    boolean variable1 = false;
    boolean variable2 = false;
    boolean variable3 = false;
    boolean ledStatered = false;
    boolean ledStategreen = false;
    boolean ledStateblue = false;
    unsigned long Timeold=0;
    unsigned long debut_buttonStatered;
    unsigned long debut_buttonStateblue;
    unsigned long debut_buttonStategreen;
    static unsigned long lastTick = 0;

    void setup() { //debut void setup
    pinMode(menuboutton, INPUT);
    pinMode(buttonred, INPUT);
    pinMode(buttonblue, INPUT);
    pinMode(buttongreen, INPUT);
    pinMode(speakerPin, OUTPUT);
    pinMode(redledPin, OUTPUT);
    pinMode(greenledPin, OUTPUT);
    pinMode(blueledPin, OUTPUT);
    digitalWrite(redledPin, LOW);
    digitalWrite(greenledPin, LOW);
    digitalWrite(blueledPin, LOW);
    buttonStatered = digitalRead(buttonred);
    buttonStategreen = digitalRead(buttongreen);
    buttonStateblue = digitalRead(buttonblue);
    bouttonmenu = digitalRead(menuboutton);
                    lcd.begin(16, 2);
                    lcd.clear();
                    lcd.setCursor(2, 0 );
                    lcd.print( "Base Airsoft" );
                    lcd.setCursor( 3, 1 );
                    lcd.print( "GOOD GAME" );
                    delay(2000);
                    lcd.setCursor( 2, 0 );
                    lcd.print( "Base Airsoft" );
                    lcd.setCursor( 3, 1 );
                    lcd.print( "BY PIC-PAC" );
                    delay(2000);
                    lcd.clear();
                    lcd.setCursor( 2, 0 );
                    lcd.print("Mode Standard");
                    lcd.setCursor(1, 1);
                    lcd.print("Appuyez bouton");
                    
    } //end void setup
      void loop() { //debut void loop
            suite();
      } //end void loop
     
    void suite(){ //debut void suite
      
        buttonStatered = digitalRead(buttonred);
          buttonStategreen = digitalRead(buttongreen);
          buttonStateblue = digitalRead(buttonblue);
          bouttonmenu = digitalRead(menuboutton);
                
          if (bouttonmenu == HIGH) {
             menu();
          } //end if
                    else if (typejeu == 1){
             RAZ();
          } //end else if
                    else if (typejeu == 2){
             compteur();
          } //end else if
                    else if (typejeu == 3){
             flag();
          } //end else if
                    else if (typejeu == 4){
             time();
          } //end else if
                    else if (typejeu == 5){
             bouton();
          } //end else if
        else {
             normal();
          } //end else
      
    } //debut void suite

      void menu(){ //debut void
          buttonStatered = digitalRead(buttonred);
          buttonStategreen = digitalRead(buttongreen);
          buttonStateblue = digitalRead(buttonblue);
          bouttonmenu = digitalRead(menuboutton);
      if (digitalRead(menuboutton) == HIGH) {
          delay(500); //on évite de sauter les menus d'un coup
          lcd.clear();
          lcd.setCursor( 6, 0 );
          lcd.print( "MENU" );
          lcd.setCursor( 2, 1 );
          lcd.print("Mode Standard");
          Timeold=millis();
        while(millis()-Timeold<=4000){// on sort du menu si aucune action pendant 4 secondes
          if (digitalRead(buttonblue) == HIGH){
              delay(300);
              lcd.clear();
              lcd.setCursor( 2, 0 );
              lcd.print("Mode Standard");
              lcd.setCursor(1, 1);
              lcd.print("Appuyez bouton");
              typejeu = 0;
              delay(2000);
              normal();
          } //end if

          if (digitalRead(menuboutton) == HIGH) {
              delay(500); //on évite de sauter les menus d'un coup
              lcd.clear();
            lcd.setCursor( 6, 0 );
              lcd.print( "MENU" );
              lcd.setCursor( 4, 1 );
              lcd.print("Mode RAZ");
              Timeold=millis();
              while(millis()-Timeold<=4000){ // on sort du menu si aucune action pendant 4 secondes

          if (digitalRead(buttonblue) == HIGH){
              delay(500);
              lcd.clear();
              lcd.setCursor( 4, 0 );
              lcd.print("Mode RAZ");
              lcd.setCursor(1, 1);
              lcd.print("Appuyez bouton");
              delay(2000);
              typejeu = 1;
              lcd.setCursor(0, 1);
              RAZ();
        } //end if
        
        if (digitalRead(menuboutton) == HIGH) {
              delay(500); //on évite de sauter les menus d'un coup
              lcd.clear();
              lcd.setCursor( 6, 0 );
              lcd.print( "MENU" );
              lcd.setCursor( 2, 1 );
              lcd.print("Mode Compteur");
              Timeold=millis();
              while(millis()-Timeold<=4000){// on sort du menu si aucune action pendant 4 secondes
      
          if (digitalRead(buttonblue) == HIGH){
              delay(500);
              lcd.clear();
              lcd.setCursor( 2, 0 );
              lcd.print("Mode Compteur");
              lcd.setCursor(1, 1);
              lcd.print("Appuyez bouton");
              typejeu = 2;
              delay(2000);
              lcd.setCursor(0, 1);
              lcd.print("                ");
              compteur();
        } //end if
          
          if (digitalRead(menuboutton) == HIGH) {
              delay(500); //on évite de sauter les menus d'un coup
              lcd.clear();
              lcd.setCursor( 6, 0 );
              lcd.print( "MENU" );
              lcd.setCursor( 2, 1 );
              lcd.print("Mode Drapeaux");
              Timeold=millis();
              while(millis()-Timeold<=4000){// on sort du menu si aucune action pendant 4 secondes
      
          if (digitalRead(buttonblue) == HIGH){
              delay(500);
              lcd.clear();
              lcd.setCursor( 2, 0 );
              lcd.print("Mode Drapeaux");
              lcd.setCursor(4, 1);
              lcd.print("By DROOP");
              delay (2000);
              lcd.setCursor( 2, 0 );
              lcd.print("Mode Drapeaux");
              lcd.setCursor(1, 1);
              lcd.print("Appuyez bouton");
              typejeu = 3;
              delay(2000);
              flag();
        } //end if  
       
         if (digitalRead(menuboutton) == HIGH) {
              delay(500); //on évite de sauter les menus d'un coup
              lcd.clear();
              lcd.setCursor( 6, 0 );
              lcd.print( "MENU" );
              lcd.setCursor( 2, 1 );
              lcd.print("Reglage Temps");
              Timeold=millis();
              while(millis()-Timeold<=4000){// on sort du menu si aucune action pendant 4 secondes
      
          if (digitalRead(buttonblue) == HIGH){
              delay(500);
              lcd.clear();
              lcd.setCursor( 1, 0 );
              lcd.print("Reglage Temps");
              lcd.setCursor(0, 1);
              lcd.print("R=sec+ V=0 B=mn+");
              typejeu = 4;
              delay(2000);
              time();
        } //end if
          
          if (digitalRead(menuboutton) == HIGH) {
              delay(500); //on évite de sauter les menus d'un coup
              lcd.clear();
              lcd.setCursor( 6, 0 );
              lcd.print( "MENU" );
              lcd.setCursor( 1, 1 );
              lcd.print("Reglage Bouton");
              Timeold=millis();
              while(millis()-Timeold<=4000){// on sort du menu si aucune action pendant 4 secondes
     
        if (digitalRead(buttonblue) == HIGH){
              delay(500);
              lcd.clear();
              lcd.setCursor( 1, 0 );
              lcd.print("Reglage Bouton");
              lcd.setCursor(0, 1);
              lcd.print("  R = +  V = -  ");
              typejeu = 5;
              delay(2000);
              bouton();
        } //end if
          
          if (digitalRead(menuboutton) == HIGH) {
              delay(500);
              menu();
          } //end if  
    } //end while
    } //end if
    } //end while
    } //end if
    } //end while
    } //end if
    } //end while
    } //end if
    } //end while
    } //end if
    } //end while
    } //end if
    } //end void
    void bouton(){ //debut void
                      
                    if (buttonStatered == HIGH) {
                            lcd.setCursor(0, 1);
                            lcd.print("                ");
                            delay (200);
                            temps_defini = temps_defini +1000 ;
                            lcd.setCursor(5, 1);
                            lcd.print(temps_defini/1000);
                            lcd.print(" Sec");
                            tempo = temps_defini/16;
                      } //end if
                      if (buttonStategreen == HIGH) {
                            lcd.setCursor(0, 1);
                            lcd.print("                ");
                            delay (200);
                            temps_defini = temps_defini -1000 ;
                            lcd.setCursor(5, 1);
                            lcd.print(temps_defini/1000);
                            lcd.print(" Sec");
                            tempo = temps_defini/16;
                      } //end if
    } //end void
    void time(){ //debut void
                  
                    if (buttonStateblue == HIGH) {
                            lcd.setCursor(0, 1);
                            lcd.print("                ");
                            delay (200);
                            minute++;
                            lcd.setCursor(4, 1);
                          if (hour <=9) {
                            lcd.print("0");
                          } //end if
                            lcd.print(redhour, DEC); // the hour, sent to the screen in decimal format
                            lcd.print(":"); // a colon between the hour and the minute
                          if (minute <=9) {
                            lcd.print("0");
                          } //end if
                            lcd.print(minute, DEC); // the minute, sent to the screen in decimal format
                            lcd.print(":"); // a colon between the minute and the second
                          if (second <=9) {
                            lcd.print("0");
                          } //end if
                            lcd.print(second, DEC); // the second, sent to the screen in decimal format
     
                        if (minute >= 59) {
                            if (minute = 59) {
                                hour++;
                                minute = 0;
                            } //end if
                          } //end if
                      } //end if
                      if (buttonStatered == HIGH) {
                            lcd.setCursor(0, 1);
                            lcd.print("                ");
                            static unsigned long millis = 30;
                            millis++;
                            lcd.setCursor(4, 1);
                          if (hour <=9) {
                            lcd.print("0");
                          } //end if
                            lcd.print(redhour, DEC); // the hour, sent to the screen in decimal format
                            lcd.print(":"); // a colon between the hour and the minute
                          if (minute <=9) {
                            lcd.print("0");
                          } //end if
                            lcd.print(minute, DEC); // the minute, sent to the screen in decimal format
                            lcd.print(":"); // a colon between the minute and the second
                          if (second <=9) {
                            lcd.print("0");
                          } //end if
                            lcd.print(second, DEC); // the second, sent to the screen in decimal format
                          if (millis >= 30) {
                            if (millis = 30){
                                second++;
                                millis = 0;
                            } //end if
                          } //end if
                          if (second >= 59) {
                            if (second = 59) {
                                minute++;
                                second = 0;
                            } //end if
                          } //end if
                          if (minute >= 59) {
                            if (minute = 59) {
                                hour++;
                                minute = 0;
                              } //end if
                          } //end if
                      } //end if
     
                    if (buttonStategreen == HIGH) {
                            lcd.setCursor(0, 1);
                            lcd.print("                ");
                            static unsigned long millis = 30;
                            millis--;
                            lcd.setCursor(4, 1);
                          if (hour <=9) {
                            lcd.print("0");
                          } //end if
                            lcd.print(hour, DEC); // the hour, sent to the screen in decimal format
                            lcd.print(":"); // a colon between the hour and the minute
                          if (minute <=9) {
                            lcd.print("0");
                          } //end if
                            lcd.print(minute, DEC); // the minute, sent to the screen in decimal format
                            lcd.print(":"); // a colon between the minute and the second
                          if (second <=9) {
                            lcd.print("0");
                          } //end if
                            lcd.print(second, DEC); // the second, sent to the screen in decimal format
                          if (millis >= 0) {
                              if (millis = 0){
                                  second--;
                                  millis = 30;
                              } //end if
                          } //end if
                          if (second >= 0) {
                              if (second = 0) {
                                  minute--;
                                  second = 59;
                              } //end if
                          } //end if
                          if (minute >= 0) {
                              if (minute = 0) {
                                  hour--;
                                  minute = 59;
                              } //end if
                          } //end if
                      } //end if
     bluesecond = second;
     blueminute = minute;
     bluehour = hour;
     redsecond = second;
     redminute = minute;
     redhour = hour;
     greensecond = second;
     greenminute = minute;
     greenhour = hour;
     secondRAZRED = second;
     minuteRAZRED = minute;
     hourRAZRED = hour;
     secondRAZGREEN = second;
     minuteRAZGREEN = minute;
     hourRAZGREEN = hour;
     secondRAZBLUE = second;
     minuteRAZBLUE = minute;
     hourRAZBLUE = hour;
    }//end void

    void normal(){ //debut void
          
             while (buttonStatered == HIGH) {  
             buttonStatered = digitalRead(buttonred);
               digitalWrite(redledPin, HIGH);
               digitalWrite(greenledPin, LOW);
               digitalWrite(blueledPin, LOW);
               lcd.clear();
               lcd.setCursor(7, 0);
               lcd.print("RED");
               ledStatered = true;
               ledStategreen = false;
               ledStateblue = false;
             }//end while
                    
        if (ledStatered == true){
             if (redmillis > 0) {
                redmillis--;
             }//end if
            
           // decrement one second every 1000 milliseconds
             if (redsecond > 0) {
                                if (millis() - lastTick >= 1000) {
                                  lastTick = millis();
                   redsecond--;
                   redmillis = 9;
                }//end if
             }//end if
             // decrement one minute every 60 seconds
             if (redminute > 0) {
                if (redsecond <= 0) {
                   redminute--;
                   redsecond = 59; // reset seconds to 59
                }//end if
             }//end if
             // decrement one hour every 60 minutes
             if (redhour > 0) {
                if (redminute <= 0) {
                   redhour--;
                   redminute = 59; // reset minutes to 60
                }//end if
             }//end if
             lcd.setCursor(4, 1);
             if (redhour <=9) {
                            lcd.print("0");
                            }
                            lcd.print(redhour, DEC); // the hour, sent to the screen in decimal format
             lcd.print(":"); // a colon between the hour and the minute
             if (redminute <=9) {
                            lcd.print("0");
             }//end if
                            lcd.print(redminute, DEC); // the minute, sent to the screen in decimal format
             lcd.print(":"); // a colon between the minute and the second
             if (redsecond <=9) {
                            lcd.print("0");
             }//end if
             lcd.print(redsecond, DEC); // the second, sent to the screen in decimal format
             lcd.print(" ");
             if (redsecond == 0 && redminute == 0 && redhour == 0) {
                lcd.clear();
                lcd.setCursor(7, 0);
                lcd.print("RED");
                lcd.setCursor(4, 1);
                lcd.print("VICTOIRE");
                digitalWrite(speakerPin, HIGH);//turn on buzzer
                delay(3000);//wait 3 seconds
                digitalWrite(speakerPin, LOW);//turn off buzzer
                delay(3000);//wait 3 seconds
             }//end if
          }//end if
          while (buttonStategreen == HIGH) {  
           // turn LED on:
             digitalWrite(redledPin, LOW);
             digitalWrite(greenledPin, HIGH);
             digitalWrite(blueledPin, LOW);
             lcd.clear();
             lcd.setCursor(6, 0);
             lcd.print("GREEN");
             buttonStategreen = digitalRead(buttongreen);
             ledStatered = false;
             ledStategreen = true;
             ledStateblue = false;
          }//end while
          if (ledStategreen == true){
             if (greenmillis > 0) {
                 greenmillis--;
             }//end if
             // decrement one second
             if (greensecond > 0) {
                if (millis() - lastTick >= 1000) {
                   lastTick = millis();
                   greensecond--;
                   greenmillis = 9;
                }//end if
             }//end if
             // decrement one minute every 60 seconds
             if (greenminute > 0) {
                if (greensecond <= 0) {
                    greenminute--;
                    greensecond = 59; // reset seconds to 60
                }//end if
             }//end if
             // decrement one hour every 60 minutes
             if (greenhour > 0) {
                if (greenminute <= 0) {
                    greenhour--;
                    greenminute = 59; // reset minutes to 60
                }//end if
             }//end if
             lcd.setCursor(4, 1);
             if (greenhour <=9) {
                    lcd.print("0");
             }//end if
             lcd.print(greenhour, DEC); // the hour, sent to the screen in decimal format
             lcd.print(":"); // a colon between the hour and the minute
             if (greenminute <=9) {
                    lcd.print("0");
             }//end if
             lcd.print(greenminute, DEC); // the minute, sent to the screen in decimal format
             lcd.print(":"); // a colon between the minute and the second
             if (greensecond <=9) {
                    lcd.print("0");
             }//end if
             lcd.print(greensecond, DEC); // the second, sent to the screen in decimal format
             lcd.print(" ");
             if (greensecond == 0 && greenminute == 0 && greenhour == 0) {
                lcd.clear();
                lcd.setCursor(6, 0);
                lcd.print("GREEN");
                lcd.setCursor(4, 1);
                lcd.print("VICTOIRE");
                digitalWrite(speakerPin, HIGH);//turn on buzzer
                delay(3000);//wait 3 seconds
                digitalWrite(speakerPin, LOW);//turn off buzzer
                delay(3000);//wait 3 seconds
             }//end if
          }//end if
          while (buttonStateblue == HIGH) {  
           // turn LED on:
             digitalWrite(redledPin, LOW);
             digitalWrite(greenledPin, LOW);
             digitalWrite(blueledPin, HIGH);
             lcd.clear();
             lcd.setCursor(6, 0);
             lcd.print("BLUE");
             buttonStateblue = digitalRead(buttonblue);
             ledStatered = false;
             ledStategreen = false;
             ledStateblue = true;
          }//end while
          if (ledStateblue == true){
             if (bluemillis > 0) {
                 bluemillis--;
             }//end if
             // decrement one second every 1000 milliseconds
             if (bluesecond > 0) {
                 if (millis() - lastTick >= 1000) {
                 lastTick = millis();
                 bluesecond--;
                 bluemillis = 9;
                 }//end if
             }//end if
             // decrement one minute every 60 seconds
             if (blueminute > 0) {
                 if (bluesecond <= 0) {
                     blueminute--;
                     bluesecond = 59; // reset seconds to 60
                }//end if
             }//end if
             // decrement one hour every 60 minutes
             if (bluehour > 0) {
                 if (blueminute <= 0) {
                     bluehour--;
                     blueminute = 59; // reset minutes to 60
                 }//end if
             }//end if
             lcd.setCursor(4, 1);
             if (bluehour <=9) {
                 lcd.print("0");
             }//end if
             lcd.print(bluehour, DEC); // the hour, sent to the screen in decimal format
             lcd.print(":"); // a colon between the hour and the minute
             if (blueminute <=9) {
                 lcd.print("0");
             }//end if
             lcd.print(blueminute, DEC); // the minute, sent to the screen in decimal format
             lcd.print(":"); // a colon between the minute and the second
             if (bluesecond <=9) {
                 lcd.print("0");
             }//end if
                 lcd.print(bluesecond, DEC); // the second, sent to the screen in decimal format
             if (bluesecond == 0 && blueminute == 0 && bluehour == 0) {
                lcd.clear();
                lcd.setCursor(7, 0);
                lcd.print("BLUE");
                lcd.setCursor(4, 1);
                lcd.print("VICTOIRE");
                digitalWrite(speakerPin, HIGH);//turn on buzzer
                delay(3000);//wait 3 seconds
                digitalWrite(speakerPin, LOW);//turn off buzzer
                delay(3000);//wait 3 seconds
             }//end if  
        }//end if
       } //end void

      


    Dernière édition par pic-pac le Ven 28 Mar - 15:07, édité 2 fois
    avatar
    pic-pac
    ecrou or
    ecrou or

    Messages : 663
    Date d'inscription : 20/06/2011
    Age : 36
    Localisation : Issoire (63)

    Re: Tuto Checkpoint avec Arduino

    Message par pic-pac le Jeu 13 Mar - 0:09

    Voila la suite du code à charger dans l'arduino
    mis à jour le 28/03/2014
    ceci est la partie 2 (à cause du nombre de caractères possible dans les messages sur le forum, les parties seront à coller bout à bout).

    Code:
    void RAZ(){ //debut void
          // if it is, the buttonStatered is HIGH:
          while (buttonStatered == HIGH) {  
          buttonStatered = digitalRead(buttonred);
             digitalWrite(redledPin, HIGH);
             digitalWrite(greenledPin, LOW);
             digitalWrite(blueledPin, LOW);
             lcd.clear();
             lcd.setCursor(7, 0);
             lcd.print("RED");
             ledStatered = true;
             ledStategreen = false;
             ledStateblue = false;
          }//end while
          if (ledStatered == true){
             secondRAZGREEN = second;
             secondRAZBLUE = second;
             minuteRAZGREEN = minute;
             minuteRAZBLUE = minute;
             hourRAZGREEN = hour;
             hourRAZBLUE = hour;
             // decrement one second every 1000 milliseconds
             if (secondRAZRED > 0) {
                 if (millis() - lastTick >= 1000) {
                     lastTick = millis();
                     secondRAZRED--;
                 }//end if
             }//end if
             // decrement one minute every 60 seconds
             if (minuteRAZRED > 0) {
                if (secondRAZRED <= 0) {
                   minuteRAZRED--;
                   secondRAZRED = 59; // reset seconds to 59
                }//end if
             }//end if
             // decrement one hour every 60 minutes
             if (hourRAZRED > 0) {
                if (minuteRAZRED <= 0) {
                   hourRAZRED--;
                   minuteRAZRED = 59; // reset minutes to 60
                }//end if
             }//end if
             lcd.setCursor(4, 1);
             if (hourRAZRED <=9) {
                lcd.print("0");
             }//end if
             lcd.print(hourRAZRED, DEC); // the hour, sent to the screen in decimal format
             lcd.print(":"); // a colon between the hour and the minute
             if (minuteRAZRED <=9) {
                lcd.print("0");
             }//end if
             lcd.print(minuteRAZRED, DEC); // the minute, sent to the screen in decimal format
             lcd.print(":"); // a colon between the minute and the second
             if (secondRAZRED <=9) {
                lcd.print("0");
             }//end if
             lcd.print(secondRAZRED, DEC); // the second, sent to the screen in decimal format
             if (secondRAZRED == 0 && minuteRAZRED == 0 && hourRAZRED == 0) {
                lcd.clear();
                lcd.setCursor(7, 0);
                lcd.print("RED");
                lcd.setCursor(4, 1);
                lcd.print("VICTOIRE");
                digitalWrite(speakerPin, HIGH);//turn on buzzer
                delay(3000);//wait 3 seconds
                digitalWrite(speakerPin, LOW);//turn off buzzer
                delay(3000);//wait 3 seconds
             }//end if
          }//end if
          while (buttonStategreen == HIGH) {  
          // turn LED on:
             digitalWrite(redledPin, LOW);
             digitalWrite(greenledPin, HIGH);
             digitalWrite(blueledPin, LOW);
             lcd.clear();
             lcd.setCursor(6, 0);
             lcd.print("GREEN");
             buttonStategreen = digitalRead(buttongreen);
             ledStatered = false;
             ledStategreen = true;
             ledStateblue = false;
          }//end while
          if (ledStategreen == true){
             secondRAZRED = second;
             secondRAZBLUE = second;
             minuteRAZRED = minute;
             minuteRAZBLUE = minute;
             hourRAZRED = hour;
             hourRAZBLUE = hour;
             // decrement one second every 1000 milliseconds
             if (secondRAZGREEN > 0) {
                if (millis() - lastTick >= 1000) {
                   lastTick = millis();
                   secondRAZGREEN--;
                }//end if
             }//end if
             // decrement one minute every 60 seconds
             if (minuteRAZGREEN > 0) {
                if (secondRAZGREEN <= 0) {
                   minuteRAZGREEN--;
                   secondRAZGREEN = 59; // reset seconds to 59
                }//end if
             }//end if
             // decrement one hour every 60 minutes
             if (hourRAZGREEN > 0) {
                if (minuteRAZGREEN <= 0) {
                   hourRAZGREEN--;
                   minuteRAZGREEN = 59; // reset minutes to 60
                }//end if
             }//end if
             lcd.setCursor(4, 1);
             if (hourRAZGREEN <=9) {
                lcd.print("0");
             }//end if
             lcd.print(hourRAZGREEN, DEC); // the hour, sent to the screen in decimal format
             lcd.print(":"); // a colon between the hour and the minute
             if (minuteRAZGREEN <=9) {
                lcd.print("0");
             }//end if
             lcd.print(minuteRAZGREEN, DEC); // the minute, sent to the screen in decimal format
             lcd.print(":"); // a colon between the minute and the second
             if (secondRAZGREEN <=9) {
                lcd.print("0");
             }//end if
             lcd.print(secondRAZGREEN, DEC); // the second, sent to the screen in decimal format
             if (secondRAZGREEN == 0 && minuteRAZGREEN == 0 && hourRAZGREEN == 0) {
                lcd.clear();
                lcd.setCursor(6, 0);
                lcd.print("GREEN");
                lcd.setCursor(4, 1);
                lcd.print("VICTOIRE");
                digitalWrite(speakerPin, HIGH);//turn on buzzer
                delay(3000);//wait 3 seconds
                digitalWrite(speakerPin, LOW);//turn off buzzer
                delay(3000);//wait 3 seconds
             }//end if
          }//end if
          while (buttonStateblue == HIGH) {  
          // turn LED on:
             digitalWrite(redledPin, LOW);
             digitalWrite(greenledPin, LOW);
             digitalWrite(blueledPin, HIGH);
             lcd.clear();
             lcd.setCursor(6, 0);
             lcd.print("BLUE");
             buttonStateblue = digitalRead(buttonblue);
             ledStatered = false;
             ledStategreen = false;
             ledStateblue = true;
          }//end while
          if (ledStateblue == true){
             secondRAZRED = second;
             secondRAZGREEN = second;
             minuteRAZRED = minute;
             minuteRAZGREEN = minute;
             hourRAZRED = hour;
             hourRAZGREEN = hour;
            
          // decrement one second every 1000 milliseconds
             if (secondRAZBLUE > 0) {
                 if (millis() - lastTick >= 1000) {
                    lastTick = millis();
                    secondRAZBLUE--;
                 }//end if
             }//end if
             // decrement one minute every 60 seconds
             if (minuteRAZBLUE > 0) {
                if (secondRAZBLUE <= 0) {
                   minuteRAZBLUE--;
                   secondRAZBLUE = 59; // reset seconds to 59
                }//end if
             }//end if
             // decrement one hour every 60 minutes
             if (hourRAZBLUE > 0) {
                if (minuteRAZBLUE <= 0) {
                   hourRAZBLUE--;
                   minuteRAZBLUE = 59; // reset minutes to 60
                }//end if
             }//end if
             lcd.setCursor(4, 1);
             if (hourRAZBLUE <=9) {
                 lcd.print("0");
             }//end if
             lcd.print(hourRAZBLUE, DEC); // the hour, sent to the screen in decimal format
             lcd.print(":"); // a colon between the hour and the minute
             if (minuteRAZBLUE <=9) {
                lcd.print("0");
             }//end if
             lcd.print(minuteRAZBLUE, DEC); // the minute, sent to the screen in decimal format
             lcd.print(":"); // a colon between the minute and the second
             if (secondRAZBLUE <=9) {
                lcd.print("0");
             }//end if
             lcd.print(secondRAZBLUE, DEC); // the second, sent to the screen in decimal format
             if (secondRAZBLUE == 0 && minuteRAZBLUE == 0 && hourRAZBLUE == 0) {
                lcd.clear();
                lcd.setCursor(7, 0);
                lcd.print("BLUE");
                lcd.setCursor(4, 1);
                lcd.print("VICTOIRE");
                digitalWrite(speakerPin, HIGH);//turn on buzzer
                delay(3000);//wait 3 seconds
                digitalWrite(speakerPin, LOW);//turn off buzzer
                delay(3000);//wait 3 seconds
             }//end if  
       }//end if
       } //end void

    void compteur(){ //debut void
                            
          buttonStatered = digitalRead(buttonred);
             buttonStateblue = digitalRead(buttonblue);
             buttonStategreen = digitalRead(buttongreen);
             int i = 0;
             int j = 0;
                  
          if (buttonStatered == HIGH && dernier_etat_buttonStatered == LOW){    
              debut_buttonStatered = millis();                                    
              ledStatered = false;
                 ledStategreen = false;
                 ledStateblue = false;
                 variable1 = true;
                 variable2 = false;
                 variable3 = false;
                lcd.setCursor(0, 1);
                 lcd.print("                ");
                 lcd.setCursor(0, 1);
                            
                 while(i != 16){     //boucle pour barre de chargement
                       delay(tempo);       //temps à modifier pour changer le temps d'appui sur le bouton
                       lcd.print((char)255);
                       i++;
                       if (digitalRead(buttonred) == LOW){
                           break;
                       }//end if
                 }//end while
                
              while(etat_redled == HIGH){          //etat de la LED pour réafficher le chrono de l'equipe
                        redmillis1++;
                        if (redmillis1 >= 140) {  
                       if (redmillis1 = 140) {
                              redsecond1++;
                              redmillis1 = 0;
                          }//end if
                        }//end if
                        if (redsecond1 >= 59) {
                          if (redsecond1 = 59) {
                              redminute1++;
                              redsecond1= 0;
                          }//end if
                        }//end if
                        if (redminute1 >= 59) {
                          if (redminute1 = 59) {
                              redhour1++;
                              redminute1 = 0;
                          }//end if
                        }//end if
                              lcd.setCursor(0, 1);
                              lcd.print(redhour1, DEC);
                              lcd.print(":");
                         if (redminute1 <=9) {
                              lcd.print("0");
                         }//end if
                              lcd.print(redminute1, DEC);
                              lcd.print(":");
                         if (redsecond1 <=9) {
                              lcd.print("0");
                         }//end if
                              lcd.print(redsecond1, DEC);
                              lcd.print(" ");
                           lcd.setCursor(7, 1);
                              lcd.print("  ");
                              lcd.setCursor(9, 1);
                              lcd.print(bluehour1, DEC);
                              lcd.print(":");
                         if (blueminute1 <=9) {
                              lcd.print("0");
                         }//end if
                              lcd.print(blueminute1, DEC);
                              lcd.print(":");
                         if (bluesecond1 <=9) {
                              lcd.print("0");
                         }//end if
                              lcd.print(bluesecond1, DEC);
                              lcd.print(" ");
                         if (digitalRead(buttonred) == HIGH){
                              delay (100);
                              dernier_etat_buttonStatered = LOW;
                              break;
                         }//end if
                         if (digitalRead(buttonblue) == HIGH){
                              delay (100);
                              dernier_etat_buttonStateblue = LOW;
                              break;
                         }//end if
                         if (digitalRead(buttongreen) == HIGH){
                              delay (100);
                              dernier_etat_buttonStategreen = LOW;
                              break;
                         }//end if
                 }//end while
                
              while (etat_blueled == HIGH){      //etat de la LED pour réafficher le chrono de l'equipe
                         lcd.setCursor(0, 1);
                         lcd.print(redhour1, DEC);
                         lcd.print(":");
                         if (redminute1 <=9) {
                             lcd.print("0");
                         }//end if
                             lcd.print(redminute1, DEC);
                             lcd.print(":");
                         if (redsecond1 <=9) {
                             lcd.print("0");
                         }//end if
                             lcd.print(redsecond1, DEC);
                             lcd.print(" ");
                             bluemillis1++;
                         if (bluemillis1 >= 140) {  
                          if (bluemillis1 = 140) {
                                bluesecond1++;
                                bluemillis1 = 0;
                             }//end if
                         }//end if
                         if (bluesecond1 >= 59) {
                             if (bluesecond1 = 59) {
                                 blueminute1++;
                                 bluesecond1= 0;
                             }//end if
                         }//end if
                         if (blueminute1 >= 59) {
                             if (blueminute1 = 59) {
                                 bluehour1++;
                                 blueminute1 = 0;
                             }//end if
                         }//end if
                         lcd.setCursor(7, 1);
                         lcd.print("  ");
                         lcd.setCursor(9, 1);
                         lcd.print(bluehour1, DEC);
                         lcd.print(":");
                         if (blueminute1 <=9) {
                              lcd.print("0");
                         }//end if
                              lcd.print(blueminute1, DEC);
                              lcd.print(":");
                         if (bluesecond1 <=9) {
                              lcd.print("0");
                         }//end if
                              lcd.print(bluesecond1, DEC);
                              lcd.print(" ");
                      if (digitalRead(buttonred) == HIGH){
                              delay (100);
                              dernier_etat_buttonStatered = LOW;
                              break;
                         }//end if
                         if (digitalRead(buttonblue) == HIGH){
                              delay (100);
                              dernier_etat_buttonStateblue = LOW;
                              break;
                         }//end if
                         if (digitalRead(buttongreen) == HIGH){
                              delay (100);
                              dernier_etat_buttonStategreen = LOW;
                              break;
                         }//end if
                 }//end while                        
             }//end if
     
          if ( variable1 == true && buttonStatered == HIGH && dernier_etat_buttonStatered == HIGH){  
              lcd.setCursor(0, 0);
                 lcd.print("                ");
                 lcd.setCursor(0, 0);
                 lcd.print("RED    /    BLUE");
              digitalWrite(redledPin, HIGH);
                 digitalWrite(greenledPin, LOW);
                 digitalWrite(blueledPin, LOW);
                 ledStatered = true;
                 etat_redled = HIGH;
                 etat_blueled = LOW;
                 etat_greenled = LOW;
          }//end if
             if (ledStatered == true){
                  redmillis1++;
                  lcd.setCursor(0, 1);
                  lcd.print(redhour1, DEC);
                  lcd.print(":");
                 if (redminute1 <=9) {
                     lcd.print("0");
                 }//end if
                 lcd.print(redminute1, DEC);
                 lcd.print(":");
                 if (redsecond1 <=9) {
                    lcd.print("0");
                 }//end if
                    lcd.print(redsecond1, DEC);
                    lcd.print(" ");  
              if (redmillis1 >= 140) {  
                 if (redmillis1 = 140) {
                        redsecond1++;
                        redmillis1 = 0;
                    }//end if
                 }//end if
                 if (redsecond1 >= 59) {
                    if (redsecond1 = 59) {
                        redminute1++;
                        redsecond1 = 0;
                    }//end if
                 }//end if
                 if (redminute1 >= 59) {
                    if (redminute1 = 59) {
                        redhour1++;
                        redminute1 = 0;
                    }//end if
                 }//end if
                 lcd.setCursor(7, 1);
                 lcd.print("  ");
                 lcd.setCursor(9, 1);
                 lcd.print(bluehour1, DEC);
                 lcd.print(":");
                 if (blueminute1 <=9) {
                     lcd.print("0");
                 }//end if
                 lcd.print(blueminute1, DEC);
                 lcd.print(":");
                 if (bluesecond1 <=9) {
                     lcd.print("0");
                 }//end if
                 lcd.print(bluesecond1, DEC);
                 lcd.print(" ");
             }//end if
             dernier_etat_buttonStatered = buttonStatered;
             digitalWrite(redledPin, etat_redled);
      
          if (buttonStateblue == HIGH && dernier_etat_buttonStateblue == LOW){    
              debut_buttonStateblue = millis();                                    
              ledStatered = false;
                 ledStategreen = false;
                 ledStateblue = false;
                 variable1 = false;
                 variable2 = true;
                 variable3 = false;
              lcd.setCursor(0, 1);
                 lcd.print("                ");
                 lcd.setCursor(0, 1);
                 while(j != 16){     //boucle pour barre de chargement
                      delay(tempo);       //temps à modifier pour changer le temps d'appui sur le bouton
                      lcd.print((char)255);
                      j++;
                      if (digitalRead(buttonblue) == LOW){
                      break;
                      }//end if
                 }//end while
                 while(etat_redled == HIGH){          //etat de la LED pour réafficher le chrono de l'equipe
                      redmillis1++;
                      if (redmillis1 >= 140) {  
                      if (redmillis1 = 140) {
                             redsecond1++;
                             redmillis1 = 0;
                         }//end if
                      }//end if
                      if (redsecond1 >= 59) {
                         if (redsecond1 = 59) {
                             redminute1++;
                             redsecond1= 0;
                         }//end if
                      }//end if
                      if (redminute1 >= 59) {
                         if (redminute1 = 59) {
                             redhour1++;
                             redminute1 = 0;
                         }//end if
                      }//end if
                      lcd.setCursor(0, 1);
                      lcd.print(redhour1, DEC);
                      lcd.print(":");
                      if (redminute1 <=9) {
                          lcd.print("0");
                      }//end if
                      lcd.print(redminute1, DEC);
                      lcd.print(":");
                      if (redsecond1 <=9) {
                          lcd.print("0");
                      }//end if
                          lcd.print(redsecond1, DEC);
                          lcd.print(" ");
                       lcd.setCursor(7, 1);
                          lcd.print("  ");
                          lcd.setCursor(9, 1);
                          lcd.print(bluehour1, DEC);
                          lcd.print(":");
                      if (blueminute1 <=9) {
                          lcd.print("0");
                      }//end if
                          lcd.print(blueminute1, DEC);
                          lcd.print(":");
                      if (bluesecond1 <=9) {
                          lcd.print("0");
                      }//end if
                          lcd.print(bluesecond1, DEC);
                          lcd.print(" ");
                      if (digitalRead(buttonred) == HIGH){
                          delay (100);
                          dernier_etat_buttonStatered = LOW;
                          break;
                      }//end if
                      if (digitalRead(buttonblue) == HIGH){
                          delay (100);
                          dernier_etat_buttonStateblue = LOW;
                          break;
                      }//end if
                      if (digitalRead(buttongreen) == HIGH){
                          delay (100);
                          dernier_etat_buttonStategreen = LOW;
                          break;
                      }//end if
                 }//end while
                
              while (etat_blueled == HIGH){      //etat de la LED pour réafficher le chrono de l'equipe
                      lcd.setCursor(0, 1);
                      lcd.print(redhour1, DEC);
                      lcd.print(":");
                      if (redminute1 <=9) {
                         lcd.print("0");
                      }//end if
                      lcd.print(redminute1, DEC);
                      lcd.print(":");
                      if (redsecond1 <=9) {
                         lcd.print("0");
                      }//end if
                      lcd.print(redsecond1, DEC);
                      lcd.print(" ");
                      bluemillis1++;
                      if (bluemillis1 >= 140) {  
                      if (bluemillis1 = 140) {
                             bluesecond1++;
                             bluemillis1 = 0;
                         }//end if
                      }//end if
                      if (bluesecond1 >= 59) {
                         if (bluesecond1 = 59) {
                             blueminute1++;
                             bluesecond1= 0;
                         }//end if
                      }//end if
                      if (blueminute1 >= 59) {
                         if (blueminute1 = 59) {
                             bluehour1++;
                             blueminute1 = 0;
                         }//end if
                      }//end if
                      lcd.setCursor(7, 1);
                      lcd.print("  ");
                      lcd.setCursor(9, 1);
                      lcd.print(bluehour1, DEC);
                      lcd.print(":");
                      if (blueminute1 <=9) {
                          lcd.print("0");
                      }//end if
                      lcd.print(blueminute1, DEC);
                      lcd.print(":");
                      if (bluesecond1 <=9) {
                          lcd.print("0");
                      }//end if
                          lcd.print(bluesecond1, DEC);
                          lcd.print(" ");
                   if (digitalRead(buttonred) == HIGH){
                          delay (100);
                          dernier_etat_buttonStatered = LOW;
                          break;
                      }//end if
                      if (digitalRead(buttonblue) == HIGH){
                          delay (100);
                          dernier_etat_buttonStateblue = LOW;
                          break;
                      }//end if
                      if (digitalRead(buttongreen) == HIGH){
                          delay (100);
                          dernier_etat_buttonStategreen = LOW;
                          break;
                      }//end if
                 }//end while
     }//end if
     
         if ( variable2 == true && buttonStateblue == HIGH && dernier_etat_buttonStateblue == HIGH){  
              lcd.setCursor(0, 0);
                 lcd.print("                ");
                 lcd.setCursor(0, 0);
                 lcd.print("RED    /    BLUE");
                 digitalWrite(redledPin, LOW);
                 digitalWrite(greenledPin, LOW);
                 digitalWrite(blueledPin, HIGH);
                 ledStateblue = true;
                 etat_redled = LOW;
                 etat_blueled = HIGH;
                 etat_greenled = LOW;
            }//end if
            if (ledStateblue == true){
                 lcd.setCursor(0, 1);
                 lcd.print(redhour1, DEC);
                 lcd.print(":");
                 if (redminute1 <=9) {
                     lcd.print("0");
                 }//end if
                     lcd.print(redminute1, DEC);
                     lcd.print(":");
                 if (redsecond1 <=9) {
                     lcd.print("0");
                 }//end if
                 lcd.print(redsecond1, DEC);
                 lcd.print(" ");      
                 bluemillis1++;
                 lcd.setCursor(7, 1);
                 lcd.print("  ");
                 lcd.setCursor(9, 1);
                 lcd.print(bluehour1, DEC);
                 lcd.print(":");
                 if (blueminute1 <=9) {
                     lcd.print("0");
                 }//end if
                 lcd.print(blueminute1, DEC);
                 lcd.print(":");
                 if (bluesecond1 <=9) {
                     lcd.print("0");
                 }//end if
                 lcd.print(bluesecond1, DEC);
                 lcd.print(" ");  
              if (bluemillis1 >= 140) {  
                  if (bluemillis1 = 140) {
                         bluesecond1++;
                         bluemillis1 = 0;
                     }//end if
                 }//end if
                 if (bluesecond1 >= 59) {
                     if (bluesecond1 = 59) {
                         blueminute1++;
                         bluesecond1= 0;
                     }//end if
                 }//end if
                 if (blueminute1 >= 59) {
                     if (blueminute1 = 59) {
                         bluehour1++;
                         blueminute1 = 0;
                     }//end if
                 }//end if
            }//end if
            dernier_etat_buttonStateblue = buttonStateblue;
            digitalWrite(blueledPin, etat_blueled);
      
         if (buttonStategreen == HIGH && dernier_etat_buttonStategreen == LOW){    
              debut_buttonStategreen = millis();                                    
              ledStatered = false;
                 ledStategreen = false;
                 ledStateblue = false;
                 variable1 = false;
                 variable2 = false;
                 variable3 = true;
            }//end if
     
         if ( variable3 == true && buttonStategreen == HIGH && dernier_etat_buttonStategreen == HIGH){  
              if ((millis() - debut_buttonStategreen) >= temps_defini){
                            lcd.clear();
                            lcd.setCursor(7, 0);
                            lcd.print("RAZ");
                            digitalWrite(redledPin, LOW);
                            digitalWrite(greenledPin, HIGH);
                            digitalWrite(blueledPin, LOW);
                            ledStategreen = true;
                            etat_redled = LOW;
                            etat_blueled = LOW;
                            etat_greenled = HIGH;
                 }//end if
             }//end if
            
          if (ledStategreen == true){
                 redmillis1 = 0;
                 redsecond1 = 0;
                 redminute1 = 0;
                 redhour1 = 0;
                 bluemillis1 = 0;
                 bluesecond1 = 0;
                 blueminute1 = 0;
                 bluehour1 = 0;
             }//end if
             dernier_etat_buttonStategreen = buttonStategreen;
             digitalWrite(greenledPin, etat_greenled);
    } //end void

    void flag(){ //debut void
      
        etat_bouton1 = digitalRead(buttonred);
        etat_bouton2 = digitalRead(buttonblue);
        reset = digitalRead(buttongreen);
        
    // Appui bouton ROUGE
        if (etat_bouton1 == HIGH){
              debut_appui1 = millis();
              while(etat_bouton1 == HIGH ){
                    delay (tempo);
                    if (bleu == 0){
                        lcd.print ((char)255);
                    }//end if
                    if (bleu == 1){
                        for (int i = 0; i<17; i++){
                             lcd.setCursor((16-i),1);
                             lcd.print(" ");
                             delay (tempo);
                             etat_bouton1 = digitalRead(buttonred);
                             if (etat_bouton1 == LOW){
                                 Barre();
                                 break;
                             }//end if
                        }//end for
                    }//end if
                    etat_bouton1 = digitalRead(buttonred);
                    if ((millis() - debut_appui1) >= temps_defini && bleu == 0 ){
                         rouge = 1;
                         digitalWrite(redledPin, etat_led1);
                         digitalWrite(blueledPin, etat_led2);
                         etat_led1 = HIGH;
                         etat_led2 = LOW;
                         lcd.setCursor(2,0);
                         lcd.print("RESPAWN ROUGE");
                         lcd.setCursor(0,1);
                    }//end if
                    if ((millis() - debut_appui1) >= temps_defini && bleu == 1 ){
                         bleu = 0;
                         etat_led1 = LOW;                    
                      etat_led2 = LOW;
                         digitalWrite(redledPin, etat_led1);
                         digitalWrite(blueledPin, etat_led2);
                         lcd.setCursor(0, 0 );
                         lcd.print( "                " );
                      lcd.setCursor(5, 0 );
                         lcd.print( "NEUTRE" );    
                      lcd.setCursor(0,1);
                         debut_appui1 = millis();
                    }//end if
              }//end while
        }//end if
                        
    // Appui bouton BLEU
        if (etat_bouton2 == HIGH ){
              debut_appui2 = millis();
              while(etat_bouton2 == HIGH ) {
                    delay (tempo);
                    if (rouge == 0){
                      lcd.print ((char)255);
                    }//end if
                    if (rouge == 1){
                         for (int i = 0; i<17; i++){
                            lcd.setCursor((16-i),1);
                            lcd.print(" ");
                            delay (tempo);
                            etat_bouton2 = digitalRead(buttonblue);
                            if (etat_bouton2 == LOW){
                                Barre();
                                break;
                            }//end if
                         }//end for
                    }//end if
                    etat_bouton2 = digitalRead(buttonblue);
                    if ((millis() - debut_appui2) >= temps_defini && rouge == 0 ){
                         bleu = 1;
                         etat_led1 = LOW;                    
                      etat_led2 = HIGH;
                         digitalWrite(redledPin, etat_led1);
                         digitalWrite(blueledPin, etat_led2);
                         lcd.setCursor(2,0);
                         lcd.print("RESPAWN BLEU ");
                         lcd.setCursor(0,1);
                    }//end if
                    if ((millis() - debut_appui2) >= temps_defini && rouge == 1 ){
                         rouge = 0;
                         etat_led1 = LOW;                    
                      etat_led2 = LOW;
                         digitalWrite(redledPin, etat_led1);
                         digitalWrite(blueledPin, etat_led2);
                         lcd.setCursor(0, 0 );
                         lcd.print( "                " );
                      lcd.setCursor(5, 0 );
                         lcd.print( "NEUTRE" );    
                      lcd.setCursor(0,1);
                         debut_appui2 = millis();
                    }//end if
              }//end while
            
     }//end if


    // Appui bouton RESET
        if (reset == HIGH){
              rouge =0;
              bleu =0;
              etat_led1 = LOW;
              etat_led2 = LOW;
              lcd.clear();
              lcd.setCursor(5, 0 );
              lcd.print( "NEUTRE" );              
           digitalWrite(redledPin, etat_led1);
              digitalWrite(blueledPin, etat_led2);
        }//end if
        lcd.setCursor (0,1);
        if (bleu == 0 && rouge == 0) {lcd.print ("                ");
        }//end if
        else {Barre();
        }//end else
        lcd.setCursor(0,1);
    }//fin LOOP

    void Barre() {
            lcd.setCursor(0,1);
            lcd.print ((char)255);
            lcd.print ((char)255);
            lcd.print ((char)255);
            lcd.print ((char)255);
            lcd.print ((char)255);
            lcd.print ((char)255);
            lcd.print ((char)255);
            lcd.print ((char)255);
            lcd.print ((char)255);
            lcd.print ((char)255);
            lcd.print ((char)255);
            lcd.print ((char)255);
            lcd.print ((char)255);
            lcd.print ((char)255);
            lcd.print ((char)255);
            lcd.print ((char)255);
    }//end void


    Dernière édition par pic-pac le Ven 28 Mar - 14:56, édité 2 fois
    avatar
    Krispies
    Admin

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

    Re: Tuto Checkpoint avec Arduino

    Message par Krispies le Jeu 13 Mar - 10:01

    Ben comme ça c'est parfait!!
    du coup je pense mettre ton tuto sur la page facebook de la krispies team!!Tu es d'accord?

    avatar
    pic-pac
    ecrou or
    ecrou or

    Messages : 663
    Date d'inscription : 20/06/2011
    Age : 36
    Localisation : Issoire (63)

    Re: Tuto Checkpoint avec Arduino

    Message par pic-pac le Jeu 13 Mar - 13:00


    Scénario Airsoft Mode Conquest

    Mode Standard:

    2 équipes Rouge, Vert (au maximum on peut jouer avec 3 équipes Rouge, Vert et Bleu).

    Une Base est mise en place, 2 équipes (ou 3 suivant le nombres d'équipes prévues) doivent capturer cette base et la tenir pendant une durée déterminée par l'administrateur de la partie.
    la première équipe qui capture la base doit appuyer sur le bouton de sa couleur (exemple Rouge), là le compteur de sa couleur commence à se décrémenter. Le compteur va se décrémenter tant que l'équipe (Rouge) tient la base, dès que l'autre équipe (exemple Vert) vient capturer la Base, le compteur de la première équipe (Rouge) se met en pause et le compteur de l'équipe (Vert) commence à se décrémenter. Si la première équipe (Rouge) reprend la Base, le compteur de la deuxième équipe (Vert) se met en pause et le compteur de l'équipe (Rouge) reprend à se décrémenter la ou il s'était arrêté.

    La première équipe à tenir la Base pendant toute la durée définie (en une seule fois ou en plusieurs) gagne la partie.

    Mode RAZ:

    2 équipes Rouge, Vert (au maximum on peut jouer avec 3 équipes Rouge, Vert et Bleu).

    Une Base est mise en place, 2 équipes (ou 3 suivant le nombres d'équipes prévues) doivent capturer cette base et la tenir pendant une durée déterminée par l'administrateur de la partie (mais en une seule fois).

    la première équipe qui capture la base doit appuyer sur le bouton de sa couleur (exemple Rouge), là le compteur de sa couleur commence à se décrémenter. Le compteur va se décrémenter tant que l'équipe (Rouge) tient la base, dès que l'autre équipe (exemple Vert) vient capturer la Base, le compteur de la première équipe (Rouge) s'arrête et le compteur de l'équipe (Vert) commence à se décrémenter. Si la première équipe (Rouge) reprend la Base, le compteur de la deuxième équipe (Vert) s'arrête et le compteur de l'équipe (Rouge) reprend à se décrémenter depuis le début.

    La première équipe à tenir la Base pendant toute la durée définie (en une seule fois) gagne la partie.

    Mode Compteur:

    2 équipes Rouge, Bleu (le Bouton Vert est pour un espion).

    Une Base est mise en place, 2 équipes doivent la capturer. La première équipe qui capture la base doit appuyer sur le bouton de sa couleur (exemple Rouge) temps d'appui sur le bouton défini par l'administrateur, là le compteur de sa couleur commence à s'incrémenter. Le compteur va s'incrémenter tant que l'équipe (Rouge) tient la base, dès que l'autre équipe (exemple Bleu) vient capturer la Base, le compteur de la première équipe (Rouge) s'arrête et le compteur de l'équipe (Bleu) commence à s'incrémenter. Si la première équipe (Rouge) reprend la Base, le compteur de la deuxième équipe (Bleu) s'arrête et le compteur de l'équipe (Rouge) reprend à s'incrémenter là ou il s'était arrêté.

    L'équipe à tenir la Base le plus longtemps sur un temps impartie gagne la partie.

    !!!Attention le Bouton Vert remet les compteurs à Zéro!!!

    J'ai pour l'instant 2 Bases, mais je vais m'en faire d'autres afin d'avoir au moins 4 ou 5 Checkpoints à jouer se qui permet après aux équipes de s'affronter sur une surface plus grande.

    Voila c'est des scénarios très simples et très basiques mais assez simple à mettre en place et plus sympa que de lever un drapeau (que des fois on oublie de changer de couleur)


    Dernière édition par pic-pac le Ven 28 Mar - 14:55, édité 1 fois
    avatar
    droopaille
    boulon platine
    boulon platine

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

    Re: Tuto Checkpoint avec Arduino

    Message par droopaille le Sam 22 Mar - 17:21

    je me rend compte que sur ton schéma tu indiques le câblage pour un Atmega mais pas pour l'Arduino, du coup je vois pas comment câbler mon montage


    _________________
    Toutes mes créations
    avatar
    obelix21
    ecrou argent
    ecrou argent

    Messages : 351
    Date d'inscription : 06/05/2013

    Re: Tuto Checkpoint avec Arduino

    Message par obelix21 le Sam 22 Mar - 18:58

    ça devrait t'aider un peu

    avatar
    pic-pac
    ecrou or
    ecrou or

    Messages : 663
    Date d'inscription : 20/06/2011
    Age : 36
    Localisation : Issoire (63)

    Re: Tuto Checkpoint avec Arduino

    Message par pic-pac le Sam 22 Mar - 19:16

    et voila dites moi si vous comprenez mieux

    avatar
    droopaille
    boulon platine
    boulon platine

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

    Re: Tuto Checkpoint avec Arduino

    Message par droopaille le Sam 22 Mar - 19:51

    carrément
    merci
    demain je sors ma première base




    _________________
    Toutes mes créations
    avatar
    pic-pac
    ecrou or
    ecrou or

    Messages : 663
    Date d'inscription : 20/06/2011
    Age : 36
    Localisation : Issoire (63)

    Re: Tuto Checkpoint avec Arduino

    Message par pic-pac le Sam 22 Mar - 20:33

    cool j'ai hâte de voir ça
    avatar
    freeman83
    boulon d'argent
    boulon d'argent

    Messages : 1229
    Date d'inscription : 23/06/2012
    Age : 38
    Localisation : Rougiers / Var

    Re: Tuto Checkpoint avec Arduino

    Message par freeman83 le Sam 22 Mar - 23:18

    vous me donnez envie avec vos réalisation a base d'arduino, du coup je vais m'y lancer je potasse les cours en ce moment et je suis en attende de trouver le kit de demarrage pour bien commencer.

    ou as tu trouver ton materiel?
    avatar
    obelix21
    ecrou argent
    ecrou argent

    Messages : 351
    Date d'inscription : 06/05/2013

    Re: Tuto Checkpoint avec Arduino

    Message par obelix21 le Sam 22 Mar - 23:45

    voilà mon clone Checkpoint Picpac

    avatar
    droopaille
    boulon platine
    boulon platine

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

    Re: Tuto Checkpoint avec Arduino

    Message par droopaille le Dim 23 Mar - 10:01



    _________________
    Toutes mes créations
    avatar
    obelix21
    ecrou argent
    ecrou argent

    Messages : 351
    Date d'inscription : 06/05/2013

    Re: Tuto Checkpoint avec Arduino

    Message par obelix21 le Dim 23 Mar - 10:23

    il y a la moitié des trucs qui te serviront pas.
    avatar
    pic-pac
    ecrou or
    ecrou or

    Messages : 663
    Date d'inscription : 20/06/2011
    Age : 36
    Localisation : Issoire (63)

    Re: Tuto Checkpoint avec Arduino

    Message par pic-pac le Dim 23 Mar - 10:47

    je suis content comme tout, super bonne idée les boutons qui s'allument je pense que ça va tenter Droop lui qui voulait rajouter des LED rapport à mon projet (elles sont déclarées dans le code mais moi je n'en ai pas l'utilité donc je ne les ai pas mises).

    pour Freeman83, n’hésite pas à te lancer c'est terrible comme truc, et puis sur Google tu trouves tout ce que tu as besoin et nous sommes la pour t'aider.

    je pense que l'on va demander une création d'un espace purement Arduino sur le forum afin de pouvoir s'entraider et aider ceux qui voudraient se lancer mais n'ose pas trop franchir le pas en mettant des petits tutos simple qu'on peut trouver sur le net comme le "hello world" ou autre allumage de LED.
    avatar
    obelix21
    ecrou argent
    ecrou argent

    Messages : 351
    Date d'inscription : 06/05/2013

    Re: Tuto Checkpoint avec Arduino

    Message par obelix21 le Dim 23 Mar - 11:03

    c'est vrai que l'arduino semble plaire à beaucoup de monde, un petit coin realisations arduino serait peut-etre bien.
    avatar
    droopaille
    boulon platine
    boulon platine

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

    Re: Tuto Checkpoint avec Arduino

    Message par droopaille le Dim 23 Mar - 11:35

    LOL, oui j'ai déjà demandé l'origine des boutons en MP


    Sinon, ayé moi aussi j'ai fini ma base (enfin la partie test).

    Par contre j'ai pleins de remarques :
    - jeu RAZ = jeu STANDARD
    - jeu COMPTEUR ne fonctionne pas
    - une fois la victoire déclarée en STANDARD, pas de possibilité de recommencer, il faut reserté la carte
    - d'autres trucs bizarres mais j'ai pas tout réussi à reproduire



    _________________
    Toutes mes créations
    avatar
    pic-pac
    ecrou or
    ecrou or

    Messages : 663
    Date d'inscription : 20/06/2011
    Age : 36
    Localisation : Issoire (63)

    Re: Tuto Checkpoint avec Arduino

    Message par pic-pac le Dim 23 Mar - 11:43

    oui les trucs bizarres ont a vu en MP avec Obelix, c'est parce que tu sors du "Menu", il faut reset la carte après chaque parties, si tu lances le chrono au début, il faudra reset avant de rentrer dans le "Menu" car sinon ça va te causer des soucis dès qu'il sort du "Menu" au bout de 4 secondes d'inactivités.
    chez moi le mode compteur fonctionne bien, et le mode standard et RAZ sont 2 types de jeu différent l'un remet le compteur à Zéro et l'autre non.
    avatar
    droopaille
    boulon platine
    boulon platine

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

    Re: Tuto Checkpoint avec Arduino

    Message par droopaille le Dim 23 Mar - 12:01

    pic-pac a écrit:oui les trucs bizarres ont a vu en MP avec Obelix, c'est parce que tu sors du "Menu", il faut reset la carte après chaque parties, si tu lances le chrono au début, il faudra reset avant de rentrer dans le "Menu" car sinon ça va te causer des soucis dès qu'il sort du "Menu" au bout de 4 secondes d'inactivités.

    désolé, j'ai rien compris

    résumons :
    - en fin de partie, on doit reset la carte : peux t'on mettre un bouton externe pour le faire ? (à clé par exemple, ou utiliser un on/off, ça reset d'office j'imagine)
    - si 4s d'inactivité, le menu s'arrête ? et il valide le mode sur lequel il était ?
    - à un moment, j'ai un espèce de décompteur qui démarre mais avec le message "mode compteur" en arrière plan (en fait il efface pas et il reste des lettres derrière le compteur
    je vais essayer de faire des vid

    je retrouve plus les explications de l'utilisation à part le schéma synoptique

    tant que j'y suis, j'ai essayé de brancher la carte en 9v et l'écran faisait que de la merde. C'est la carte qui régule le power en 5V ?

    sinon, le schéma de câblage avec la carte est carrément plus clair et pratique.


    _________________
    Toutes mes créations
    avatar
    pic-pac
    ecrou or
    ecrou or

    Messages : 663
    Date d'inscription : 20/06/2011
    Age : 36
    Localisation : Issoire (63)

    Re: Tuto Checkpoint avec Arduino

    Message par pic-pac le Dim 23 Mar - 12:15

    1/ oui, sur ton arduino tu as le bouton reset sinon quand tu fais ton montage il vaut mieux mettre un interrupteur pour éviter de devoir retirer la pile à chaque fois.
    2/ oui, c'est juste que si tu as lancer le premier chrono, après 4 secondes d'inactivité il relance le chrono et t’écris des trucs bizarres, donc il vaut mieux rebooter et rentrer dans le menu après.
    3/ c'est la conséquence du problème 2.

    je ne me sert pas de la pile 9V avec l'arduino, je ne m'en sert qu'en USB.
    mais normalement la carte doit réguler le power en 5v.
    avatar
    obelix21
    ecrou argent
    ecrou argent

    Messages : 351
    Date d'inscription : 06/05/2013

    Re: Tuto Checkpoint avec Arduino

    Message par obelix21 le Dim 23 Mar - 12:25

    je suis en 9v et pas de problème, tu as bien mis l'ecran en 3,3v pas en 5v!!!
    avatar
    pic-pac
    ecrou or
    ecrou or

    Messages : 663
    Date d'inscription : 20/06/2011
    Age : 36
    Localisation : Issoire (63)

    Re: Tuto Checkpoint avec Arduino

    Message par pic-pac le Dim 23 Mar - 13:18

    moi l’écran est en 5V, et aucun soucis
    avatar
    droopaille
    boulon platine
    boulon platine

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

    Re: Tuto Checkpoint avec Arduino

    Message par droopaille le Dim 23 Mar - 19:17

    non l'écran est en 5V

    première partie du projet terminée
    je créé un sujet dès que la vid est uploadée


    _________________
    Toutes mes créations
    avatar
    obelix21
    ecrou argent
    ecrou argent

    Messages : 351
    Date d'inscription : 06/05/2013

    Re: Tuto Checkpoint avec Arduino

    Message par obelix21 le Dim 23 Mar - 19:22

    ben c'est marrant moi je l'ai mis en 3v3 et ça fonctionne du tonerre.

    Contenu sponsorisé

    Re: Tuto Checkpoint avec Arduino

    Message par Contenu sponsorisé


      La date/heure actuelle est Jeu 19 Oct - 18:04