#include <Servo.h>
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define triggerPin 12
#define echoPin 13
#define ledPin1 2
#define DHTPIN 7
#define DHTTYPE DHT11
Servo myservo;
double duration, distance;
#define ledPin2 6
#define inputPin 4
int pirState = LOW;
int val = 0;
int pos = 0;
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
Serial.println("Theft Detection mode turn On");
pinMode(triggerPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(inputPin, INPUT);
myservo.attach(9);
dht.begin();
lcd.begin(16, 2);
lcd.print("Temperature");
lcd.setCursor(0, 1);
lcd.print("Humidity");
}
void loop() {
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) * 0.0343;
if (distance < 200) {
digitalWrite(ledPin1, HIGH);
Serial.println("Open the door");
delay(10000);
myservo.write(90);
delay(1000);
}
else {
digitalWrite(ledPin1, LOW);
Serial.println("Close the door");
delay(10000);
myservo.write(0);
delay(1000);
}
val = digitalRead(inputPin);
if (val == HIGH) {
digitalWrite(ledPin2, HIGH);
if (pirState == LOW) {
pirState = HIGH;
Serial.println("Motion detected!. Turn on the light");
}
} else {
digitalWrite(ledPin2, LOW);
if (pirState == HIGH) {
pirState = LOW;
Serial.println("Motion ended!. Turn off the light");
}
}
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
lcd.setCursor(12, 0);
lcd.print(temperature);
lcd.write((byte)0xDF);
lcd.print("C");
lcd.setCursor(9, 1);
lcd.print(humidity);
lcd.print("%");
}