Arnav Bagchi
Published

Password Protected Door Lock

Automatic door lock using Arduino

IntermediateShowcase (no instructions)7,489
Password Protected Door Lock

Things used in this project

Story

Read more

Schematics

Password Protected Door Lock

buzzer - 11 Arduino pin
keypad
row1 - A0 Arduino pin
row2 - A1 Arduino pin
row3 - A2 Arduino pin
row4 -A3 Arduino pin
column1 - A4 Arduino pin
column2 - A5 Arduino pin
column3 - 3 Arduino pin
column4 - 2 Arduino pin
LCD
Ground - ground
VCC - 5V
V0/VEE - potentiometer
Register Select - 9 Arduino pin
Read/Write - ground
Enable - 8 Arduino pin
Data Bit 4 - 7 Arduino pin
Data Bit 5 - 6 Arduino pin
Data Bit 6 - 5 Arduino pin
Data bit 7 - 4 Arduino pin
LED Positive - 5V
LED Negative - ground
potentiometer
terminal1 - V+
Wiper - V0/VEE
terminal2 - ground

Code

Password Protected Door Lock code

Arduino
#include <Keypad.h>

#include<LiquidCrystal.h>

#include<EEPROM.h>

LiquidCrystal liquid_crystal_display(9,8,7,6,5,4);

char password[4];

char initial_password[4],new_password[4];

int i=0;

int relay_pin = 10;

char key_pressed=0;

const byte rows = 4; 

const byte columns = 4; 

char hexaKeys[rows][columns] = {

{'1','2','3','A'},

{'4','5','6','B'},

{'7','8','9','C'},

{'*','0','#','D'}

};

byte row_pins[rows] = {A0,A1,A2,A3};

byte column_pins[columns] = {A4,A5,3,2};   

Keypad keypad_key = Keypad( makeKeymap(hexaKeys), row_pins, column_pins, rows, columns);




void setup()

{

  pinMode(11, OUTPUT);
  
  pinMode(relay_pin, OUTPUT);

  liquid_crystal_display.begin(16,2);

  liquid_crystal_display.print(" Arnav "); // Try putting your name

  liquid_crystal_display.setCursor(0,1);

  liquid_crystal_display.print("Electronic Lock ");

  delay(2000);

  liquid_crystal_display.clear();

  liquid_crystal_display.print("Enter Password");

  liquid_crystal_display.setCursor(0,1);

  initialpassword();

}




void loop()

{

  digitalWrite(relay_pin, HIGH);

  key_pressed = keypad_key.getKey();

  if(key_pressed=='#')

    change();

  if (key_pressed)

  {

    password[i++]=key_pressed;

    liquid_crystal_display.print(key_pressed);

      }

  if(i==4)

  {

    delay(200);

    for(int j=0;j<4;j++)

      initial_password[j]=EEPROM.read(j);

    if(!(strncmp(password, initial_password,4)))

    {

      liquid_crystal_display.clear();

      liquid_crystal_display.print("Pass Accepted");

      digitalWrite(relay_pin, LOW);
      
      liquid_crystal_display.setCursor(0,1);

      liquid_crystal_display.print("Opening the door");
      
    

      delay(2000);
    }

    else

    {

      digitalWrite(relay_pin, HIGH);




      liquid_crystal_display.clear();

      liquid_crystal_display.print("Wrong Password");
      
      digitalWrite(11, HIGH);

      liquid_crystal_display.setCursor(0,1);
      
      delay(1000);
      
      liquid_crystal_display.print("Press # to Change");

      delay(5000);
      
      digitalWrite(11, LOW);

      liquid_crystal_display.clear();

      liquid_crystal_display.print("Enter Password");

      liquid_crystal_display.setCursor(0,1);

      i=0;




    }

  }

}

void change()

{

  int j=0;

  liquid_crystal_display.clear();

  liquid_crystal_display.print("Current Password");

  liquid_crystal_display.setCursor(0,1);

  while(j<4)

  {

    char key=keypad_key.getKey();

    if(key)

    {

      new_password[j++]=key;

      liquid_crystal_display.print(key);

       

    }

    key=0;

  }

  delay(500);




  if((strncmp(new_password, initial_password, 4)))

  {

    liquid_crystal_display.clear();

    liquid_crystal_display.print("Wrong Password");

    liquid_crystal_display.setCursor(0,1);

    liquid_crystal_display.print("Try Again");

    delay(1000);

  }

  else

  {

    j=0;

    liquid_crystal_display.clear();

    liquid_crystal_display.print("New Password:");

    liquid_crystal_display.setCursor(0,1);

    while(j<4)

    {

      char key=keypad_key.getKey();

      if(key)

      {

        initial_password[j]=key;

        liquid_crystal_display.print(key);

        EEPROM.write(j,key);

        j++;

     

      }

    }

    liquid_crystal_display.print("Pass Changed");

    delay(1000);

  }

  liquid_crystal_display.clear();

  liquid_crystal_display.print("Enter Password");

  liquid_crystal_display.setCursor(0,1);

  key_pressed=0;

}




void initialpassword(){

  for(int j=0;j<4;j++)

    EEPROM.write(j, j+49);

  for(int j=0;j<4;j++)

    initial_password[j]=EEPROM.read(j);

} 

Credits

Arnav Bagchi

Arnav Bagchi

1 project • 0 followers

Comments