#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#define R1 9
#define R2 8
#define R3 7
#define R4 6
#define C1 5
#define C2 4
#define C3 3
#define C4 2
#define message "enter password"
#define LED_GREEN 13
#define LED_RED 12
//configure LCD
LiquidCrystal_I2C display(0x27,16,2);
//configure keypad
char key[4][4] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
unsigned char row[4] = {9,8,7,6};
unsigned char col[4] = {5,4,3,2};
char buffer[16] = {0};
unsigned char posX = 0;
unsigned char posY = 0;
Keypad keypad = Keypad(makeKeymap(key),row,col,4,4);
void setup(){
display.init();
display.backlight();
display.setCursor(0,0);
display.print(message);
pinMode(LED_GREEN, OUTPUT);
pinMode(LED_RED, OUTPUT);
}
void loop(){
char key = keypad.getKey();
if(key)
{
if(posX == 0){
display.clear();
display.print(message);
}
buffer[posX] = key;
display.setCursor(posX++,1);
display.print(key);
digitalWrite(LED_GREEN,LOW);
digitalWrite(LED_RED, LOW);
if(posX >= 5)
{
posX = 0;
display.clear();
if(!strcmp(buffer,"12345")){
display.setCursor(0,0);
display.print("valid password");
digitalWrite(LED_GREEN, HIGH);
}
else if(!strcmp(buffer,"98765")){
display.setCursor(0,0);
display.print("valid password");
digitalWrite(LED_GREEN,HIGH);
}
else{
display.setCursor(0,0);
display.print("invalid password");
digitalWrite(LED_RED,HIGH);
}
}
}
}