// Pin definitions
#define PIR_PIN 26
#define LDR_PIN 34
#define LIGHT_PIN 25
#define BUZZER_PIN 27
// Thresholds
const int lightThreshold = 3000; // Dark condition
const unsigned long motionTimeout = 10000;
unsigned long lastMotionTime = 0;
bool lightOn = false;
bool buzzerOn = false;
void setup() {
Serial.begin(115200);
pinMode(PIR_PIN, INPUT);
pinMode(LDR_PIN, INPUT);
pinMode(LIGHT_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
digitalWrite(LIGHT_PIN, LOW);
digitalWrite(BUZZER_PIN, LOW);
Serial.println("Smart Automation System Started");
}
void loop() {
int pirState = digitalRead(PIR_PIN);
int ldrValue = analogRead(LDR_PIN);
Serial.print("PIR: ");
Serial.print(pirState);
Serial.print(" | LDR: ");
Serial.println(ldrValue);
// Motion detected
if (pirState == HIGH) {
lastMotionTime = millis();
// DARK condition (corrected logic)
if (ldrValue > lightThreshold) {
if (!lightOn) {
digitalWrite(LIGHT_PIN, HIGH);
lightOn = true;
Serial.println("Light ON (Dark + Motion)");
}
if (!buzzerOn) {
digitalWrite(BUZZER_PIN, HIGH);
buzzerOn = true;
Serial.println("Buzzer ON");
}
}
}
// Turn OFF after timeout
if (millis() - lastMotionTime > motionTimeout) {
if (lightOn) {
digitalWrite(LIGHT_PIN, LOW);
lightOn = false;
Serial.println("Light OFF");
}
if (buzzerOn) {
digitalWrite(BUZZER_PIN, LOW);
buzzerOn = false;
Serial.println("Buzzer OFF");
}
}
delay(500);
}