#include <Keypad.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.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 11
#define LED_RED 12
//configure KeyPad
char key[4][4] = {//ROW COLUMN
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
unsigned char row[4] = {9,8,7,6}; //define pins to keyboard
unsigned char col[4] = {5,4,3,2}; //define pins to column keyboard
char buffer[16] = {0};
unsigned char posX = 0;
unsigned char posY = 0;
Keypad keypad = Keypad(makeKeymap(key),row,col,4,4);
LiquidCrystal_I2C display(0x27,16,2);
void setup() {
display.init();
display.backlight();
display.setCursor(0,0);
display.print(message);
pinMode(LED_RED, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
// put your setup code here, to run once:
}
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);
}
}
}
// put your main code here, to run repeatedly:
}