#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
const char LED_RED = A0;
const char LED_GREEN = A1;
const char LED_BLUE = A2;
const char LED_OP = A3;
const char Buzzer = 125;
#define Password_Length 9 // Length of password + 1 for null character
char Data[Password_Length]; // Character to hold password input
char Master[Password_Length] = "17293364"; // Password
byte data_count = 0; // Counter for character entries
const byte numRows= 4; //number of rows on the keypad
const byte numCols= 3; //number of columns on the keypad
char keymap[numRows][numCols]=
{
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
byte rowPins[numRows] = {8,7,6,5}; //Rows 0 to 3
byte colPins[numCols]= {4,3,2}; //Columns 0 to 3
Keypad myKeypad= Keypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols);
void setup()
{
lcd.init(); // initialize the lcd
lcd.backlight();
lcd.setCursor(6,0);
lcd.print("WELCOME");
delay(1000);
lcd.setCursor(0,2);
lcd.print("Enter Password:");
pinMode(LED_GREEN,OUTPUT);
pinMode(LED_RED,OUTPUT);
pinMode(LED_OP,OUTPUT);
digitalWrite(Buzzer,HIGH);
delay(2000);
digitalWrite(Buzzer, LOW);
digitalWrite(LED_RED,HIGH);
}
void loop()
{
char keypressed = myKeypad.getKey();
if (keypressed != NO_KEY && keypressed != '*') // Data input for array
{
if (keypressed != NO_KEY && keypressed != '#')
{
Data[data_count] = keypressed;
lcd.setCursor(data_count, 3);
lcd.print(Data[data_count]);
data_count++;
}
}
if(keypressed == '*') // to delit last char entry (*-key)
{
data_count = data_count-1;
lcd.setCursor(data_count, 3);
lcd.print(' ');
}
if(keypressed == '#') // to delit last char entry (*-key)
{
clearData();
lcd.setCursor(0,3);
lcd.print(" ");
}
if (data_count == Password_Length - 1) // See if we have reached the password length
{
lcd.clear();
if (!strcmp(Data, Master)){// Password is correct
ATH_DONE();
}
else
{
ATH_FAIL();
}
clearData();
}
}
void ATH_DONE() {
digitalWrite(LED_RED,LOW);
digitalWrite(LED_GREEN,LOW);
lcd.setCursor(2,0);
lcd.print("CORRECT PASSWORD");
delay(1000);
lcd.setCursor(2,2);
lcd.print("SENSORS ACTIVATED");
digitalWrite(LED_GREEN,HIGH);
digitalWrite(LED_OP,HIGH);
}
void ATH_FAIL() {
digitalWrite(LED_RED,LOW);
digitalWrite(LED_GREEN,LOW);
lcd.setCursor(5,0);
lcd.print("ATH FAILED");
lcd.setCursor(0,2);
lcd.print("Incorrect Password");
delay(1000);
clearData();
lcd.clear();
lcd.setCursor(6,0);
lcd.print("WELCOME");
lcd.setCursor(0,2); // Initialize LCD and print
lcd.print("Re-Enter PSWRD:");
digitalWrite(LED_RED,HIGH);
}
void clearData() {
while (data_count != 0) // Go through array and clear data
{
Data[data_count--] = 0;
}
return;
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
lcd:GND
lcd:VCC
lcd:SDA
lcd:SCL
keypad1:R1
keypad1:R2
keypad1:R3
keypad1:R4
keypad1:C1
keypad1:C2
keypad1:C3