Lesept, j'ai essayé ton bout de code qui fonctionne parfaitement, mais au final cela ne fait pas ce que je veux.
J'ai du mal m'exprimer... 
Par exemple sur l'appuie de la touche 3 lance le void sechage qui est comme çà
void sechage()
{
for(;;)
{
digitalWrite(brasseur, HIGH);
heure = RTC.get(DS1307_HR,true); // Récupération de l'heure
minut = RTC.get(DS1307_MIN,false);
seconde = RTC.get(DS1307_SEC,false);
date = RTC.get(DS1307_DATE,false);
mois = RTC.get(DS1307_MTH,false);
annee = RTC.get(DS1307_YR,false);
temps_perso = (heure * 100) + minut; //creation temps_perso
int h = dht.readHumidity();
int t = dht.readTemperature();
if(t > extracteur_on_sec) // Mise en route des Relais en mode croissance
{
digitalWrite(extracteur, HIGH);
}
if(t < extracteur_off_sec)
{
digitalWrite(extracteur, LOW);
}
if(t > intracteur_on_sec){
digitalWrite(intracteur, HIGH);
}
if(t < intracteur_off_sec){
digitalWrite(intracteur, LOW);
}
digitalWrite(lampe, LOW);
lcd.setCursor(0,0); // Début affichage page 1 LCD
lcd.print(" MODE SECHAGE ");
lcd.setCursor(0,1);
lcd.print("TEMPERATURE ");
lcd.print(t);
lcd.print(" C");
lcd.setCursor(0,2);
lcd.print("HYGROMETRIE ");
lcd.print(h);
lcd.print(" %");
lcd.setCursor(7,3);
if(digitalRead(lampe) == HIGH)
{
lcd.print("LAMPE ALLUMEE");
}
else
{
lcd.print("LAMPE ETEINTE");
}
lcd.setCursor(0,3);
if (heure < 10)
{
lcd.print("0");
}
lcd.print(RTC.get(DS1307_HR,true));
lcd.print("H");
if (minut < 10)
{
lcd.print("0");
}
lcd.print(RTC.get(DS1307_MIN,false));
lcd.print(" ");
delay(5000);
lcd.clear();
lcd.setCursor(0,0); // début page 2 de l'écran LCD
lcd.print("EXTRA ");
lcd.setCursor(7,0);
if(digitalRead(extracteur) == HIGH)
{
lcd.print("ON ");
}
else
{
lcd.print("OFF");
}
lcd.setCursor(0,1);
lcd.print("INTRA ");
lcd.setCursor(7,1);
if(digitalRead(intracteur) == HIGH)
{
lcd.print("ON ");
}
else
{
lcd.print("OFF");
}
lcd.setCursor(0,2);
lcd.print("BRASS ");
lcd.setCursor(7,2);
if(digitalRead(brasseur) == HIGH)
{
lcd.print("ON ");
}
else
{
lcd.print("OFF");
}
lcd.setCursor(0,3);
if (heure < 10)
{
lcd.print("0");
}
lcd.print(RTC.get(DS1307_HR,true));
lcd.print("H");
if (minut < 10)
{
lcd.print("0");
}
lcd.print(RTC.get(DS1307_MIN,false));
lcd.print(" ");
lcd.setCursor(11,0);
lcd.print("TEMP ");
lcd.print(t);
lcd.print("C");
lcd.setCursor(11,1);
lcd.print("HYGR ");
lcd.print(h);
lcd.print("%");
delay(5000); // Fin page 2 de l'écran LCD
}
}
Avec la boucle For infini mon programme s'execute sans problème, ce que j'aimerais c'est que par l'appuie d'une touche je peux changer programme et le balancer sur le void croissance par exemple.
Pour cela j'ai coder mon loop comme cela.
void loop()
{
char touche= clavier.getKey();
if(touche) // Check for a valid key.
{
switch (touche)
{
case '1' :
croissance();
break;
case '2':
floraison();
break;
case '3':
sechage();
break;
default:
Serial.println(touche);
}
}
else menu();
}
Même codé comme cela je n'arrive pas à sortir de la boucle for...