#include <Keypad.h> //mengambil library keypad
#include <LiquidCrystal_I2C.h> //mengambil library LCD
#define BARIS 4 //definisikan jumlah baris keypad
#define KOLOM 4 //definisikan jumlah kolom keypad
char tuts[BARIS][KOLOM] = { //tuts maksudnya tombol keypad, ini mirip matriks
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[BARIS] = {14, 12, 19, 18}; //di pin mana input baris terhubung
byte colPins[KOLOM] = {5, 4, 2, 15}; //di pin mana input kolom terhubung di esp32
//menggunakan isian dari library keypad
Keypad keypadnya = Keypad(makeKeymap(tuts), rowPins, colPins, BARIS, KOLOM);
//menggunakan isian dari librari LCD
LiquidCrystal_I2C layar(0x27, 16, 2);
//inputan user
int nomor = 0;
int password = 4567; //passwordnya
int kolomCursor = 0; //kolom kursor tempat mengetik ada 16
int barisCursor = 0; //baris kursor tempat mengetik hanya 0 dan 1 karena 16x2
void setup() {
layar.init(); //mungkin untuk menyiapkan Layar LCD
layar.backlight(); // untuk menghidupkan lampu latar belakang layar
Serial.begin(115200); // nanti saya ada menampilkan layar serial kalau tulisan penuh
}
void loop() {
char ketikan = keypadnya.getKey(); //menyuruh untuk mengambil data tuts yng ditekan
layar.setCursor(kolomCursor, barisCursor);//letakkan kursor di awal
layar.print("Password:"); //muncul ini di lcd
switch (ketikan) { //bila ada ketikan, bilamana:
case '0'...'9':
layar.setCursor(kolomCursor, barisCursor + '1'); //mulai menulis di baris berikutnya
nomor = nomor * 10 + (ketikan - '0'); //membuat nomor yang diketik muncul sebagai satuan terakhir
layar.print(nomor); //menyuruh layar mencetak ketikan tuts
break;
case '#':
if (nomor == password) {
layar.clear();
layar.setCursor(kolomCursor + '2', barisCursor);
layar.print("Accepted!");
delay(2000);
layar.clear();
nomor = 0;
}
else {
layar.clear();
layar.setCursor(kolomCursor, barisCursor);
layar.print("Access Denied!");
delay(2000);
nomor = 0;
layar.clear();
}
break;
case'*':
nomor = 0;
layar.clear();
delay(1000);
break;
}
}