#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const byte BARIS = 4; // JML BARIS KEYPAD
const byte KOLOM = 4; // JML KOLOM KEYPAD
char keys[BARIS][KOLOM] = //membuat array keypad
{
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte colPins[KOLOM] = {5, 4, 2, 15};
byte rowPins[BARIS] = {14, 12, 19, 18};
Keypad customKeypad = Keypad(makeKeymap(keys), rowPins, colPins, BARIS, KOLOM);
char customKey; //var penampung keypad
int number=0; //var penampung nilai angka
int password=123; //password
int ledhijau=25;
int ledmerah=26;
void setup() {
// put your setup code here, to run once:
pinMode(ledhijau, OUTPUT);
pinMode(ledmerah, OUTPUT);
lcd.init();
lcd.backlight();
}
void loop() {
// put your main code here, to run repeatedly:
lcd.setCursor(0,0);
lcd.print("Input Password"); //Tampilan pada layar LCD
customKey = customKeypad.getKey(); //Baca input keypad
//------------Prosedur jika input berupa angka------------//
switch(customKey){
case '0' ... '9':
lcd.setCursor(0,1);
number = number * 10 + (customKey - '0');
lcd.print(number);
break;
//------------Jika input '#' maka cek password------------//
case '#':
if(number == password){ //Jika password benar, maka
lcd.setCursor(0,1);
lcd.print("Access Accepted "); //Tampilan LCD
digitalWrite(ledhijau, HIGH);
digitalWrite(ledmerah, LOW);
delay(2000);
digitalWrite(ledhijau, LOW);
number = 0;
lcd.clear();
}
else{ //Jika salah, maka
lcd.setCursor(0,1);
lcd.print("Invalid Password"); //Tampilan LCD
digitalWrite(ledmerah, HIGH);
digitalWrite(ledhijau, LOW);
delay(2000);
digitalWrite(ledmerah, LOW);
number = 0;
lcd.clear();
}
break;
//------------Jika input '*' maka hapus tampilan------------//
case '*':
number = 0;
lcd.clear();
break;
}
}