#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()