// --- Broches (Pins) ---
// Broche pour la LED. La 13 est souvent la LED intégrée à la carte.
const int ledPin = 13;
// Broche pour le capteur de mouvement (PIR). Doit être une broche numérique.
const int motionSensorPin = 2;
// Broche pour le capteur de lumière (Photorésistance). Doit être une broche analogique.
const int lightSensorPin = A0;
// --- Seuil de luminosité ---
// Valeur de 0 (noir) à 1023 (pleine lumière).
// Ajustez cette valeur en fonction de votre environnement.
// Plus la valeur est basse, plus il devra faire sombre pour que la LED s'allume.
const int lightThreshold = 400;
// La fonction setup() est exécutée une seule fois au démarrage.
void setup() {
// Configure la broche de la LED en sortie.
pinMode(ledPin, OUTPUT);
// Configure la broche du capteur de mouvement en entrée.
pinMode(motionSensorPin, INPUT);
// Initialise la communication série pour le débogage (optionnel mais utile).
Serial.begin(9600);
}
// La fonction loop() s'exécute en boucle.
void loop() {
// 1. On lit l'état du capteur de mouvement.
int motionState = digitalRead(motionSensorPin);
// 2. On vérifie SI un mouvement est détecté.
if (motionState == HIGH) {
// Mouvement détecté !
// 3. Maintenant, et seulement maintenant, on vérifie la luminosité.
int lightLevel = analogRead(lightSensorPin);
// Affiche la valeur de luminosité pour vous aider à régler le seuil (facultatif).
Serial.print("Mouvement détecté ! Niveau de lumière : ");
Serial.println(lightLevel);
// 4. On vérifie SI la luminosité est EN DESSOUS du seuil (s'il fait sombre).
if (lightLevel < lightThreshold) {
// OUI, il fait sombre -> on allume la LED.
digitalWrite(ledPin, HIGH);
} else {
// NON, il fait assez clair -> on laisse la LED éteinte.
digitalWrite(ledPin, LOW);
}
} else {
// 5. SI AUCUN mouvement n'est détecté, on s'assure que la LED est éteinte.
digitalWrite(ledPin, LOW);
}
}