#include <LiquidCrystal_I2C.h>
#include <Servo.h>
#include <Keypad.h>
Servo servo;
int servoPin = 3;
int red = 4;
int green = 5;
LiquidCrystal_I2C lcd(0x27, 16, 2);
char keys[4][4] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
uint8_t rows[4] = {13, 12, 11, 10};
uint8_t cols[4] = {9, 8, 7, 6};
uint8_t ROWS = 4;
uint8_t COLS = 4;
Keypad pad(makeKeymap(keys), rows, cols, ROWS, COLS);
String code = "4859";
String attempt = "";
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Password : ");
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
digitalWrite(red, 0);
digitalWrite(green, 0);
servo.attach(servoPin);
servo.write(0);
}
void loop() {
char key = pad.getKey();
if(key != NO_KEY){
lcd.setCursor(attempt.length(), 1);
lcd.print("*");
attempt += key;
if(attempt.length() == code.length()){
if(code == attempt){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Code Correct");
digitalWrite(green, HIGH);
for(int i = 0; i <= 180; i++){
servo.write(i);
delay(10);
}
delay(2000);
for(int i = 180; i >= 0; i--){
servo.write(i);
delay(10);
}
digitalWrite(green, LOW);
}else{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Code Incorrect");
digitalWrite(red, HIGH);
delay(2000);
digitalWrite(red, LOW);
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Password : ");
attempt = "";
}
}
}