#include <LiquidCrystal_I2C.h>
#include <Servo.h>
#define I2C_ADDR 0x27
#define LCD_COLUMS 20
#define LCD_LINES 4
#define btn1 2
#define door 3
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
Servo myservo;
enum Status {
Tutup,
Wait1,
Buka,
Terbuka,
Wait2
};
Status kondisi = Tutup;
void setup() {
lcd.init();
lcd.backlight();
myservo.attach(5);
pinMode(btn1, INPUT_PULLUP);
pinMode(door, INPUT_PULLUP);
}
void loop() {
switch (kondisi) {
case Tutup:
lcd.setCursor(0, 0);
lcd.print("...");
if (!digitalRead(Btn1)) {
kondisi = Wait1;
}
break;
case Wait1;
lcd.setcursor(0, 0);
lcd.print("Pintu Terbuka");
myservo.write(180);
kondisi = Buka;
break;
case Wait2:
lcd.setCursor(0, 0);
lcd.print("Pintu Tertutup");
myservo.write(90);
kondisi = Tutup;
break;
}
}