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 no, 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:

Code:

/* 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 A)

 *  By SurtrTech

 */

#include <Keypad.h> //Libraries you can download them via Arduino IDE

#include <Wire.h>

#include <LCD.h>

#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");

          

         }

               

              }

}

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s

Blog at WordPress.com.

Up ↑

%d bloggers like this: