#include <DHT.h> // Librairie capteurs DHT
#include <Wire.h> // Communication I2C
#include <LiquidCrystal_I2C.h> // Écran LCD I2C
// --- Définition des broches ---
#define DHTPIN1 2 // DHT22 capteur #1 connecté à la broche D2
#define DHTPIN2 3 // DHT22 capteur #2 connecté à la broche D3
#define RELAY_PIN 4 // Entrée du module relais connectée à D4
#define DHTTYPE DHT22 // Type de capteur
// --- Initialisation des capteurs ---
DHT dht1(DHTPIN1, DHTTYPE);
DHT dht2(DHTPIN2, DHTTYPE);
// --- Adresse LCD I2C et taille ---
LiquidCrystal_I2C lcd(0x27, 16, 2); // Adresse 0x27, écran 16 colonnes x 2 lignes
void setup() {
// Initialisation des capteurs
dht1.begin();
dht2.begin();
// Initialisation du LCD
lcd.init(); // Démarrer l’écran LCD
lcd.backlight(); // Allumer rétroéclairage
// Configuration du relais
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW); // Par défaut la clim est éteinte
// Message de démarrage
lcd.setCursor(0, 0);
lcd.print("Systeme Clim Auto");
delay(2000);
lcd.clear();
}
void loop() {
// Lire température de chaque capteur
float temp1 = dht1.readTemperature(); // Capteur 1 (intérieur)
float temp2 = dht2.readTemperature(); // Capteur 2 (extérieur)
// Vérification des valeurs
if (isnan(temp1) || isnan(temp2)) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Erreur capteur !");
delay(2000);
return;
}
// Calcul de la température moyenne
float moyenne = (temp1 + temp2) / 2.0;
// Logique de climatisation : active si moyenne > 25°C
if (moyenne > 25.0) {
digitalWrite(RELAY_PIN, HIGH); // Active le relais
} else {
digitalWrite(RELAY_PIN, LOW); // Désactive le relais
}
// Affichage des données sur LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("T1:");
lcd.print(temp1, 1);
lcd.print(" T2:");
lcd.print(temp2, 1);
lcd.setCursor(0, 1);
lcd.print("Moy:");
lcd.print(moyenne, 1);
lcd.print(" C");
delay(2000); // Pause entre chaque mesure
}