#include <Servo.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
Servo myservo;
int ledPin1 = 8;
int ledPin2 = 12;
int pushButton = 4;
boolean doorOpen = false;
void setup() {
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(pushButton, INPUT); // Menggunakan INPUT_PULLUP untuk push button
myservo.attach(3);
lcd.init();
lcd.backlight();
}
void loop() {
doorOpen = digitalRead(pushButton); // Membaca status push button
if (doorOpen == HIGH) { // Jika push button ditekan (LOGIC LOW)
openGate();
} else {
closeGate();
}
}
void openGate() {
// Buka gerbang
digitalWrite(ledPin1, HIGH); // Indikator gerbang terbuka
digitalWrite(ledPin2, LOW);
myservo.write(0); // Putar servo ke posisi 90 derajat (gerbang terbuka)
lcd.setCursor(4, -1);
lcd.print("Gate Opened");
}
void closeGate() {
// Tutup gerbang
digitalWrite(ledPin1, LOW); // Indikator gerbang tertutup
digitalWrite(ledPin2, HIGH);
myservo.write(90); // Putar servo ke posisi 0 derajat (gerbang tertutup)
lcd.setCursor(4, -1);
lcd.print("Gate Closed");
}