#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
const byte baris = 4; // jumlah baris pada keypad
const byte kolom = 4; // jumlah kolom pada keypad
char tombol[baris][kolom] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte pinbaris[baris] = {9, 8, 7, 6}; // menghubungkan pin baris keypad ke pin 9, 8, 7, 6 pada Arduino
byte pinkolom[kolom] = {5, 4, 3, 2}; // menghubungkan pin kolom keypad ke pin 5, 4, 3, 2 pada Arduino
Keypad keypad = Keypad( makeKeymap(tombol), pinbaris, pinkolom, baris, kolom );
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C LCD 0x27, dengan 16 kolom dan 2 baris
char password[] = "288ABCD"; // Password yang diharapkan
const int panjangPass = 10;
void setup(){
Serial.begin(9600);
lcd.begin(16, 2); // Inisialisasi LCD 16x2
lcd.backlight(); // Hidupkan backlight LCD
lcd.print("Input Password:");
}
void loop(){
static char enteredPassword[panjangPass]; // Variabel untuk menyimpan password yang dimasukkan
static byte passwordIndex = 0; // Indeks password yang dimasukkan
char key = keypad.getKey();
if (key){
if (key == '#'){ // Jika tombol '#' ditekan, verifikasi password
enteredPassword[passwordIndex] = '\0'; // Tambahkan null terminator pada akhir string
if (strcmp(enteredPassword, password) == 0){ // Bandingkan password yang dimasukkan dengan password yang diharapkan
lcd.clear();
lcd.print("Password Benar");
} else {
lcd.clear();
lcd.print("Password Salah");
}
delay(2000); // Tunda selama 2 detik sebelum menghapus pesan
lcd.clear();
lcd.print("Masukkan Password:");
passwordIndex = 0;
} else if (key == '*'){ // Jika tombol '*' ditekan, reset password yang dimasukkan
lcd.clear();
lcd.print("Masukkan Password:");
passwordIndex = 0;
} else if (passwordIndex < panjangPass){ // Jika masih ada tempat di array password
lcd.setCursor(passwordIndex, 1); // Posisi kursor di baris kedua, sesuai dengan indeks password
lcd.print(key); // Tampilkan '*' pada LCD untuk menyembunyikan karakter yang dimasukkan
enteredPassword[passwordIndex] = key; // Simpan karakter yang dimasukkan
passwordIndex++; // Pindah ke indeks berikutnya
}
}
}