#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <SPI.h>
//#include <MFRC522.h>
#define PUSH_BUTTON A0
#define NPUSH_BUTTON A4
#define LED 0
#define NLED A5
bool BUTTON_PRESSED = false;
bool NBUTTON_PRESSED = false;
#define SS_PIN 10
#define RST_PIN 9
//MFRC522 mfrc522(SS_PIN, RST_PIN);
/*----------------------KEYPAD--------------------------*/
const byte numRows= 4; //number of rows on the keypad
const byte numCols= 4; //number of columns on the keypad
char keypressed;
char keymap[numRows][numCols]=
{
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
//Code that shows the the keypad connections to the arduino terminals
byte rowPins[numRows] = {1,2,3,4};//Rows 0 to 3
byte colPins[numCols] = {5,6,7,8};//Columns 0 to 3
//initializes an instance of the Keypad class
Keypad myKeypad= Keypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols);
LiquidCrystal_I2C lcd(0x27, 20, 5);
LiquidCrystal_I2C lcd1(0x27, 20, 5);
const int buzzer = A1; //Buzzer/small speaker
const int lock = A2; //Electric door opener
const int nlock = A3;
const int gomb = A0;
const int ngomb = A4;
/*-------------------------------VARIABLES------------------------------------*/
String password="2580"; //Variable to store the current password
String kjelszo="4069";
String vjelszo="4141";
String pjelszo="369";
String mjelszo="147";
String tempPassword=""; //Variable to store the input password
int doublecheck; //Check twice the new passoword
boolean armed = false; //Variable for system state (armed:true / unarmed:false)
boolean input_pass; //Variable for input password (correct:true / wrong:false)
boolean storedPassword = true;
boolean changedPassword = false;
boolean checkPassword = false;
boolean checkPassword1 = false;
int i = 1; //variable to index an array
void setup()
{
//Serial.begin(9600);
pinMode(PUSH_BUTTON, INPUT_PULLUP);
pinMode(NPUSH_BUTTON, INPUT_PULLUP);
pinMode(LED, OUTPUT);
digitalWrite(LED, LOW);
lcd.init();
lcd.backlight();
pinMode(lock,OUTPUT);
pinMode(nlock, OUTPUT);
lcd.begin(16, 2); //Setup the LCD's number of columns and rows
//Print welcome message...
//SPI.begin(); // Initiate SPI bus
//mfrc522.PCD_Init(); // Initiate MFRC522
lcd.setCursor(3,0);
lcd.print("BELEPTETO");
lcd.setCursor(3,1);
lcd.print("RENDSZER");
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("KEVIN & VIKTOR");
lcd.setCursor(0,1);
lcd.print("DOOR SECURITY");
delay(2000);
lcd.clear();
//Serial.println("Put your card to the reader...");
//Serial.println();
}
void loop()
{
kiskodos();
}
void kiskodos(){
torles:
lockAgain: //goto label
tempPassword="";
lcd.clear();
i=5;
noTone(buzzer);
digitalWrite(lock, LOW);
digitalWrite(nlock, LOW);
while(!checkPassword){
/*
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
//Show UID on serial monitor
Serial.print("UID tag :");
String content= "";
byte letter;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
Serial.println();
Serial.print("Message : ");
content.toUpperCase();
//kevin kártya
if (content.substring(1) == "45 92 D2 AE" ) //change here the UID of the card/cards that you want to give access
{
Serial.println("Authorized access");
Serial.println();
goto kevinnyitas;
}
//viktor kártya
if (content.substring(1) == "45 92 D2 AE" ) //change here the UID of the card/cards that you want to give access
{
Serial.println("Authorized access");
Serial.println();
goto viktornyitas;
}
//papa kártya
if (content.substring(1) == "45 92 D2 AE" ) //change here the UID of the card/cards that you want to give access
{
Serial.println("Authorized access");
Serial.println();
goto papanyitas;
}
//mama kártya
if (content.substring(1) == "45 92 D2 AE" ) //change here the UID of the card/cards that you want to give access
{
Serial.println("Authorized access");
Serial.println();
goto papanyitas;
}
*/
if(!digitalRead(PUSH_BUTTON))
{
BUTTON_PRESSED =true;
}
else
{
BUTTON_PRESSED =false;
}
if(BUTTON_PRESSED)
{
lcd.clear();
digitalWrite(LED, HIGH);
lcd.setCursor(0,0);
lcd.print(" BELSO NYITAS ");
tone(buzzer,900);
delay(75);
noTone(buzzer);
delay(75);
tone(buzzer,900);
delay(75);
noTone(buzzer);
delay(75);
tone(buzzer,150); //Play a tone while door is unlocked
digitalWrite(lock, HIGH);//unlock the door for 5 seconds
delay(3000);
lcd.clear();
kiskodos();
}
else
{
digitalWrite(LED, LOW);
}
if(!digitalRead(NPUSH_BUTTON))
{
NBUTTON_PRESSED =true;
}
else
{
NBUTTON_PRESSED =false;
}
if(NBUTTON_PRESSED)
{
lcd.clear();
digitalWrite(NLED, HIGH);
lcd.setCursor(0,0);
lcd.print(" BELSO NYITAS ");
tone(buzzer,900);
delay(75);
noTone(buzzer);
delay(75);
tone(buzzer,900);
delay(75);
noTone(buzzer);
delay(75);
tone(buzzer,150); //Play a tone while door is unlocked
digitalWrite(nlock, HIGH);//unlock the door for 5 seconds
delay(3000);
lcd.clear();
digitalWrite(NLED, LOW);
kiskodos();
}
else
{
digitalWrite(LED, LOW);
}
lcd.setCursor(0,0);
lcd.print("Kis kapu nyitas ");
lcd.setCursor(0,1);
lcd.print("KOD>");
keypressed = myKeypad.getKey(); //Read pressed keys
if (keypressed != NO_KEY){ //Accept only numbers and * from keypad
if (keypressed == '0' || keypressed == '1' || keypressed == '2' || keypressed == '3' ||
keypressed == '4' || keypressed == '5' || keypressed == '6' || keypressed == '7' ||
keypressed == '8' || keypressed == '9'){
tempPassword += keypressed;
lcd.setCursor(i,1);
lcd.print("*"); //Put * on lcd
i++;
tone(buzzer,800,200); //Button tone
}
else if (keypressed == 'A'){
tone(buzzer,500,200);
delay(500);
//kiskodos();
goto lockAgain;
}
else if (keypressed == 'B'){
tone(buzzer,500,200);
delay(500);
nagykapunyitas();
}
else if (keypressed == 'C'){
tone(buzzer,500,200);
delay(500);
//kartyasnyitas();
}
else if (keypressed == 'D'){
tone(buzzer,500,200);
delay(500);
// menu();
}
else if (keypressed=='*'){
tone(buzzer,500,200);
delay(500);
goto torles;
}
else if (keypressed == '#'){ //Check for password
if (password==tempPassword){//If it's correct...
lcd.clear();
lcd.setCursor(0,0);
lcd.print("ELFOGADVA");
lcd.setCursor(0,1);
lcd.print("Az ajto nyitva");
tone(buzzer,900);
delay(75);
noTone(buzzer);
delay(75);
tone(buzzer,900);
delay(75);
noTone(buzzer);
delay(75);
tone(buzzer,150); //Play a tone while door is unlocked
digitalWrite(lock, HIGH);//unlock the door for 5 seconds
delay(3000);
kartyasnyitas();
}
else if(kjelszo==tempPassword){
kevinnyitas:
lcd.clear();
lcd.setCursor(0,0);
lcd.print("HELLO KEVIN!");
lcd.setCursor(0,1);
lcd.print("ERVENYES KOD");
tone(buzzer,500,200);
delay(500);
goto atugrask;
//kevinnyitas:
lcd.clear();
lcd.setCursor(0,0);
lcd.print("HELLO KEVIN!");
lcd.setCursor(0,1);
lcd.print("ERVENYES KARTYA");
delay(500);
atugrask:
tone(buzzer,900);
delay(75);
noTone(buzzer);
delay(75);
tone(buzzer,900);
delay(75);
noTone(buzzer);
delay(75);
tone(buzzer,150);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" BELEPES");
lcd.setCursor(0,1);
lcd.print(" ENGEDELYEZVE"); //Play a tone while door is unlocked
digitalWrite(lock, HIGH);//unlock the door for 5 seconds
delay(3000);
kartyasnyitas();
}
else if(vjelszo==tempPassword){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("HELLO VIKTOR!");
lcd.setCursor(0,1);
lcd.print("ERVENYES KOD");
tone(buzzer,500,200);
delay(500);
goto atugrasv;
//viktornyitas:
lcd.clear();
lcd.setCursor(0,0);
lcd.print("HELLO VIKTOR!");
lcd.setCursor(0,1);
lcd.print("ERVENYES KARTYA");
delay(1500);
atugrasv:
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" BELEPES");
lcd.setCursor(0,1);
lcd.print(" ENGEDELYEZVE");
tone(buzzer,900);
delay(75);
noTone(buzzer);
delay(75);
tone(buzzer,900);
delay(75);
noTone(buzzer);
delay(75);
tone(buzzer,150); //Play a tone while door is unlocked
digitalWrite(lock, HIGH);//unlock the door for 5 seconds
delay(3000);
kartyasnyitas();
}
else if(pjelszo==tempPassword){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("HELLO PAPA!");
lcd.setCursor(0,1);
lcd.print("ERVENYES KOD");
tone(buzzer,500,200);
delay(500);
goto atugrasp;
//papanyitas:
lcd.clear();
lcd.setCursor(0,0);
lcd.print("HELLO PAPA!");
lcd.setCursor(0,1);
lcd.print("ERVENYES KARTYA");
delay(1500);
atugrasp:
lcd.clear();
lcd.setCursor(0,0);
lcd.print( "BELEPES");
lcd.setCursor(0,1);
lcd.print(" ENGEDELYEZVE");
tone(buzzer,900);
delay(75);
noTone(buzzer);
delay(75);
tone(buzzer,900);
delay(75);
noTone(buzzer);
delay(75);
tone(buzzer,150); //Play a tone while door is unlocked
digitalWrite(lock, HIGH);//unlock the door for 5 seconds
delay(3000);
kartyasnyitas();
}
else if(mjelszo==tempPassword){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("HELLO MAMA!");
lcd.setCursor(0,1);
lcd.print("ERVENYES KOD");
tone(buzzer,500,200);
delay(500);
goto atugrasm;
//mamanyitas:
lcd.clear();
lcd.setCursor(0,0);
lcd.print("HELLO MAMA!");
lcd.setCursor(0,1);
lcd.print("ERVENYES KARTYA");
delay(1500);
atugrasm:
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" BELEPES");
lcd.setCursor(0,1);
lcd.print(" ENGEDELYEZVE");
tone(buzzer,900);
delay(75);
noTone(buzzer);
delay(75);
tone(buzzer,900);
delay(75);
noTone(buzzer);
delay(75);
tone(buzzer,150); //Play a tone while door is unlocked
digitalWrite(lock, HIGH);//unlock the door for 5 seconds
delay(3000);
kartyasnyitas();
}
else{ //if it's false, retry
tempPassword="";
lcd.clear();
lcd.setCursor(0,0);
lcd.print("ELUTASITVA");
lcd.setCursor(0,1);
lcd.print("Teves kod");
tone(buzzer,500,200);
delay(300);
tone(buzzer,500,200);
delay(300);
tone(buzzer,500,200);
delay(300);
noTone(buzzer);
delay(300);
goto lockAgain;
}
}
}
}
}
void nagykapunyitas(){
ide:
lockAgain1: //goto label
tempPassword="";
lcd.clear();
i=9;
noTone(buzzer);
digitalWrite(lock, LOW);
digitalWrite(nlock, LOW);
while(!checkPassword1){
if(!digitalRead(PUSH_BUTTON))
{
BUTTON_PRESSED =true;
}
else
{
BUTTON_PRESSED =false;
}
if(BUTTON_PRESSED)
{
lcd.clear();
digitalWrite(LED, HIGH);
lcd.setCursor(0,0);
lcd.print(" BELSO NYITAS ");
tone(buzzer,900);
delay(75);
noTone(buzzer);
delay(75);
tone(buzzer,900);
delay(75);
noTone(buzzer);
delay(75);
tone(buzzer,150); //Play a tone while door is unlocked
digitalWrite(lock, HIGH);//unlock the door for 5 seconds
delay(3000);
lcd.clear();
nagykapunyitas();
}
else
{
digitalWrite(LED, LOW);
}
lcd.setCursor(0,0);
lcd.print("Auto kapu nyitas ");
lcd.setCursor(0,1);
lcd.print("KAPUKOD>");
keypressed = myKeypad.getKey(); //Read pressed keys
if (keypressed != NO_KEY){ //Accept only numbers and * from keypad
if (keypressed == '0' || keypressed == '1' || keypressed == '2' || keypressed == '3' ||
keypressed == '4' || keypressed == '5' || keypressed == '6' || keypressed == '7' ||
keypressed == '8' || keypressed == '9'){
tempPassword += keypressed;
lcd.setCursor(i,1);
lcd.print("*"); //Put * on lcd
i++;
tone(buzzer,800,200); //Button tone
}
else if (keypressed == 'A'){
tone(buzzer,500,200);
delay(500);
kiskodos();
}
else if (keypressed == 'B'){
tone(buzzer,500,200);
delay(500);
nagykapunyitas();
}
else if (keypressed == 'C'){
tone(buzzer,500,200);
delay(500);
kartyasnyitas();
}
else if (keypressed == 'D'){
tone(buzzer,500,200);
delay(500);
//menu();
}
else if (keypressed=='*'){
tone(buzzer,500,200);
delay(500);
goto ide;
}
else if (keypressed == '#'){ //Check for password
tone(buzzer,500,200);
delay(500);
if (kjelszo==tempPassword){//If it's correct...
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Hello Kevin!");
lcd.setCursor(0,1);
lcd.print("Nagy kapu nyilik");
digitalWrite(nlock, HIGH);
tone(buzzer,400);
delay(700);
noTone(buzzer);
delay(700);
tone(buzzer,400);
delay(700);
noTone(buzzer);
delay(700);
tone(buzzer,400);
delay(700);
kartyasnyitas();
}
else if(vjelszo==tempPassword){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Hello Viktor!");
lcd.setCursor(0,1);
lcd.print("Nagy kapu nyilik");
digitalWrite(nlock, HIGH);
digitalWrite(nlock, HIGH);
tone(buzzer,400);
delay(700);
noTone(buzzer);
delay(700);
tone(buzzer,400);
delay(700);
noTone(buzzer);
delay(700);
tone(buzzer,400);
delay(700);
kartyasnyitas();
}
else if(pjelszo==tempPassword){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Hello Papa!");
lcd.setCursor(0,1);
lcd.print("Nagy kapu nyilik");
digitalWrite(nlock, HIGH);//unlock the door for 5 seconds
digitalWrite(nlock, HIGH);
tone(buzzer,400);
delay(700);
noTone(buzzer);
delay(700);
tone(buzzer,400);
delay(700);
noTone(buzzer);
delay(700);
tone(buzzer,400);
delay(700);
kartyasnyitas();
}
else if(mjelszo==tempPassword){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Hello Mama!");
lcd.setCursor(0,1);
lcd.print("Nagy kapu nyilik");
digitalWrite(nlock, HIGH);
digitalWrite(nlock, HIGH);
tone(buzzer,400);
delay(700);
noTone(buzzer);
delay(700);
tone(buzzer,400);
delay(700);
noTone(buzzer);
delay(700);
tone(buzzer,400);
delay(700);
kartyasnyitas();
}
else{ //if it's false, retry
tempPassword="";
lcd.clear();
lcd.setCursor(0,0);
lcd.print("ELUTASITVA");
lcd.setCursor(0,1);
lcd.print("Teves kod");
tone(buzzer,500,200);
delay(300);
tone(buzzer,500,200);
delay(300);
tone(buzzer,500,200);
delay(300);
noTone(buzzer);
delay(300);
goto lockAgain1;
}
}
}
}
}
void kartyasnyitas()
{
loop();
}