#include <Keypad.h>
#define ROW_NUM 4
#define COL_NUM 4
char key = '\0';
String inp = "";
String pass = "";
char keys[ROW_NUM][COL_NUM] = {
{ '1', '2', '3', 'A' },
{ '4', '5', '6', 'B' },
{ '7', '8', '9', 'C' },
{ '*', '0', '#', 'D' }
};
byte rowPins[ROW_NUM] = {19, 18, 5, 17};
byte colPins[COL_NUM] = {16, 4, 2, 15};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROW_NUM, COL_NUM);
void setup() {
Serial.begin(9600);
Serial.println("Welcome to your personal lock services!");
delay(1000);
Serial.println("Press # to set a new password.");
Serial.println(key);
while (true) {
key = keypad.getKey();
if (key == '#') break;
delay(50);
}
newPass();
checkPass();
}
void loop() {
delay(10000);
}
void newPass() {
Serial.println("Enter a new password. Press # when password set.");
while (true) {
key = keypad.getKey();
if (key) {
if (key == '#') {
Serial.println("\nPassword has been set!\n");
break;
}
else if (key == '*') {
pass = "";
Serial.println("\nInput cleared. Enter your new password again.");
}
else {
pass.concat(key);
Serial.print('@');
}
}
delay(50);
}
delay(1000);
}
void checkPass() {
Serial.println("Enter Password. Press # when password entered: ");
while (true) {
key = keypad.getKey();
if (key) {
if (key == '#') {
if (inp == pass) {
Serial.println("\nAccess granted!");
break;
}
else {
Serial.println("\nAccess denied, try again.");
inp = "";
}
}
else if (key == '*') {
inp = "";
Serial.println("\nInput cleared. Enter your password again.");
}
else {
inp.concat(key);
Serial.print('@');
}
}
delay(50);
}
}