#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
byte rowPins[ROWS] = {2, 3, 4, 5};
byte colPins[COLS] = {6, 7, 8};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
LiquidCrystal_I2C lcd(0x27, 16, 2);
const String PASSWORD = "091235";
String inputPassword;
const int RED_LED = 9;
const int GREEN_LED = 10;
const int BLUE_LED = 11;
const int SUBMIT_BTN = 12;
const int CLEAR_BTN = 13;
void setup() {
lcd.init();
lcd.backlight();
lcd.print("Enter Password:");
lcd.setCursor(0, 1);
pinMode(RED_LED, OUTPUT);
pinMode(GREEN_LED, OUTPUT);
pinMode(BLUE_LED, OUTPUT);
pinMode(SUBMIT_BTN, INPUT_PULLUP);
pinMode(CLEAR_BTN, INPUT_PULLUP);
}
void loop() {
char key = keypad.getKey();
if (key) {
if (key != '*' && key != '#' && inputPassword.length() < 6) {
inputPassword += key;
lcd.print("*");
digitalWrite(BLUE_LED, HIGH);
digitalWrite(RED_LED, LOW);
digitalWrite(GREEN_LED, LOW);
}
}
if (digitalRead(SUBMIT_BTN) == LOW) {
if (inputPassword == PASSWORD) {
lcd.clear();
lcd.print("Access Granted!");
digitalWrite(GREEN_LED, HIGH);
digitalWrite(RED_LED, LOW);
digitalWrite(BLUE_LED, LOW);
} else {
lcd.clear();
lcd.print("Access Denied!");
lcd.setCursor(0, 1);
lcd.print("Wrong Password!");
for (int i = 0; i < 3; i++) {
digitalWrite(RED_LED, HIGH);
delay(500);
digitalWrite(RED_LED, LOW);
delay(500);
}
lcd.clear();
lcd.print("Enter Password:");
lcd.setCursor(0, 1);
inputPassword = "";
}
delay(200);
}
if (digitalRead(CLEAR_BTN) == LOW) {
inputPassword = "";
lcd.clear();
lcd.print("Enter Password:");
lcd.setCursor(0, 1);
delay(200);
}
}