#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "DHTesp.h"
const int DHT_PIN = 15; // Broche connectée au capteur DHT22
const int LED_PIN = 2; // Broche pour la LED (ventilateur)
const int BUZZER_PIN = 13;// Broche pour le buzzer
DHTesp dht;
bool ventilationOn = false;
float temperatureThresholdDay = 23.0;
float temperatureThresholdNight = 25.0;
float humidityThreshold = 60.0;
bool isDayTime = true; // Simule si c'est le jour (true) ou la nuit (false)
// Configuration de l'écran LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2); // Adresse I2C 0x27, écran 16x2
void setup() {
Serial.begin(115200);
dht.setup(DHT_PIN, DHTesp::DHT22);
pinMode(LED_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
digitalWrite(BUZZER_PIN, LOW);
// Initialisation de l'écran LCD
lcd.begin(16, 2);
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("System Started");
delay(2000); // Attente pour afficher un message initial
}
void loop() {
TempAndHumidity data = dht.getTempAndHumidity();
float temperature = data.temperature;
float humidity = data.humidity;
// Déterminer le seuil de température selon l'heure de la journée
float currentTemperatureThreshold = isDayTime ? temperatureThresholdDay : temperatureThresholdNight;
Serial.print("Température: ");
Serial.print(temperature);
Serial.print(" °C, Humidité: ");
Serial.print(humidity);
Serial.println(" %");
// Afficher la température et l'humidité sur l'écran LCD
lcd.clear();
lcd.setCursor(0, 0); // Début de la première ligne
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(0, 1); // Début de la deuxième ligne
lcd.print("Hum: ");
lcd.print(humidity);
lcd.print(" %");
// Activer ou désactiver la ventilation en fonction de la température et de l'humidité
if (temperature >= currentTemperatureThreshold || humidity > humidityThreshold) {
activateVentilation();
lcd.setCursor(10, 0); // Affichage sur la première ligne
lcd.print("ON ");
} else {
deactivateVentilation();
lcd.setCursor(10, 0); // Affichage sur la première ligne
lcd.print("OFF");
}
delay(2000); // Attente avant la prochaine lecture des capteurs
}
void activateVentilation() {
if (!ventilationOn) {
digitalWrite(LED_PIN, HIGH); // Allumer la LED (ventilateur activé)
digitalWrite(BUZZER_PIN, HIGH); // Activer le buzzer
ventilationOn = true;
Serial.println("Ventilation activée !");
}
}
void deactivateVentilation() {
if (ventilationOn) {
digitalWrite(LED_PIN, LOW); // Éteindre la LED (ventilateur désactivé)
digitalWrite(BUZZER_PIN, LOW); // Désactiver le buzzer
ventilationOn = false;
Serial.println("Ventilation désactivée.");
}
}