#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <Servo.h>

//SERVO PINS
Servo klbservo_1;
int start_pos = 30;

// PIR PINS
const int pir_pin = 12;

// BUZZER PINS
const int buzzer_pin = 11;

// LCD OBJECT
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  // put your setup code here, to run once:
  //lcd
  lcd.init();
  lcd.backlight();

  lcd.setCursor(2, 0);
  lcd.print("HELLO WORLD");
  lcd.setCursor(0, 1);
  lcd.print("INTRUDER DETECT");
  delay(2000);
  lcd.clear();
  lcd.setCursor(2, 0);
  lcd.print("INITIALIZING");

  //PIR INITIALIZE
  pinMode(pir_pin, INPUT);
  // BUZZER INITIALIZE
  pinMode(buzzer_pin, OUTPUT);
  // SERVO INITIALIZE
  klbservo_1.attach(3);
  klbservo_1.write(start_pos);

  delay(2000);
  lcd.setCursor(4, 1);
  lcd.print("SUCCESS");
  delay(2000);
  lcd.clear();
}

void loop() {
  // put your main code here, to run repeatedly:
  int pir_state = digitalRead(pir_pin);

  if (pir_state == HIGH)
  {
    tone(buzzer_pin, 500);
    
    lcd.setCursor(0, 0);
    lcd.print("Motion Detected       ");
    lcd.setCursor(0,1);
    lcd.print("DOOR:CLOSED           ");
    klbservo_1.write(0);
  }
  else
  {
    noTone(buzzer_pin);

    lcd.setCursor(0, 0);
    lcd.print("No Motion        ");
    lcd.setCursor(0,1);
    lcd.print("DOOR:OPEN        ");
    klbservo_1.write(90);
  }

}