#include <Servo.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
int servoPin = 11;
int LOCK = 180;
int UNLOCK = 90;
int servoPos = LOCK; // Kunci awalnya terkunci
int servottp = UNLOCK;
int piezoPin = 8;
int pirPin = 2; // Pin untuk sensor PIR
int relayPin = 7; // Pin untuk relay
Servo myservo;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
myservo.attach(servoPin);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Welcome !");
delay(2000);
myservo.write(servottp); // Menggerakkan servo ke posisi awal (terkunci)
pinMode(piezoPin, OUTPUT); // Setel pin piezo sebagai output
pinMode(pirPin, INPUT); // Setel pin sensor PIR sebagai input
pinMode(relayPin, OUTPUT); // Setel pin relay sebagai output
}
void loop() {
// Jika sensor PIR mendeteksi gerakan, gerakkan servo, tampilkan pesan "Welcome!", dan aktifkan relay
if (digitalRead(pirPin) == HIGH) {
myservo.write(LOCK);
lcd.clear();
lcd.print("Welcome !");
delay(2000); // Tahan pesan selama 3 detik
myservo.write(UNLOCK);
digitalWrite(relayPin, HIGH); // Nyalakan relay
delay(1000); // Tunggu beberapa saat
digitalWrite(relayPin, LOW); // Matikan relay
} else {
// Jika tidak ada gerakan, tampilkan pesan "Akses tertutup" dan matikan piezo
lcd.clear();
lcd.print("Akses tertutup");
tone(piezoPin,3000);
delay(300);
noTone(piezoPin);
}
}