#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
int buzzer = 2;
int green = 11;
int red = 12;
int pirSensor = 13;
int state = LOW;
int var = 0;
uint8_t pacman[8] = {
0b00000,
0b00000,
0b01110,
0b11011,
0b11111,
0b01110,
0b00000,
0b00000
};
uint8_t pacmanOpen[] = {
0b00000,
0b00000,
0b01110,
0b11011,
0b11100,
0b01110,
0b00000,
0b00000
};
uint8_t dot[] = {
0b00000,
0b00000,
0b00000,
0b00110,
0b00110,
0b00000,
0b00000,
0b00000
};
void setup() {
pinMode(buzzer, OUTPUT);
pinMode(pirSensor, INPUT);
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
lcd.begin(20, 4);
lcd.backlight();
lcd.clear();
lcd.setCursor(2,1);
lcd.print("WELCOME TO HOME");
lcd.setCursor(2,2);
lcd.print("SECURITY SYSTEM");
delay(1000);
}
void loop() {
var = digitalRead(pirSensor);
if (var == HIGH)
{
digitalWrite(red, HIGH);
digitalWrite(green, LOW);
delay(100);
if (state == LOW)
{
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Motion detected!");
lcd.setCursor(3, 1);
lcd.print("SETTING ALARM");
tone(buzzer, 1000);
delay(1000);
lcd.setCursor(6, 2);
lcd.print("LOADING");
for (int i = 3; i < 16; i++)
{
lcd.setCursor(i, 3);
lcd.print("\1");
for (int j = i + 1; j < 16; j++)
{
lcd.setCursor(j, 3);
lcd.print("\2");
}
lcd.createChar(1, pacman);
delay(200);
lcd.createChar(1, pacmanOpen);
delay(200);
lcd.setCursor(i, 3);
lcd.print(" ");
}
state = HIGH;
noTone(buzzer);
}
}
else
{
digitalWrite(red, LOW);
digitalWrite(green, HIGH);
delay(200);
if (state == HIGH)
{
lcd.clear();
lcd.setCursor(2,1);
lcd.print("Motion stopped!");
state = LOW;
}
}
}