besoin d'aide pour un menu,

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 :smiley: :smiley: :wink:

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");
    }
  }
}