#include <Wire.h>
#include <LiquidCrystal_I2C.h>
int ledmerah = 13;
int inputPir = 2;
int pirState = LOW;
int val = 0;
int pinbuzzer = 4;
liquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
lcd.begin(16,2);
pinMode(ledmerah, OUTPUT);
pinMode(inputPir, INPUT);
pinMode(pinbuzzer, OUTPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
val = digitalRead(inputPir);
if (val == HIGH){
digitalWrite(ledmerah, HIGH);
playTone(300,160);
delay(150);
if (pirState == LOW) { lcd.setCursor(0,0);
lcd.backlight();
lcd.print("Awas Ada Maling");
Serial.println("Awas Ada Maling");
pirState = HIGH;
}
} else {
digitalWrite(ledmerah, LOW);
playTone(0,0);
delay(300);
if (pirState == HIGH){
lcd.setCursor(0,1);
lcd.clear();
lcd.print("Situasi Aman");
Serial.println("Situasi Aman");
pirState = LOW;
}
}
}
void playTone(long duration,int freq) {duration *= 1000;
int period = (1,0/freq) *100000;
long elapse_time = 0;
while (elapsed_time <duration){digitalWrite(pinbuzzer, HIGH);
delayMicroseconds(period / 2);
digitalWrite(pinbuzzer, LOW);
delayMicroseconds(period / 2);
elapsed_time += (period);
}
}