#define SENSOR_PIN 2
#define RELAY_PIN 3
unsigned long lastMotionTime = 0;
bool relayState = false;
void setup() {
pinMode(RELAY_PIN, OUTPUT);
pinMode(SENSOR_PIN, INPUT);
digitalWrite(RELAY_PIN, HIGH); // OFF (relay is LOW-level triggered)
Serial.begin(9600);
Serial.println("System Ready. Waiting for motion...");
}
void loop() {
int sensorValue = digitalRead(SENSOR_PIN);
if (sensorValue == HIGH) {
digitalWrite(RELAY_PIN, LOW); // Turn ON the relay
if (!relayState) {
Serial.println("Motion Detected! Light ON");
}
relayState = true;
lastMotionTime = millis();
}
// Check if 5 seconds passed after last motion
if (relayState && (millis() - lastMotionTime >= 5000)) {
digitalWrite(RELAY_PIN, HIGH); // Turn OFF the relay
relayState = false;
Serial.println("No Motion. 5 seconds passed. Light OFF");
}
delay(100); // Small delay for stable reading
}