#include <ESP32Servo.h>
#include <LiquidCrystal_I2C.h>
//You must need to connect LCD SDA,SCL lines as below to esp32
//SDA (data line): 21
//SCL (clock line): 22
#define pir 14 //PIR sensor
LiquidCrystal_I2C LCD (0x27, 16, 2); //LCD
const int servoPin = 13; //servo motor pin
Servo servo;
void setup() {
Serial.begin(115200);
LCD.init();
LCD.backlight();
LCD.begin(16, 2);
pinMode(pir, INPUT);
pinMode(18, OUTPUT);
pinMode(17, OUTPUT);
servo.attach(servoPin, 500, 2400);
}
int pos = 0;
int sensor =0;
void loop() {
int sensor = digitalRead(pir);
if(sensor == 1){
digitalWrite(18, HIGH);
digitalWrite(17, HIGH);
tone(17, 262, 250);
delay(1000);
LCD.clear();
LCD.setCursor(0, 0);
LCD.print("Motion...");
LCD.setCursor(0, 1);
LCD.print("Window closed");
delay(1000);
for (pos = 0; pos <= 180; pos += 1) {
servo.write(pos);
delay(15);
}
for (pos = 0; pos <= 180; pos += 1) {
servo.write(pos);
delay(15);
}
}else{
digitalWrite(18, LOW);
digitalWrite(17, LOW);
tone(17, 0, 0);
delay(1000);
LCD.clear();
LCD.setCursor(0, 0);
LCD.print("No Motion");
LCD.setCursor(0, 1);
LCD.print("Window open");
delay(1000);
}
}