besoin d'aide pour un menu,

comme ta pu le remarquer je début et j ai deux code actuellement et je comprend pas tout un avec mon menu et l autre avec mes sonde qui mesure chaque une un point de température. les deux code séparer fonctionne bien j arrive a les fusionner mais j'ai des soucie ma température se retrouve afficher tout le temps et écrie pardessus mon menu .

en faite je voudrais que

en 1 : quand je lance l Arduino mais mes température de sonde s affiche pour sa c'est ok
en 2 : quand j’appuie mon menu s'affiche mais sans afficher les sonde
en 3: je voudrai que dans mon premier menu il y est un sous menu qui me permet de revenir a l affichage général

code du menu que l on a fait ensemble

#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. Info General "
  };
  NumMenu[11] = (TypeMenu) {
    "Temp Nid:" +String(Tmin)
  };
  NumMenu[12] = (TypeMenu) {
    "Temp ADC:" +String(Tmax)
  };
  NumMenu[13] = (TypeMenu) {
    "Humidite" +String(Tmax)
  };
  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. Humidite"
  };
  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;
      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[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");
    }
  }
}

code de mais deux sonde

#include <LiquidCrystal.h>
#include <OneWire.h>

// DS18S20 Temperature chip i/o
OneWire ds(10);  // on pin 10

byte addr1[8] = {0x28, 0xAA, 0x98, 0x12, 0x3C, 0x14, 0x01, 0xD7};
byte addr2[8] = {0x28, 0xAA, 0xC1, 0x91, 0x3B, 0x14, 0x01, 0x9A};
int SignBit = 0;
int StartCol = 8;

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{
  Serial.begin(9600);
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("Temp NID:");
  lcd.setCursor(0, 1);
  lcd.print("Temp ADC:");
}

int tc_100(byte* addr){
  int HighByte, LowByte, TReading;
  byte data[12];
  byte i;

  ds.reset();
  ds.select(addr);
  ds.write(0x44,1);         // start conversion, with parasite power on at the end

  delay(1000);     // maybe 750ms is enough, maybe not
  // we might do a ds.depower() here, but the reset will take care of it.

  ds.reset();
  ds.select(addr);    
  ds.write(0xBE);         // Read Scratchpad

  for ( i = 0; i < 9; i++) {           // we need 9 bytes
    data[i] = ds.read();
  }

  LowByte = data[0];
  HighByte = data[1];
  TReading = (HighByte << 8) + LowByte;
  SignBit = TReading & 0x8000;  // test most sig bit
  if (SignBit) // negative
  {
    TReading = (TReading ^ 0xffff) + 1; // 2's comp
  }
  return (6 * TReading) + TReading / 4;    // multiply by (100 * 0.0625) or 6.25
}

void mypr(int Tc_100, int line) {
  int Whole, Fract;

  Whole = Tc_100 / 100;  // separate off the whole and fractional portions
  Fract = Tc_100 % 100;

  if (SignBit) // If its negative
  {
     lcd.setCursor(StartCol,line);
     lcd.print("-");
  }
  lcd.setCursor(StartCol+1,line);
  lcd.print(Whole);
  lcd.print(".");
  if (Fract < 10)
  {
     lcd.print("0");
  }
  lcd.print(Fract);
  lcd.print("C");
}

void loop()
{
  byte i;
  byte data[12];
  int Tc_100;

  Tc_100 = tc_100(addr1);
  mypr(Tc_100,0);

  Tc_100 = tc_100(addr2);
  mypr(Tc_100,1);
}

je met ma tentative de fusion dans le prochain post car je depasse les 9000 characters