#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <Servo.h>
// konfigurasi keypad
const byte ROWS = 4; // Empat baris
const byte COLS = 4; // Empat kolom
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'},
};
byte rowPins[ROWS] = {5, 4, 3, 2}; // Pin baris
byte colPins[COLS] = {6, 7, 8, 9}; // Pin kolom
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
Servo myServo;
const int led1pin = 11;
const int led2pin = 12;
// Password yang benar
const String correctPassword = "2";
String inputPassword = "";
// Inisiallsasi LCD
LiquidCrystal_I2C lcd(0x27, 16, 2); // Ganti alamat I2C jika diperlukanio
void setup() {
myServo.attach(10); // Pin untuk servo
pinMode(led1pin, OUTPUT); // Atur pin LED 1 sebagai output
pinMode(led2pin, OUTPUT); // Atur pin LED 2 sebagai output
lcd.begin(16,2);
lcd.backlight();
lcd.print("Insert Password:");
Serial.begin(9600);
}
void loop() {
char key = keypad.getKey();
if (key) {
Serial.println("key"); // Tampilkan karakter yang ditekan di Serial Monitor
lcd.setCursor(0, 1); // Pindahkan kursor ke baris kedua
if (key == '#') { // Jika '#' ditekan, periksa password
if (inputPassword == correctPassword) {
Serial.println("Password benar!");
lcd.clear();
lcd.print("Akses Diterima!");
myServo.write(90); // Servo bergerak ke 90 derajat
digitalWrite(led1pin, HIGH); // Nyalakan LED 1
digitalWrite(led2pin, LOW); // Matikan LED 2
} else {
Serial.println("Password salah!");
lcd.clear();
lcd.print("Password salah!");
myServo.write(0); // Kembali ke posisi 0 derajat
digitalWrite(led1pin, LOW); // Matikan LED 1
digitalWrite(led2pin, HIGH); // Nyalakan LED 2
}
inputPassword = ""; // Reset input password
delay(2000); // Tunda sejenak
lcd.clear();
lcd.print("Masukkan Password:");
} else if (key == '*') { // Reset password jika '*' ditekan
inputPassword = "";
lcd.clear();
lcd.print("Input direset.");
delay(2000);
lcd.clear();
lcd.print("Masukkan Password:");
} else {
inputPassword += key; // Tambahkan karakter ke password
lcd.print("*"); // Tampilkan tanda bintang untuk setiap karakter yang dimasukkan
}
}
}