#include <Keypad.h>
#include <Servo.h>
// Define the keypad layout
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {6, 7, 8, 9};
byte colPins[COLS] = {A0, A1, A2, A3};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
Servo doorLock;
// Correct password
const String password = "2207";
String inputPassword;
void setup() {
doorLock.attach(10); // Attach servo on pin 10
doorLock.write(0); // Lock the door initially
Serial.begin(9600);
}
void loop() {
char key = keypad.getKey();
if (key) {
// Check if the key is a digit
if (key >= '0' && key <= '9') {
inputPassword += key; // Append key to inputPassword
Serial.print("Input: ");
Serial.println(inputPassword);
}
// Check if '#' is pressed
if (key == 'A') {
if (inputPassword == password) {
unlockDoor();
} else {
Serial.println("Wrong Password!");
}
// Reset the input
inputPassword = "";
}
// Check if '*' is pressed
if (key == '*') {
// Reset the input
inputPassword = "";
Serial.println("Input Cleared");
}
}
}
void unlockDoor() {
Serial.println("Door Opened!");
doorLock.write(90); // Move servo to unlock position
delay(5000); // Keep unlocked for 5 seconds
doorLock.write(0); // Lock the door again
Serial.println("Door Closed!");
}