#include <Keypad.h>;
#include <LiquidCrystal_I2C.h>;
LiquidCrystal_I2C lcd(0x27,16,2);
#define buzzer 26
#define led 32
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 rowPins[BARIS]={14,12,19,18};
byte colPins[KOLOM]={5,4,2,15};
Keypad customKeypad = Keypad( makeKeymap(keys),rowPins,colPins,BARIS,KOLOM);
char customKey;
int number = 0;
int password = 4444;
void setup() {
Serial.begin(9600);
lcd.init();
lcd.setBacklight(HIGH);
lcd.setCursor(0,1);
pinMode(buzzer,OUTPUT);
pinMode(led, OUTPUT);
}
void loop() {
lcd.setCursor(0,0);
lcd.print("Input Password:");
customKey = customKeypad.getKey();
  switch(customKey){
    case '0' ... '9':
      lcd.setCursor(0,1);
      number = number * 10 + (customKey - '0');
      lcd.print(number);
      noTone(buzzer);
    break;
    case '*':
        number = 0;
        lcd.setCursor(0,1);
        lcd.print("                ");
    break;
    case '#':
      if(number==password){
        lcd.setCursor(0,1);
        lcd.print("Access Granted");
        digitalWrite(led, HIGH);
        delay(1000);
        tone(buzzer,500);
        delay(50);
        noTone(buzzer);
      }else{
        lcd.setCursor(0,1);
        lcd.print("Wrong Password");
        delay(200);
        tone(buzzer,1000);
        delay(200);
        tone(buzzer,800);
        delay(2000);
        noTone(buzzer);
      }
  }
}