#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
const int BARIS = 4;
const int KOLOM = 4;
char keys[BARIS][KOLOM] =
{
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte pinBaris[BARIS] = {14,12,19,18};
byte pinKolom[KOLOM] = {5,4,2,15};
Keypad keypad = Keypad(makeKeymap(keys),
pinBaris, pinKolom, BARIS, KOLOM);
char tampung; //Variabel penampung input keypad
int nomor = 0; //Variabel penampung nilai angka
int password = 2024; //Password
int jeda = 2000; //Waktu jeda menampilkan tulisan
String sandi = "****";
int led1 = 26;
int led2 = 27;
void setup()
{
lcd.init();
lcd.backlight();
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop()
{
lcd.setCursor(0,0);
lcd.print("Masukan Password"); //Tampilan pada layar
tampung = keypad.getKey(); //Baca input keypad
//Pengecekan masukan
switch(tampung)
{
//Jika masukan berupa angka
case '0' ... '9':
lcd.setCursor(6,1);
//Menggabungkan angka menjadi beberapa digit
nomor = nomor * 10 + (tampung - '0');
lcd.print(sandi);
break;
//Jika masukan berupa karakter '#'
case '#':
//Maka cek, apakah nomor sama dengan
if(nomor == password)
{
//Jika password benar
lcd.setCursor(3,1);
lcd.print("Sandi Benar "); //Tampilan
digitalWrite(led2, HIGH);
delay(jeda);
digitalWrite(led2, LOW);
nomor = 0;
lcd.clear();
}
else
{
//Jika password salah
lcd.setCursor(3,1);
lcd.print("Sandi Salah"); //Tampilan
digitalWrite(led1, HIGH);
delay(jeda);
digitalWrite(led1, LOW);
nomor = 0;
lcd.clear();
}
break;
//Jika masukan berupa karakter '*'
case '*':
nomor = 0;
//Maka hapus layar
lcd.clear();
break;
}
}