#include <LiquidCrystal.h>
#include <DHT.h>
// LCD connecté sur broches 12, 11, 5, 4, 3, 2
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// Capteur DHT22 sur broche D7
#define DHTPIN 7
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// LEDs et buzzer
const int ledVerte = 8;
const int ledRouge = 9;
const int ledBleue = 6;
const int buzzer = 10;
void setup() {
pinMode(ledVerte, OUTPUT);
pinMode(ledRouge, OUTPUT);
pinMode(ledBleue, OUTPUT);
pinMode(buzzer, OUTPUT);
lcd.begin(16, 2);
dht.begin();
lcd.setCursor(0, 0);
lcd.print("Initialisation...");
delay(1500);
}
void loop() {
float temperature = dht.readTemperature(); // °C
float humidite = dht.readHumidity(); // %
// Vérification de lecture
if (isnan(temperature) || isnan(humidite)) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Erreur capteur !");
digitalWrite(ledRouge, LOW);
digitalWrite(ledVerte, LOW);
digitalWrite(ledBleue, LOW);
noTone(buzzer);
delay(2000);
return;
}
// Affichage LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("T:");
lcd.print(temperature, 1);
lcd.print("C H:");
lcd.print(humidite, 0);
lcd.print("%");
// État thermique
lcd.setCursor(0, 1);
if (temperature >= 40) {
digitalWrite(ledRouge, HIGH);
digitalWrite(ledVerte, LOW);
digitalWrite(ledBleue, LOW);
tone(buzzer, 1000, 500);
lcd.print("Trop chaud !");
} else if (temperature < 10) {
digitalWrite(ledBleue, HIGH);
digitalWrite(ledVerte, LOW);
digitalWrite(ledRouge, LOW);
tone(buzzer, 800, 500);
lcd.print("Trop froid !");
} else {
digitalWrite(ledVerte, HIGH);
digitalWrite(ledRouge, LOW);
digitalWrite(ledBleue, LOW);
noTone(buzzer);
lcd.print("OK");
}
delay(2000); // mise à jour toutes les 2 secondes
}