Simplest Arduino Lock/unlock code/algorithm using Keypad and LCD screen
Hello,
This post is about an Arduino locking algorithm/code you can add to your own projects, the code is very simple to use and understand by beginners, the code here is used to show a message on the LCD screen if the code is correct or not, you can add it to your own projects, with servo locks or relays or whatever you are using.
Check my other tutorial about LCD i2c screen if you don’t know how to use it yet:
Arduino LCD I2C simple use and direct write from serial monitor
Wiring:
The wiring is easy the Keypad pins are from 2 to 9 digital pins, the LCD I use is a i2c version, it has 4 pins GND/VCC/SDA/SCL are wired respectively with GND/5V/A4/A5.
Later you can add a relay, solenoid or adapt an electronic lock and integrate this algorithm.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
/* Arduino Unlocking code to use with you're own mechanism, here it's used to show a welcome or not * message on a lcd i2c screen * The wiring is (keypad from 8to1) to arduino digital pins(9to2) * lcd i2c on (5v,GND, SDA on A4 SCL on A5) * By SurtrTech */ #include <Keypad.h> //Libraries you can download them via Arduino IDE #include <LiquidCrystal_I2C.h> #define I2C_ADDR 0x27 // LCD i2c Adress and pins #define BACKLIGHT_PIN 3 #define En_pin 2 #define Rw_pin 1 #define Rs_pin 0 #define D4_pin 4 #define D5_pin 5 #define D6_pin 6 #define D7_pin 7 LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin); const byte numRows= 4; //number of rows on the keypad const byte numCols= 4; //number of columns on the keypad int code = 1366; //The code I used, you can change it int tot,i1,i2,i3,i4; char c1,c2,c3,c4; //keymap defines the key pressed according to the row and columns just as appears on the keypad 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] = {9,8,7,6}; //Rows 0 to 3 byte colPins[numCols]= {5,4,3,2}; //Columns 0 to 3 //initializes an instance of the Keypad class Keypad myKeypad= Keypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols); void setup() { lcd.begin (16,2); lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE); lcd.setBacklight(HIGH); lcd.home (); lcd.print("SurtrTech"); lcd.setCursor(9, 1); lcd.print("Standby"); delay(2000); } void loop() { char keypressed = myKeypad.getKey(); //The getKey fucntion keeps the program runing, as long you didn't press "*" the whole thing bellow wouldn't be triggered if (keypressed == '*') // and you can use the rest of you're code simply { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Enter Code"); //when the "*" key is pressed you can enter the passcode keypressed = myKeypad.waitForKey(); // here all programs are stopped until you enter the four digits then it gets compared to the code above if (keypressed != NO_KEY) { c1 = keypressed; lcd.setCursor(0, 1); lcd.print("*"); } keypressed = myKeypad.waitForKey(); if (keypressed != NO_KEY) { c2 = keypressed; lcd.setCursor(1, 1); lcd.print("*"); } keypressed = myKeypad.waitForKey(); if (keypressed != NO_KEY) { c3 = keypressed; lcd.setCursor(2, 1); lcd.print("*"); } keypressed = myKeypad.waitForKey(); if (keypressed != NO_KEY) { c4 = keypressed; lcd.setCursor(3, 1); lcd.print("*"); } i1=(c1-48)*1000; //the keys pressed are stored into chars I convert them to int then i did some multiplication to get the code as an int of xxxx i2=(c2-48)*100; i3=(c3-48)*10; i4=c4-48; tot=i1+i2+i3+i4; if (tot == code) //if the code is correct you trigger whatever you want here it just print a message on the screen { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Welcome"); lcd.setCursor(7, 1); lcd.print("SurtrTech"); delay(3000); lcd.clear(); lcd.print("SurtrTech"); lcd.setCursor(9, 1); lcd.print("Standby"); } else //if the code is wrong you get another thing { lcd.clear(); lcd.setCursor(0, 0); lcd.print("GTFO LOL"); delay(3000); lcd.clear(); lcd.print("SurtrTech"); lcd.setCursor(9, 1); lcd.print("Standby"); } } } |
Categories
Yassine View All
Automation and Electrical Engineer, Electronics amateur trying to share my little projects.
One thought on “Simplest Arduino Lock/unlock code/algorithm using Keypad and LCD screen” Leave a comment ›