#include <DHT.h>
#include <LiquidCrystal.h>
const int detecteurMouvement = 12;
const int alarme = 13;
const int bouton = 11;
const int photoresistance = A5;
const int pinDHT = 10; // Broche à laquelle est connecté le capteur DHT
const int seuilVariation = 50; // Seuil de variation de luminosité
DHT dht(pinDHT, DHT22); // Création de l'instance du capteur DHT
LiquidCrystal lcd(5, 4, 9, 8, 7, 6); // Broches RS, EN, D4, D5, D6, D7 pour l'écran LCD
bool alarmeActivee = false;
bool systemeActive = false;
int luminositePrecedente = 0;
float temperaturePrecedente = 0;
bool boutonPrecedent = HIGH; // Variable pour suivre l'état précédent du bouton
void setup() {
pinMode(detecteurMouvement, INPUT);
pinMode(alarme, OUTPUT);
pinMode(bouton, INPUT_PULLUP);
dht.begin();
lcd.begin(16, 2); // Initialisation de l'écran LCD
}
void loop() {
if (!systemeActive && digitalRead(bouton) == LOW) {
systemeActive = true;
}
if (systemeActive) {
if ((digitalRead(detecteurMouvement) == HIGH || detectVariationLuminosite() || detectVariationTemperature()) && !alarmeActivee) {
activerAlarme();
}
if (digitalRead(bouton) == LOW && boutonPrecedent == HIGH && alarmeActivee) {
desactiverAlarme();
}
}
boutonPrecedent = digitalRead(bouton);
// Affichage de la température sur l'écran LCD
lcd.setCursor(0, 0);
lcd.print("Temperature:");
lcd.setCursor(0, 1);
lcd.print(dht.readTemperature());
lcd.print(" C");
}
bool detectVariationLuminosite() {
int luminositeActuelle = analogRead(photoresistance);
if (abs(luminositeActuelle - luminositePrecedente) > seuilVariation) {
luminositePrecedente = luminositeActuelle;
return true;
}
luminositePrecedente = luminositeActuelle;
return false;
}
bool detectVariationTemperature() {
float temperatureActuelle = dht.readTemperature();
if (abs(temperatureActuelle - temperaturePrecedente) > 1.0) {
temperaturePrecedente = temperatureActuelle;
return true;
}
temperaturePrecedente = temperatureActuelle;
return false;
}
void activerAlarme() {
tone(alarme, 1000);
alarmeActivee = true;
}
void desactiverAlarme() {
noTone(alarme);
alarmeActivee = false;
delay(100);
}