edit : ah je vient de voir qu il se met a jour quand je navigue dans les sous menu est-il possible qu il se mette a jour en direct sans avoir besoin de switch. on avance on avance
effectivement pour le caractère il ne m affiche pas le bon il me met - au lieux de ° par contre mème quand je met avent le break je n 'est pas la mise a jour de mon menu. le code modifié
#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 Mini " +String(Tmin) + ('\xB0') + "c"
};
NumMenu[22] = (TypeMenu) {
"Temp Max " +String(Tmax) + ('\xB0') + "c"
};
NumMenu[30] = (TypeMenu) {
"3. Humiditer"
};
NumMenu[31] = (TypeMenu) {
"3.1 H min "
};
NumMenu[32] = (TypeMenu) {
"3.2 H max"
};
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;
AfficheMenu();
} else if (digitalRead(DOWN) == LOW) { /* Bouton Down */
Menu = Menu - 10;
Tempo = millis() + 250;
SousMenu = 0 ;
AfficheMenu();
} else if (digitalRead(UP) == LOW) { /* Bouton Up */
Menu = Menu + 10;
Tempo = millis() + 250;
SousMenu = 0;
AfficheMenu();
} else if (digitalRead(RIGHT) == LOW) { /* Bouton RIGHT */
SousMenu--;
Tempo = millis() + 250;
AfficheMenu();
} 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[21] = (TypeMenu) {
"Temp Mini " +String(Tmin) + ('\xB0') + "c"
};
Serial.print("Tmin");
Serial.println(Tmin);
delay(200);
break;
}
case 22 :
if ((Tmax > Tmin)&&(Tmax <= 30)){
Tmax = Tmax + 1;
}
else {
Tmax = Tmin + 1;
}
Serial.print("Tmax");
Serial.println(Tmax);
delay(200);
break;
case 31 :
if(Hmin <= 99){
Hmin = Hmin + 1;
}
else {
Hmin = 5;
}
if(Hmin >= Hmax) {
Hmax = Hmin + 1;
Serial.print("Hmax");
Serial.println(Hmax);
}
Serial.print("Hmin");
Serial.println(Hmin);
delay(200);
break;
case 32 :
if ((Hmax > Hmin)&&(Hmax <= 99)){
Hmax = Hmax + 1;
}
else {
Hmax = Hmin + 1;
}
Serial.print("Hmax");
Serial.println(Hmax);
delay(200);
break;
case 41 :
;
case 42 :
;
}
}
}
}
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");
}
}
}