Bonjour,
Il faut que tu positionnes un flag quand tu reçois la touche auto. Ce flag est resetté par les autres touches.
Ensuite tu fais le traitement auto quand ce flag est positionné.
void loop() {
static bool flagAuto = false;
if (irrecv.decode(&resultat)) // Vérifie si un code est stocké dans "resultat"
{
switch (resultat.value) // Éteint ou allume les différents modules selon le bouton de la télécommande
{
case 0xFF10EF: // Le bouton 4 active le mode automatique
flagAuto = true;
break;
case 0x?????? : // traitement des autres touches
flagAuto = false;
break;
}
}
if (flagAuto)
{
float temperature = dht.readTemperature(); // Mesure de température
float humidite = dht.readHumidity(); // Mesure d'humidité
if (isnan(temperature) || isnan(humidite)) {
}
else {
lcd.setCursor(0, 0); // Place le curseur sur la première ligne de l'écran
lcd.print("Temp: "); // Affiche "Temp:"
lcd.print(temperature); // Affiche la valeur de la temperature
lcd.print(" C"); // Affiche " C" (degré celsius)
lcd.setCursor(0, 1); // Place le curseur sur la deuxième ligne de l'écran
lcd.print("Humi: "); // Affiche "Humi:"
lcd.print(humidite); // Affiche la valeur de l'humidité
lcd.print(" %"); // Affiche " %"
}
delay(500); // Attente avant rafraichissement des mesures
if (temperature > 20) // Si la température est supérieure à 20, on :
{
digitalWrite(relais1, LOW);
digitalWrite(relais3, LOW); // Allume le ventilateur et le peltier froid
ventilateur = 1;
peltierfr = 1;
}
if (temperature < 12) // Si la température est inférieure à 12, on :
{
digitalWrite(relais1, LOW);
digitalWrite(relais2, LOW); // Allume le ventilateur et le peltier chaud
ventilateur = 0;
peltierch = 0;
peltierfr = 0;
}
if ((temperature <= 20) && (temperature >= 12)) // Si la température se trouve entre .. et .. :
{
digitalWrite(relais1, HIGH);
digitalWrite(relais2, HIGH); // On éteint tout
digitalWrite(relais3, HIGH);
ventilateur = 1;
peltierch = 1;
}
}
}
remarque: il manque le irrecv.resume() dans ton code.