// Définition des broches
const int PIR1_PIN = 13;
const int PIR2_PIN = 12;
const int LDR1_PIN = 34; // Associé à la Zone 1
const int LDR2_PIN = 35; // Associé à la Zone 2
const int RELAY1_PIN = 25;
const int RELAY2_PIN = 26;
// Seuil d'obscurité (Sur l'ESP32 : 0 = Plein jour, 4095 = Obscurité totale)
const int DARKNESS_THRESHOLD = 2000;
void setup() {
Serial.begin(115200);
pinMode(PIR1_PIN, INPUT);
pinMode(PIR2_PIN, INPUT);
pinMode(RELAY1_PIN, OUTPUT);
pinMode(RELAY2_PIN, OUTPUT);
// Relais éteints au démarrage
digitalWrite(RELAY1_PIN, LOW);
digitalWrite(RELAY2_PIN, LOW);
Serial.println("Démarrage du système d'éclairage intelligent à 2 zones...");
}
void loop() {
// --- LECTURE DES CAPTEURS ZONE 1 ---
int pir1State = digitalRead(PIR1_PIN);
int ldr1Value = analogRead(LDR1_PIN);
// --- LECTURE DES CAPTEURS ZONE 2 ---
int pir2State = digitalRead(PIR2_PIN);
int ldr2Value = analogRead(LDR2_PIN);
// --- AFFICHAGE SUR LE MONITEUR SÉRIE ---
Serial.println("=== ÉTAT DES CAPTEURS ===");
Serial.print("Zone 1 -> Mouvement : ");
Serial.print(pir1State == HIGH ? "OUI" : "NON");
Serial.print(" | Luminosité (LDR) : ");
Serial.println(ldr1Value);
Serial.print("Zone 2 -> Mouvement : ");
Serial.print(pir2State == HIGH ? "OUI" : "NON");
Serial.print(" | Luminosité (LDR) : ");
Serial.println(ldr2Value);
// --- LOGIQUE ET ACTION ZONE 1 ---
if (pir1State == HIGH && ldr1Value > DARKNESS_THRESHOLD) {
digitalWrite(RELAY1_PIN, HIGH);
Serial.println("Action Z1 : Relais 1 ALLUMÉ");
} else {
digitalWrite(RELAY1_PIN, LOW);
Serial.println("Action Z1 : Relais 1 ÉTEINT");
}
// --- LOGIQUE ET ACTION ZONE 2 ---
if (pir2State == HIGH && ldr2Value > DARKNESS_THRESHOLD) {
digitalWrite(RELAY2_PIN, HIGH);
Serial.println("Action Z2 : Relais 2 ALLUMÉ");
} else {
digitalWrite(RELAY2_PIN, LOW);
Serial.println("Action Z2 : Relais 2 ÉTEINT");
}
Serial.println("---------------------------------");
// Délai de 1 seconde pour une lecture confortable dans le moniteur série
delay(1000);
}