#include <LiquidCrystal_I2C.h>
#define BUTTON_B 9
#define BUTTON_Y 4
LiquidCrystal_I2C LCD(0x27,16,2);
unsigned long startTime = 0; // Heure de début du timer
unsigned long timerDuration = 5000; // Durée du timer en millisecondes (par exemple, 5 secondes)
bool timerActive = false; // Indicateur d'activation du timer
int y = -1;
int x = -1;
int d = 0;
int u = 0;
int t = 0;
int input = true;
int time = 0;
void setup() {
Serial.begin(9600);
LCD.init(); // initialisation de l'afficheur
LCD.backlight();
// initialisation du temps d'attente
pinMode(5,OUTPUT); //règle la borne numérique numéro 1 de la carte Arduino en mode sortie
pinMode(7,OUTPUT); //règle la borne numérique numéro 1 de la carte Arduino en mode sortie
pinMode(BUTTON_B, INPUT_PULLUP);
pinMode(BUTTON_Y, INPUT_PULLUP);
};
int lastStateb = HIGH;
int lastStatey = HIGH;
void loop() {
if (input == true){
while (input == true) {
// delay(1000);
// input = input + 1;
Serial.println(input);
// bouton menu bleu
int valueb = digitalRead((BUTTON_B));
int valuey = digitalRead((BUTTON_Y));
if (lastStateb != valueb) {
lastStateb = valueb;
if (valueb == HIGH) {
t = t + 10;
Serial.println(d);
timerActive = false;
unsigned long timerDuration = 5000; // Durée du timer en millisecondes (par exemple, 5 secondes)
startTime = millis(); // Démarrez le timer
timerActive = true;
}
}
if (lastStatey != valuey) {
lastStatey = valuey;
if (valuey == HIGH) {
t = t + 1;
Serial.println(u);
timerActive = false;
unsigned long timerDuration = 5000; // Durée du timer en millisecondes (par exemple, 5 secondes)
startTime = millis(); // Démarrez le timer
timerActive = true;
}
}
LCD.setCursor(1, 0);
LCD.print("passage : " + String(t) + "s");
if (timerActive) {
// Calculer le temps écoulé depuis le début du timer
unsigned long currentTime = millis();
unsigned long elapsedTime = currentTime - startTime;
if (elapsedTime >= timerDuration) {
timerActive = false;
input = false;
break;
}}
}
}
y = t;
x = y + 3 ;
int n = y/2;
int xb = x;
int yb = y;
int nb = n;
LCD.setCursor(1, 0);
LCD.print("Temps d'attente:");
// put your main code here, to run repeatedly:
while (x != -1){
LCD.setCursor(8, 1);
LCD.print(String(x) + " s ");
digitalWrite(7,HIGH);
delay(1000);
x = x -1;
}
x = xb;
LCD.setCursor(8, 1);
LCD.print("-");
digitalWrite(7,LOW);
while (n != -1){
LCD.setCursor(0, 0);
LCD.print("----CIRCULEZ----");
LCD.setCursor(8, 1);
LCD.print("( " + String(n)+" c)");
digitalWrite(5,HIGH);
delay(1000);
digitalWrite(5,LOW);
delay(1000);
n = n -1;
}
n = nb;
}