#include <LiquidCrystal_I2C.h>
#include <Servo.h>
Servo front; // front door
Servo back; // back door
LiquidCrystal_I2C lcd(0x27, 20, 4);
int echo_back = 2;
int trig_back = 3; // back
int echo_front = 4;
int trig_front = 5; // front
long distance;
long distance1;
int irFront = A0; // IR sensor at front door
int irBack = A1; // IR sensor at back door
int irFrontReading;
int irBackReading;
int buzzerFront = 12; // Front door
int buzzerBack = 13; // Back door
int RELAYFront = 11; // front door
int RELAYBack = 8; // back door
bool frontDetected = false;
bool backDetected = false;
bool displayingSystemAutomation = true;
bool frontDoorOpen = false;
bool backDoorOpen = false;
void setup() {
Serial.begin(9600);
lcd.clear();
lcd.init();
lcd.backlight();
pinMode(echo_back, INPUT);
pinMode(echo_front, INPUT);
pinMode(trig_back, OUTPUT);
pinMode(trig_front, OUTPUT);
pinMode(RELAYFront, OUTPUT);
pinMode(RELAYBack, OUTPUT);
pinMode(buzzerFront, OUTPUT);
pinMode(buzzerBack, OUTPUT);
pinMode(irFront, INPUT);
pinMode(irBack, INPUT);
front.attach(9);
back.attach(10);
}
void loop() {
lcd.clear();
digitalWrite(trig_back, LOW);
delay(10);
digitalWrite(trig_back, HIGH);
delay(10);
digitalWrite(trig_back, LOW);
distance = pulseIn(echo_back, HIGH) * 0.034 / 2;
digitalWrite(trig_front, LOW);
delay(10);
digitalWrite(trig_front, HIGH);
delay(10);
digitalWrite(trig_front, LOW);
distance1 = pulseIn(echo_front, HIGH) * 0.034 / 2;
irFrontReading = analogRead(irFront);
irBackReading = analogRead(irBack);
if (distance1 <= 15 && distance1 > 0) {
frontDetected = true;
} else {
frontDetected = false;
}
if (distance <= 15 && distance > 0) {
backDetected = true;
} else {
backDetected = false;
}
if (frontDetected) {
tone(buzzerFront, 300);
digitalWrite(RELAYFront, HIGH);
lcd.setCursor(1,0);
lcd.print("Intruder at front: ");
lcd.setCursor(1,1);
lcd.print(distance1);
lcd.print(" cm");
lcd.setCursor(1, 3);
lcd.print("IR Reading: ");
lcd.print(irFrontReading);
for (int i = 0; i <= 90; i++) {
front.write(i);
delay(10);
}
frontDoorOpen = true;
}
if (backDetected) {
tone(buzzerBack, 500);
digitalWrite(RELAYBack, HIGH);
lcd.setCursor(1,0);
lcd.print("Intruder at back : ");
lcd.setCursor(1,1);
lcd.print(distance);
lcd.print(" cm");
lcd.setCursor(1, 3);
lcd.print("IR Reading: ");
lcd.print(irBackReading);
for (int i = 0; i <= 90; i++) {
back.write(i);
delay(10);
}
backDoorOpen = true;
}
if (!frontDetected && frontDoorOpen) {
for (int i = 90; i >= 0; i--) {
front.write(i);
delay(10);
}
digitalWrite(RELAYFront, LOW);
noTone(buzzerFront);
frontDoorOpen = false;
}
if (!backDetected && backDoorOpen) {
for (int i = 90; i >= 0; i--) {
back.write(i);
delay(10);
}
digitalWrite(RELAYBack, LOW);
noTone(buzzerBack);
backDoorOpen = false;
}
if (!frontDetected && !backDetected) {
lcd.clear();
lcd.print("Home Automation");
lcd.backlight();
}
delay(250);
}