// Pin Definitions
#define LDR_AO A0 // LDR Analog Output
#define LDR_DO 2 // LDR Digital Output
#define PIR_PIN 3 // PIR Sensor Digital Output
#define TRIG_PIN 9 // Ultrasonic Trigger
#define ECHO_PIN 8 // Ultrasonic Echo
#define POT_PIN A1 // Potentiometer Output
#define BUZZER_PIN 10 // Buzzer Control Pin
void setup() {
// Initialize Serial Monitor
Serial.begin(9600);
// Configure Pins
pinMode(LDR_DO, INPUT); // LDR Digital Output
pinMode(PIR_PIN, INPUT); // PIR Sensor Output
pinMode(TRIG_PIN, OUTPUT); // Ultrasonic Trigger
pinMode(ECHO_PIN, INPUT); // Ultrasonic Echo
pinMode(BUZZER_PIN, OUTPUT); // Buzzer Control Pin
// Initial State of Buzzer
digitalWrite(BUZZER_PIN, LOW);
}
void loop() {
// 1. LDR Readings
int ldrAnalog = analogRead(LDR_AO); // LDR Analog Output (0-1023)
int ldrDigital = digitalRead(LDR_DO); // LDR Digital Output (HIGH/LOW)
Serial.print("LDR Analog: ");
Serial.print(ldrAnalog);
Serial.print(" | LDR Digital: ");
Serial.println(ldrDigital);
// 2. PIR Sensor Readings
int pirState = digitalRead(PIR_PIN); // Detects motion (HIGH/LOW)
Serial.print("PIR Motion Detected: ");
Serial.println(pirState ? "Yes" : "No");
// 3. Ultrasonic Sensor Readings
long duration, distance;
digitalWrite(TRIG_PIN, LOW); // Ensure trigger is low
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH); // Send 10µs pulse
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH); // Measure echo duration
distance = (duration * 0.034) / 2; // Calculate distance in cm
Serial.print("Ultrasonic Distance: ");
Serial.print(distance);
Serial.println(" cm");
// 4. Potentiometer Readings
int potValue = analogRead(POT_PIN); // Potentiometer Output (0-1023)
float potVoltage = potValue * (5.0 / 1023.0); // Convert to voltage
Serial.print("Potentiometer Voltage: ");
Serial.println(potVoltage);
// 5. Buzzer Logic
// Buzzer triggers if:
// - PIR sensor detects motion
// - LDR DO (Digital Output) goes LOW (darkness detected)
// - Ultrasonic sensor detects distance < 20 cm
if (pirState == HIGH || ldrDigital == LOW || distance < 20) {
digitalWrite(BUZZER_PIN, HIGH); // Activate buzzer
} else {
digitalWrite(BUZZER_PIN, LOW); // Deactivate buzzer
}
delay(500); // Wait for 500ms before the next loop
}