/*This software is provided in an “AS IS” condition,NO WARRANTIES in any form apply to this software. picmicrolab.com 10.12.2017 *************************************************************************************************************** Arduino Electronic Lock */ // include the library code: #include // initialize the library by associating any needed LCD interface pin // with the arduino pin number it is connected to const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); int NewKeyPadVal = 0; //***************************Default Code Digits Settings****************** int CodeDigit1 = 3; int CodeDigit2 = 6; int CodeDigit3 = 9; int CodeDigit4 = 6; //************************************************************************** //----Input Code Digits-- int InputDigit1 = 0; int InputDigit2 = 0; int InputDigit3 = 0; int InputDigit4 = 0; int InputDigit5 = 0; //---------------------- void setup() { // initialize I/O pins. pinMode(A0, OUTPUT); //Relay to Elock //--------------------------4x3 Keypad------------------ //------3 columns----- pinMode(A3, OUTPUT); pinMode(A2, OUTPUT); pinMode(A1, OUTPUT); digitalWrite(A3, HIGH); digitalWrite(A2, HIGH); digitalWrite(A1, HIGH); //-------4 rows----------- pinMode(6, INPUT_PULLUP); pinMode(7, INPUT_PULLUP); pinMode(8, INPUT_PULLUP); pinMode(9, INPUT_PULLUP); //------------------------ //---------------------------------------------------- // set up the LCD's number of columns and rows: lcd.begin(16, 2); } void loop() { lcd.display(); lcd.setCursor(0, 0); // top left lcd.print("Code "); //--------------------------------------------------- delay(400); while(Scan_4x3_keypad() == 15) delay(1); NewKeyPadVal = Scan_4x3_keypad(); InputDigit1 = NewKeyPadVal; lcd.print("*"); //---------------------------------------------------- delay(400); while(Scan_4x3_keypad() == 15) delay(1); NewKeyPadVal = Scan_4x3_keypad(); InputDigit2 = NewKeyPadVal; lcd.print("*"); //---------------------------------------------------- delay(400); while(Scan_4x3_keypad() == 15) delay(1); NewKeyPadVal = Scan_4x3_keypad(); InputDigit3 = NewKeyPadVal; lcd.print("*"); //---------------------------------------------------- delay(400); while(Scan_4x3_keypad() == 15) delay(1); NewKeyPadVal = Scan_4x3_keypad(); InputDigit4 = NewKeyPadVal; lcd.print("*"); //---------------------------------------------------- CompareCodeToInputDigits(); } void CompareCodeToInputDigits() { if(CodeDigit1 == InputDigit1 && CodeDigit2 == InputDigit2 && CodeDigit3 == InputDigit3 && CodeDigit4 == InputDigit4 ) { digitalWrite(A0, HIGH); delay(5000); digitalWrite(A0, LOW); delay(100); } } int Scan_4x3_keypad() { int keypadVal = 15; //----------Find 3,6,9,* ---- digitalWrite(A3, LOW); digitalWrite(A2, HIGH); digitalWrite(A1, HIGH); if(digitalRead(9) == LOW) keypadVal = 3; if(digitalRead(8) == LOW) keypadVal = 6; if(digitalRead(7) == LOW) keypadVal = 9; if(digitalRead(6) == LOW) keypadVal = 10;// 10 = # //--------------------------- //----------Find 2,5,8,0 ---- digitalWrite(A3, HIGH); digitalWrite(A2, LOW); digitalWrite(A1, HIGH); if(digitalRead(9) == LOW) keypadVal = 2; if(digitalRead(8) == LOW) keypadVal = 5; if(digitalRead(7) == LOW) keypadVal = 8; if(digitalRead(6) == LOW) keypadVal = 0; //--------------------------- //----------Find 1,4,7,* ---- digitalWrite(A3, HIGH); digitalWrite(A2, HIGH); digitalWrite(A1, LOW); if(digitalRead(9) == LOW) keypadVal = 1; if(digitalRead(8) == LOW) keypadVal = 4; if(digitalRead(7) == LOW) keypadVal = 7; if(digitalRead(6) == LOW) keypadVal = 11;// * = 11 return keypadVal; //--------------------------- }