#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define Relais_ERROR 600
#define TIME_INTERVAL 3000
//Variable à afficher par LCD des heures:minutes:secondes
int heures = 0, minutes = 0, secondes = 0;
int btn_Heure = 2; //Bouton poussoir des heures
bool etatBtnHeure;
int btn_Minute = 3; ///Bouton poussoir des minutes
bool etatBtnMinute;
int btn_Seconde = 4; //Bouton poussoir des secondes
bool etatBtnSeconde;
int nouveau = 0;
int btn_Start = 5;
int aux;
int time_Start;
int Relais = 6;
void setup()
{
lcd.init(); lcd.backlight();
// lcd.begin(16, 2); // Configuramos el numero de columnas y filas del LCD.
pinMode(btn_Heure, INPUT); //Pin de pulsador de horas --> Entrada
pinMode(btn_Minute, INPUT); //Pin de pulsador de minutos --> Entrada
pinMode(btn_Seconde, INPUT); //Pin de pulsador de segundos --> Entrada
pinMode(btn_Start, INPUT);
pinMode(Relais, OUTPUT);
lcd.setCursor(0, 0);
lcd.print("Timer with");
lcd.setCursor(1, 1);
lcd.print("Arduino + LCD");
delay(1000);
lcd.clear();
}
void loop()
{
etatBtnHeure = digitalRead(btn_Heure);
etatBtnMinute = digitalRead(btn_Minute);
etatBtnSeconde = digitalRead(btn_Seconde);
time_Start = digitalRead(btn_Start);
if (nouveau == 0) {
lcd.setCursor(0, 0);
lcd.print("Entrez l'heure");
lcd.setCursor(1, 1);
lcd.print(heures);
lcd.print(":");
lcd.print(minutes);
lcd.print(":");
lcd.print(secondes);
lcd.print(":");
delay(200);
//lcd.clear();
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
if (etatBtnHeure == HIGH) {
heures = heures + 1;
if (heures >= 59) {
heures = 0;
}
} else {
heures = heures;
}
while (etatBtnHeure) etatBtnHeure = digitalRead(btn_Heure);
if (etatBtnMinute == HIGH) {
minutes = minutes + 1;
if (minutes >= 59) {
minutes = 0;
}
} else {
minutes = minutes;
}
while (etatBtnMinute) etatBtnMinute = digitalRead(btn_Minute);
if (etatBtnSeconde == HIGH) {
secondes = secondes + 1;
if (secondes >= 59) {
secondes = 0;
}
} else {
secondes = secondes;
}
while (etatBtnSeconde) etatBtnSeconde = digitalRead(btn_Seconde);
if (time_Start == HIGH) {
nouveau = 1;
} else {
nouveau = 0;
}
while (time_Start) time_Start = digitalRead(btn_Start);
} else if (nouveau == 1) {
lcd.setCursor(0, 0);
lcd.print("Commencer");
lcd.setCursor(1, 1);
lcd.print(heures);
lcd.print(":");
lcd.print(minutes);
lcd.print(":");
lcd.print(secondes);
lcd.print(":");
delay(200);
if (secondes == 0) {
if (minutes != 0) {
secondes = 59;
}
if (minutes <= 0) {
minutes = 0;
} else {
minutes = minutes - 1;
}
if (minutes == 0) {
if (heures != 0) {
minutes = 59;
}
if (heures <= 0) {
heures = 0;
} else {
heures = heures - 1;
}
if (heures == 0) {
if (minutes == 0) {
if (secondes == 0) {
nouveau = 2;
}
}
}
}
} else {
secondes = secondes - 1;
delay(1000);
}
}
else if (nouveau == 2) {
lcd.setCursor(0, 0);
lcd.print("Fin");
digitalWrite(Relais, HIGH);
tone(Relais, 2000, 1000);
delay(1000);
digitalWrite(Relais, LOW);
delay(1000);
nouveau = 0;
secondes = 0;
minutes = 0;
heures = 0;
}
}