#include <Keypad.h>
/* Display */
/* Keypad setup */
byte rowPins[4] = {5, 4, 3, 2};
byte colPins[4] = {A3, A2, A1, A0};
char keys[4][4] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, 4, 4);
byte pin[4] = {'1', '2', '3', '4'}; // Replace with your desired PIN
char enteredPin[4];
int pinIndex = 0;
bool checkPIN() {
// Check if the entered PIN matches the predefined PIN
for (int i = 0; i < 4; i++) {
if (enteredPin[i] != pin[i]) {
return false; // PIN mismatch
}
}
return true; // PIN matches
}
void resetPIN() {
// Reset entered PIN and index
for (int i = 0; i < 4; i++) {
enteredPin[i] = '\0';
}
pinIndex = 0;
}
void setup() {
Serial.begin(115200);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
}
void loop() {
char key = keypad.getKey();
if (key) {
if (key == '#') {
// Check the entered PIN when '#' is pressed
if (checkPIN()) {
Serial.println("Access granted!");
digitalWrite(8, HIGH);
delay(200);
digitalWrite(8, LOW);
delay(100);
digitalWrite(8, HIGH);
delay(200);
digitalWrite(8, LOW);
} else {
Serial.println("Incorrect PIN. Try again.");
digitalWrite(9, HIGH);
delay(100);
digitalWrite(9, LOW);
delay(100);
digitalWrite(9, HIGH);
delay(100);
digitalWrite(9, LOW);
}
resetPIN();
} else {
// Update entered PIN
enteredPin[pinIndex] = key;
pinIndex++;
}
}
}