#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
#define RELAY 5
LiquidCrystal_I2C lcd(0x27, 16, 2);
const byte ROW = 4;
const byte COL = 4;
const char arr[ROW][COL] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte pinRow[] = {13, 12, 11, 10};
byte pinCol[] = {9, 8, 7, 6};
Keypad matriks = Keypad(makeKeymap(arr), pinRow, pinCol, ROW, COL);
char button;
int number = 0;
int password = 2607;
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
pinMode(RELAY, OUTPUT);
}
void loop() {
lcd.setCursor(0, 0);
lcd.print("Input Password = ");
char button = matriks.getKey();
switch (button) {
case '0' ... '9':
lcd.setCursor(0, 1);
number = number * 10 + (button - '0');
lcd.print(number);
break;
case '#':
if (number == password) {
lcd.setCursor(0, 1);
lcd.print("Door Is Open");
digitalWrite(33, HIGH);
digitalWrite(RELAY, HIGH);
delay(2000);
digitalWrite(33, LOW);
digitalWrite(RELAY, LOW);
number = 0;
lcd.clear();
}
else {
lcd.setCursor(0, 1);
lcd.print("Access Deny");
delay(5000);
digitalWrite(26, HIGH);
digitalWrite(RELAY, HIGH);
delay(2000);
digitalWrite(26, LOW);
digitalWrite(RELAY, LOW);
number = 0;
lcd.clear();
}
break;
case '*':
number = 0;
lcd.clear();
break;
}
}