[Résolu] Télécommande infrarouge et boucle do ..while

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.