#include <Wire.h> #include <LiquidCrystal_I2C.h> #include <Keypad.h> #define Password_Length 5 int led = 10; int led2 = 13; int signalPin = 12; const int buzzer = 11; char Data[Password_Length]; char Master[Password_Length] = "1111"; char Master2[Password_Length] = "1010"; byte data_count = 0, master_count = 0; bool Pass_is_good; char customKey; const byte ROWS = 4; const byte COLS = 4; char hexaKeys[ROWS][COLS] = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; byte rowPins[ROWS] = {9, 8, 7, 6}; byte colPins[COLS] = {5, 4, 3, 2}; Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); LiquidCrystal_I2C lcd(0x3F, 16, 2); void setup(){ lcd.init(); lcd.backlight(); pinMode(signalPin, OUTPUT); pinMode(led, OUTPUT); pinMode(led2, OUTPUT); } void loop(){ lcd.setCursor(0,0); lcd.print("Enter Password:"); customKey = customKeypad.getKey(); if (customKey){ Data[data_count] = customKey; lcd.setCursor(data_count,1); lcd.print(Data[data_count]); data_count++; } if(data_count == Password_Length-1){ lcd.clear(); if(!strcmp(Data, Master)){ lcd.print("door closed"); digitalWrite(signalPin, HIGH); digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); } else if(!strcmp(Data, Master2)){ lcd.print("door open"); digitalWrite(signalPin, LOW); digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); } else{ lcd.print("Incorrect"); tone(buzzer, 2500); digitalWrite(led2, HIGH); delay(1000); digitalWrite(led2, LOW); noTone(buzzer); } lcd.clear(); clearData(); } } void clearData(){ while(data_count !=0){ Data[data_count--] = 0; } return; }