#include <Keypad.h>
const int ROWS = 4; // จำนวนแถวของ keypad
const int COLS = 4; // จำนวนคอลัมน์ของ keypad
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {13, 12, 14, 27};
byte colPins[COLS] = {26, 25, 33, 32};
char key;
Keypad keypad = Keypad(makeKeymap(keys),rowPins,colPins,ROWS,COLS);
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
#define Password_Lenght 7
char Data[Password_Lenght];
char Master[Password_Lenght] = "455669";
byte data_count = 0;
byte master_count = 0;
bool door = 1;
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
lcd.clear();
}
void loop() {
if (door == 0) {
key = keypad.getKey();
if (key == '#') {
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("Door is close");
delay(3000);
door = 1;
clearData();
}
}
else {
Open();
}
}
void clearData() {
while (data_count != 0) {
Data[data_count--] = 0;
}
lcd.clear();
return;
}
void Open() {
lcd.setCursor(0, 0);
lcd.print("Password : ");
key = keypad.getKey();
if (key) {
Data[data_count] = key;
lcd.setCursor(data_count+11, 0);
lcd.print(Data[data_count]);
data_count++;
}
if (data_count == Password_Lenght - 1) {
if (!strcmp(Data, Master)) {
lcd.setCursor(4, 2);
lcd.print("Door is Open");
door = 0;
}
else {
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("Wrong Password");
delay(1000);
door = 1;
clearData();
}
}
return;
}