edit; ah tu veux dire que je peut retirer de chaque bouton AfficheMenu(); je comprend nikel
sa marche
tu cartonne !!! j ai passer une bonne partie de mon weekend dessus
par contre j ai pas trop compris ou et comment tu veut que je mette
if ( millis() > Tempo ) { (juste avant l'accolade fermante)
code modifier
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int ventilo = 6;
int sonde = 7;
int relais = 8;
int Tmin = 20;
int Tmax= 25;
int Hmin = 20;
int Hmax = 25;
int heure = 1;
int minute = 1;
int unsigned Menu = 0;
int unsigned SousMenu = 0;
double Tempo = millis();
double Tempo2 = 0;
int test1 = 0;
int test2 = 0;
int test3 = 0;
int SELECT = A0;
int UP = A1;
int DOWN = A2;
int LEFT = A3;
int RIGHT = A4;
typedef struct {
String Menu;
}
TypeMenu;
TypeMenu NumMenu[100];
void Initialisation() {
NumMenu[10] = (TypeMenu) {
"1. Home "
};
NumMenu[20] = (TypeMenu) {
"2. Temperature"
};
NumMenu[21] = (TypeMenu) {
"Temp Min " +String(Tmin) + " c"
};
NumMenu[22] = (TypeMenu) {
"Temp Max " +String(Tmax) + " c"
};
NumMenu[30] = (TypeMenu) {
"3. Humiditer"
};
NumMenu[31] = (TypeMenu) {
"Humid Min " +String(Hmin) + "%"
};
NumMenu[32] = (TypeMenu) {
"Humid Max " +String(Hmax) + "%"
};
NumMenu[40] = (TypeMenu) {
"4. Heure"
};
NumMenu[41] = (TypeMenu) {
"4.1 Reglage"
};
NumMenu[42] = (TypeMenu) {
"4.2 Reglage heure"
};
}
void setup() {
pinMode(ventilo, OUTPUT);
pinMode(sonde, OUTPUT);
pinMode(relais, OUTPUT);
Serial.begin(9600);
Initialisation();
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" * TUTORIEL * ");
lcd.setCursor(0, 1);
lcd.print(Tmax);
delay(2000);
pinMode(SELECT, INPUT_PULLUP);
pinMode(UP, INPUT_PULLUP);
pinMode(DOWN, INPUT_PULLUP);
pinMode(LEFT, INPUT_PULLUP);
pinMode(RIGHT, INPUT_PULLUP);
}
void loop() {
Regul();
humi();
heurefunc();
bouton();
}
void bouton() {
if ( millis() > Tempo ) {
if (digitalRead(LEFT) == LOW) { /* Bouton LEFT */
SousMenu++;
Tempo = millis() + 250;
} else if (digitalRead(DOWN) == LOW) { /* Bouton Down */
Menu = Menu - 10;
Tempo = millis() + 250;
SousMenu = 0 ;
} else if (digitalRead(UP) == LOW) { /* Bouton Up */
Menu = Menu + 10;
Tempo = millis() + 250;
SousMenu = 0;
} else if (digitalRead(RIGHT) == LOW) { /* Bouton RIGHT */
SousMenu--;
Tempo = millis() + 250;
} else if (digitalRead(SELECT) == LOW) { /* Bouton Select */
Tempo = millis() + 750;
switch (Menu + SousMenu) {
case 21 :
if(Tmin <= 29){
Tmin = Tmin + 1;
}
else {
Tmin = 5;
}
if(Tmin >= Tmax) {
Tmax = Tmin + 1;
Serial.print("Tmax");
Serial.println(Tmax);
NumMenu[22] = (TypeMenu) {
"Temp Max " +String(Tmax) + "c"
};
}
NumMenu[21] = (TypeMenu) {
"Temp Min " +String(Tmin) + "c"
};
Serial.print("Tmin");
Serial.println(Tmin);
delay(200);
break;
case 22 :
if ((Tmax > Tmin)&&(Tmax <= 30)){
Tmax = Tmax + 1;
}
else {
Tmax = Tmin + 1;
NumMenu[21] = (TypeMenu) {
"Temp Min " +String(Tmin) + "c"
};
}
NumMenu[22] = (TypeMenu) {
"Temp Max " +String(Tmax) + "c"
};
Serial.print("Tmax");
Serial.println(Tmax);
delay(200);
break;
case 31 :
if ((Hmax > Hmin)&&(Hmin <= 99)){
Hmin = Hmin + 1;
}
else {
Hmin = 5;
}
if(Hmin >= Hmax) {
Hmax = Hmin + 5;
NumMenu[32] = (TypeMenu) {
"Humid Max " +String(Hmax) + " %"
};
Serial.print("Hmax");
Serial.println(Hmax);
}
NumMenu[31] = (TypeMenu) {
"Humid Min " +String(Hmin) + " %"
};
Serial.print("Hmin");
Serial.println(Hmin);
delay(200);
break;
case 32 :
if ((Hmax > Hmin)&&(Hmax <= 99)){
Hmax = Hmax + 1;
}
else {
Hmax = Hmin + 1;
NumMenu[31] = (TypeMenu) {
"Humid Min " +String(Hmin) + " %"
};
}
NumMenu[32] = (TypeMenu) {
"Humid Max " +String(Hmax) + "%"
};
Serial.print("Hmax");
Serial.println(Hmax);
delay(200);
break;
case 41 :
;
case 42 :
;
}
}
}
AfficheMenu();
}
void AfficheMenu() {
if (Menu == 0 ) {
Menu = 40;
}
if (Menu == 50 ) {
Menu = 10;
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(NumMenu[Menu].Menu);
lcd.setCursor(0, 1);
if ( SousMenu < 0 ) {
SousMenu = 0;
}
if (NumMenu[Menu + SousMenu].Menu == "") {
SousMenu = 0;
}
if (Menu + SousMenu > Menu) {
lcd.print(NumMenu[Menu + SousMenu].Menu);
}
}
void Regul() {
if (test1 == 1) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temperature Mini");
lcd.setCursor(0, 1);
lcd.print(Hmin);
}
}
void humi() {
if (test2 > 0) {
if ((digitalRead(test2)) == HIGH) {
Serial.print("action on test2");
}
if ((digitalRead(test2)) == LOW) {
Serial.print("action off test2");
}
}
}
void heurefunc() {
if (test3 > 0) {
if ((digitalRead(test3)) == HIGH) {
Serial.print("action on test3");
}
if ((digitalRead(test3)) == LOW) {
Serial.print("action off test3");
}
}
}