#define WOKWI           // À placer en commentaire sous Arduino UNO
#include <Streaming.h>
#define UN_PETIT_DELAI   500
#define LCD_ADRESSE_I2C  0X27
#define LCD_NB_COLONNES  16
#define LCD_NB_LIGNES    2 

#ifdef WOKWI            // Définition des paramètres pour WokWi
  #include "DHT.h"
  #include <LiquidCrystal_I2C.h>
  #define BROCHE_DHT 2  // Broche de connexion du capteur de température
  DHT capteur(BROCHE_DHT, DHT22);
  LiquidCrystal_I2C lcd(LCD_ADRESSE_I2C, LCD_NB_COLONNES, LCD_NB_LIGNES);
  #define lectureTemperature(x)   readTemperature(x)
  #define lectureHumidite()       readHumidity()

#else                   // Définition des paramètres pour Arduino UNO
  #include "rgb_lcd.h"
  rgb_lcd lcd;
  #include "SHT31.h"
  SHT31 capteur;
  #define lectureTemperature()    getTemperature()
  #define lectureHumidite()       getHumidity()  
#endif

void setup() {
  Serial.begin(9600);
  Serial.println(F("Début du programme de test de la DHT22"));  // Le préfixe F indique que la chaine sera stockée en mémoire programme.
  capteur.begin();
  lcd.begin(LCD_NB_COLONNES, LCD_NB_LIGNES);
  lcd << "Demo DHT22";
  delay(UN_PETIT_DELAI * 4);
  lcd.clear();
} // Setup()

void loop() {
  float humidite = capteur.lectureHumidite();
  float temperatureCelsius = capteur.lectureTemperature();
  lcd.setCursor(0,0);
  // Vérifier s'il y a des erreurs de lecture du capteur DHT
  if ( isnan(humidite) || isnan(temperatureCelsius) ) {
    Serial.println(F("Erreur de lecture du capteur de temperature!"));
    lcd.clear();
    lcd << "ERREUR->Capteur";
    return;  // Reprendre la boucle au début
  } // if

  lcd << "T: " << temperatureCelsius << "c";
  lcd.setCursor(0,1);
  lcd << "H: " << humidite << "%";
  Serial << F("Temperature ") << temperatureCelsius << "c, \n";
  delay(UN_PETIT_DELAI);
} // loop()