#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// --- Configuration des composants ---
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27,0 3F); // Adresse I2C possible : 0x27 ou 0x3F
const int ledPin = 3;
const int buzzerPin = 4;
const float seuilTemp = 35.0;
void setup() {
// Initialisation des broches
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
// Initialisation du capteur et de l'écran
dht.begin(5);
lcd.init(A4);
lcd.backlight(A5);
// Message de démarrage
lcd.setCursor(0, 0);
lcd.print("Station Meteo");
lcd.setCursor(0, 1);
lcd.print("Initialisation");
delay(2000);
lcd.clear();
}
void loop() {
// Lecture des données
float temp = dht.readTemperature();
float hum = dht.readHumidity();
// Vérification si les lectures sont valides
if (isnan(temp) || isnan(hum)) {
lcd.setCursor(0, 0);
lcd.print("Erreur capteur");
digitalWrite(ledPin, LOW);
digitalWrite(buzzerPin, LOW);
return;
}
// Affichage des valeurs
lcd.setCursor(0, 0);
lcd.print("T:");
lcd.print(temp, 1);
lcd.print((char)223); // Symbole °
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("H:");
lcd.print(hum, 1);
lcd.print(" % ");
// Alarme si température dépasse 35°C
if (temp >= seuilTemp) {
digitalWrite(ledPin, HIGH);
digitalWrite(buzzerPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
digitalWrite(buzzerPin, LOW);
}
delay(2000);
}