#define TRIGPin 3
#define ECHOPin 2
#define SWPin 4
#define BUZZPin 5
#define TONE_USE_INT
#define TONE_PITCH 440
#include <LiquidCrystal_I2C.h>
#include <TonePitch.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
pinMode(BUZZPin, OUTPUT);
pinMode(TRIGPin, OUTPUT);
pinMode(ECHOPin, INPUT);
pinMode(SWPin, INPUT_PULLUP);
lcd.init();
lcd.backlight();
Serial.begin(9600);
}
void clearLCD(int line=4) {
if (line == 4) {
for (int i = 0; i < 3; i++) {
lcd.setCursor(0, i);
lcd.print(" ");
}
}
else { lcd.setCursor(0, line); lcd.print(" "); }
}
int checkOnline() {
clearLCD(0);
if (digitalRead(SWPin) == 1) { lcd.setCursor(0, 0); lcd.print("System is On"); return 1; }
else { lcd.setCursor(0, 0); lcd.print("System is Off"); return 0; }
}
void loop() {
if (checkOnline()) {
digitalWrite(TRIGPin, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGPin, LOW);
int duration = pulseIn(ECHOPin, HIGH);
while ((duration / 58) <= 4) {
if (!checkOnline()) break;
lcd.setCursor(0, 2);
lcd.print(" !Intruder Caught! ");
tone(BUZZPin, NOTE_A3, 500);
delay(400);
tone(BUZZPin, NOTE_B8, 500);
delay(400);
}
tone(BUZZPin, NOTE_C0, 500);
clearLCD(2);
}
delay(100);
}