#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#define BUZZ 25
#define PINRED 26
#define PINGREEN 27
LiquidCrystal_I2C lcd(0x27,16,2);
const int ROWS = 4;
const int COLS = 4;
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {14, 12, 19, 18}; //r1,r2,r3,r4
byte colPins[COLS] = {5, 4, 2, 15}; //c1,c2,c3,c4
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS);
char customKey; //Variabel penampung input keypad
int number = 0; //Variabel penampung nilai angka
int password = 1379; //Password
void setup(){
pinMode(PINRED, OUTPUT);
pinMode(PINGREEN, OUTPUT);
pinMode(BUZZ, OUTPUT);
digitalWrite(PINRED, LOW);
digitalWrite(PINGREEN, LOW);
lcd.init(); //Mulai LCD
lcd.backlight(); //Nyalakan backlight
}
void loop(){
lcd.setCursor(0,0);
lcd.print("Input Password : ");
char customKey = keypad.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
delay(2000);
digitalWrite(PINGREEN, HIGH);
digitalWrite(PINRED, LOW);
tone(BUZZ,392,100); //g
tone(BUZZ,440,100); //a
tone(BUZZ,494,100); //b
tone(BUZZ,523,100); //c
number = 0;
lcd.clear();
}
else{ //Jika salah, maka
lcd.setCursor(0,1);
lcd.print("Invalid Password"); //Tampilan LCD
delay(2000);
digitalWrite(PINRED, HIGH);
digitalWrite(PINGREEN, LOW);
tone(BUZZ,262,100); //c
tone(BUZZ,294,100); //d
tone(BUZZ,330,100); //e
tone(BUZZ,349,100); //f
number = 0;
lcd.clear();
}
break;
//------------Jika input '*' maka hapus tampilan------------//
case '*':
number = 0;
lcd.clear();
break;
}
}