#include <Servo.h>
const int ldrPin = A0; // LDR module OUT pin connected to analog pin A0
const int servoPin = 9; // Servo motor control pin (PWM pin)
const int trigPin = 7; // Ultrasonic sensor TRIG pin
const int echoPin = 6; // Ultrasonic sensor ECHO pin
const int ledPin = 4; // LED control pin
const int buzzerPin = 5; // Buzzer control pin
Servo myServo; // Create a servo object
bool ldrAlarmpartiallyactive = false;
bool ldrAlarmActive = false; // Flag to indicate if the LDR alarm is active
bool ultrasonicAlarmActive = false; // Flag to indicate if the ultrasonic alarm is active
void setup() {
pinMode(ldrPin, INPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
myServo.attach(servoPin);
}
void loop() {
int lightIntensity = analogRead(ldrPin);
int distance = getDistance();
// Check LDR for light intensity
if ( lightIntensity >500) {
if (!ldrAlarmpartiallyactive) {
activateLDRAlarmpartially();
}
else if(lightIntensity>2000){
if(!ldrAlarmActive){
activateLDRAlarm();
}
}
} else {
if (ldrAlarmActive) {
deactivateLDRAlarm();
}
}
return(0);
// Check ultrasonic sensor for nearby objects
if (distance <= 200) {
if (!ultrasonicAlarmActive) {
activateUltrasonicAlarm();
}
} else {
if (ultrasonicAlarmActive) {
deactivateUltrasonicAlarm();
}
}
}
// Function to close the blinds
void closeBlinds() {
myServo.write(0); // Rotate servo to close position
}
void partiallyopenblinds(){
myServo.write(90);//rotate servo to half open position
}
// Function to open the blinds
void openBlinds() {
myServo.write(180); // Rotate servo to open position
}
// Function to activate the LDR alarm
void activateLDRAlarm() {
ldrAlarmActive = true;
closeBlinds();
}
//function to partially deactivate ldr
void activateLDRAlarmpartially(){
ldrAlarmpartiallyactive = true;
partiallyopenblinds();
}
// Function to deactivate the LDR alarm
void deactivateLDRAlarm() {
ldrAlarmActive = false;
openBlinds();
}
// Function to activate the ultrasonic alarm
void activateUltrasonicAlarm() {
ultrasonicAlarmActive = true;
digitalWrite(ledPin, HIGH); // Turn on LED
tone(buzzerPin, 1000); // Generate tone with buzzer
}
// Function to deactivate the ultrasonic alarm
void deactivateUltrasonicAlarm() {
ultrasonicAlarmActive = false;
digitalWrite(ledPin, LOW); // Turn off LED
delay(5000); // Wait for 5 seconds
noTone(buzzerPin); // Stop buzzer tone
}
// Function to get distance from ultrasonic sensor
int getDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
return pulseIn(echoPin, HIGH) / 58; // Convert pulse duration to distance in cm
}