Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Wire.h>
- #include <LiquidCrystal_I2C.h>
- LiquidCrystal_I2C lcd(0x20,16,2); // set the LCD address to 0x20(Cooperate with 3 short circuit caps) for a 16 chars and 2 line display
- //indication des variables globales
- const int rouge_bouton = 2; //le bouton rouge est connecté à l'entrée 2
- const int rouge_led = 3; //la LED rouge est connectée à l'entrée 3
- const int vert_bouton = 8;
- const int vert_led = 9;
- const int bleu_bouton = 11;
- const int bleu_led = 12;
- long vert_temps = 0;
- long vert_temps_minutes = 0;
- long vert_temps_secondes = 0;
- long rouge_temps = 0;
- long rouge_temps_minutes = 0;
- long rouge_temps_secondes = 0;
- boolean appui = 0;
- boolean basculement = 0;
- boolean en_partie = 0;
- int decompte = 3000; //decompte lors du changement de camp
- int static camp_actuel = 0; //0 = neutre, 1=vert, 2 = rouge
- int static camp_precedent = 0; //0 = neutre, 1=vert, 2 = rouge
- String toto="";
- void setup()
- // initialise les entrée et sorties
- {
- pinMode(rouge_led, OUTPUT); //la led est une sortie
- pinMode(rouge_bouton, INPUT); //le bouton est une entrée
- pinMode(vert_led, OUTPUT);
- pinMode(vert_bouton, INPUT);
- pinMode(bleu_led, OUTPUT);
- pinMode(bleu_bouton, INPUT);
- //GESTION DE L'ECRAN LCD//
- lcd.init();
- lcd.backlight();
- lcd.home();
- lcd.setCursor(2, 0);
- lcd.print("La Sabliere");
- lcd.setCursor(1, 1);
- lcd.print("Mode CONQUETE");
- }
- void loop()
- {
- /* Variables locales de gestion du temps */
- static unsigned long temps_precedent = 0; // Temps antérieur
- static unsigned long temps_appui = 0; // Temps lors de l'appui sur un bouton
- unsigned long temps_actuel = millis(); // Temps actuel
- if (temps_actuel - temps_precedent >= 1000) //on réalise un tour par seconde
- {
- if (en_partie ==0)
- {
- digitalWrite(bleu_led,LOW);
- digitalWrite(vert_led,HIGH);
- digitalWrite(rouge_led,HIGH);
- if (digitalRead(bleu_bouton) == LOW)
- {
- delay (3000);
- if (digitalRead(bleu_bouton) == LOW)
- {
- en_partie = 1;
- vert_temps = 0;
- rouge_temps = 0;
- toto = "vert_led";
- digitalWrite(toto,LOW); //extinction de la lampe verte
- digitalWrite(rouge_led,LOW); //extinction de la lampe rouge
- basculement = 0;
- camp_actuel = 0;
- appui = 0;
- lcd.clear();
- lcd.setCursor(4, 0);
- lcd.print("OBJECTIF");
- lcd.setCursor(5, 1);
- lcd.print("NEUTRE");
- }
- }
- if(digitalRead(vert_bouton) == LOW)
- {
- lcd.clear();
- lcd.setCursor(1, 0);
- lcd.print("Temps.Eq.VERTE");
- lcd.setCursor(5, 1);
- lcd.print(vert_temps_minutes);
- lcd.print("min");
- lcd.print(vert_temps_secondes);
- lcd.print("s");
- }
- if(digitalRead(rouge_bouton) == LOW)
- {
- lcd.clear();
- lcd.setCursor(1, 0);
- lcd.print("Temps.Eq.ROUGE");
- lcd.setCursor(5, 1);
- lcd.print(rouge_temps_minutes);
- lcd.print("min");
- lcd.print(rouge_temps_secondes);
- lcd.print("s");
- }
- }
- if (en_partie == 1)
- {
- digitalWrite(bleu_led,HIGH);
- if (digitalRead(vert_bouton) != LOW && digitalRead(rouge_bouton) != LOW && digitalRead(bleu_bouton) != LOW) //si aucun des boutons n'est appuyé, on réinitialise l'appui et l'affichage du décompte
- {
- appui = 0;
- lcd.setCursor(15, 0);
- lcd.print(" ");
- }
- if (digitalRead(bleu_bouton) == LOW)
- {
- delay (3000);
- if (digitalRead(bleu_bouton) == LOW)
- {
- en_partie = 0;
- lcd.clear();
- lcd.setCursor(2, 0);
- lcd.print("La Sabliere");
- lcd.setCursor(1, 1);
- lcd.print("Mode CONQUETE");
- }
- }
- //***GESTION DES BOUTONS DE CHANGEMENT DE CAMP***//
- //CAMP NEUTRE
- if(camp_actuel == 2 && digitalRead(vert_bouton) == LOW && digitalRead(rouge_bouton) != LOW || camp_actuel == 1 && digitalRead(rouge_bouton) == LOW && digitalRead(vert_bouton) != LOW )
- {
- if (appui == 0)
- {
- appui = 1;
- temps_appui = temps_actuel;
- }
- if (temps_actuel < temps_appui + decompte)
- {
- lcd.setCursor(15, 0);
- lcd.print((temps_appui + decompte - temps_actuel)/1000);
- }
- else if((temps_actuel > temps_appui + decompte) && appui==1 )
- {
- digitalWrite(vert_led,LOW); //extinction de la lampe verte
- digitalWrite(rouge_led,LOW); //extinction de la lampe rouge
- basculement = 0;
- camp_actuel = 0;
- appui = 0;
- lcd.clear();
- lcd.setCursor(4, 0);
- lcd.print("OBJECTIF");
- lcd.setCursor(5, 1);
- lcd.print("NEUTRE");
- }
- }
- //CAMP VERT
- else if(camp_actuel != 1 && digitalRead(vert_bouton) == LOW && digitalRead(rouge_bouton) != LOW && camp_actuel ==0)
- {
- if (appui == 0)
- {
- appui = 1;
- temps_appui = temps_actuel;
- }
- if (temps_actuel < temps_appui + decompte)
- {
- lcd.setCursor(15, 0);
- lcd.print((temps_appui + decompte - temps_actuel)/1000);
- }
- else if((temps_actuel >= temps_appui + decompte) && appui ==1)
- {
- basculement = 0;
- camp_actuel = 1;
- appui = 0;
- digitalWrite(vert_led,HIGH);
- digitalWrite(rouge_led,LOW);
- lcd.clear();
- lcd.setCursor(2, 0);
- lcd.print("Equipe VERTE");
- }
- }
- //CAMP ROUGE
- if(camp_actuel != 2 && digitalRead(vert_bouton) != LOW && digitalRead(rouge_bouton) == LOW && camp_actuel ==0)
- {
- if (appui == 0)
- {
- appui = 1;
- temps_appui = temps_actuel;
- }
- if (temps_actuel < temps_appui + decompte)
- {
- lcd.setCursor(15, 0);
- lcd.print((temps_appui + decompte - temps_actuel)/1000);
- }
- else if((temps_actuel >= temps_appui + decompte) && appui ==1)
- {
- basculement = 0;
- camp_actuel = 2;
- appui = 0;
- digitalWrite(vert_led,LOW);
- digitalWrite(rouge_led,HIGH);
- //rouge_temps = rouge_temps;
- lcd.clear();
- lcd.setCursor(2, 0);
- lcd.print("Equipe ROUGE");
- }
- }
- //***GESTION DU TEMPS***//
- //CAMP VERT
- if (camp_actuel==1 && digitalRead(bleu_bouton) != LOW)
- {
- if (basculement == 0)
- {
- basculement = 1;
- }
- else
- {
- vert_temps = vert_temps +1;
- }
- if (vert_temps%60==0)
- {
- vert_temps_minutes = vert_temps/60;
- lcd.clear();
- lcd.setCursor(2, 0);
- lcd.print("Equipe VERTE");
- }
- vert_temps_secondes = vert_temps - vert_temps_minutes * 60;
- lcd.setCursor(5, 1);
- lcd.print(vert_temps_minutes);
- lcd.print("min");
- lcd.print(vert_temps_secondes);
- lcd.print("s");
- }
- //CAMP ROUGE
- if (camp_actuel==2 && digitalRead(bleu_bouton) != LOW)
- {
- if (basculement == 0)
- {
- basculement = 1;
- }
- else
- {
- rouge_temps = rouge_temps +1;
- }
- if (rouge_temps%60==0)
- {
- rouge_temps_minutes = rouge_temps/60;
- lcd.clear();
- lcd.setCursor(2, 0);
- lcd.print("Equipe ROUGE");
- }
- rouge_temps_secondes = rouge_temps - rouge_temps_minutes * 60;
- lcd.setCursor(5, 1);
- lcd.print(rouge_temps_minutes);
- lcd.print("min");
- lcd.print(rouge_temps_secondes);
- lcd.print("s");
- }
- temps_precedent = temps_actuel;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement