This is an old revision of the document!


Password Security Lock Circuit Using 4×4 Keypad and Arduino

Boțoghină David-Ioan

Introducere

Acest proiect are ca scop construirea unei incuietori care pentru a fi dezactivata, va cere introducerea unei parole de 6 biti.

Descriere generală

This project was meant to limit the access to certain impportant things. For example, at the output could be connected a lamp or a lock. I connected a fan because it is summer and during this period, being able to cool yourself is as immportant as having light or keep the door of a cabinet locked.

Hardware Design

Lista de piese:

  • 1x Arduino Uno
  • 1x Breadboard
  • 2x LEDs
  • 4×4 keypad
  • 1x LCD I2C
  • Some Wires
  • A fan

Electrical Schematic:

Software Design

#include <Wire.h> #include <LiquidCrystal_I2C.h> #include <Keypad.h>

#define Password_Length 8

int signalPin = 12; int relay_pin = 10;

char Data[Password_Length]; char Master[Password_Length] = “123A456”; byte data_count = 0, master_count = 0; bool Pass_is_good; char customKey;

const byte ROWS = 4; const byte COLS = 4;

char hexaKeys[ROWS][COLS] = {

{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}

};

byte rowPins[ROWS] = {9, 8, 7, 6}; byte colPins[COLS] = {5, 4, 3, 2};

Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup(){

lcd.init(); 
lcd.backlight();
pinMode(signalPin, OUTPUT);
pinMode(13, OUTPUT);
pinMode(relay_pin, OUTPUT);

}

void loop(){

lcd.setCursor(0,0);
lcd.print("Enter Password:");
customKey = customKeypad.getKey();
if (customKey){
  Data[data_count] = customKey; 
  lcd.setCursor(data_count,1); 
  lcd.print(Data[data_count]); 
  data_count++; 
  }
if(data_count == Password_Length-1){
  lcd.clear();
  if(!strcmp(Data, Master)){
    lcd.print("Correct");
    digitalWrite(signalPin, HIGH); 
    digitalWrite(13, HIGH);
    delay(3000);
    digitalWrite(signalPin, LOW);
    digitalWrite(13, HIGH);
    delay(3000);
    digitalWrite(13, LOW);
    }
  else{
    lcd.print("Incorrect");
    digitalWrite(10, HIGH);
    delay(1000);
    digitalWrite(10, LOW);
    }
    lcd.clear();
  clearData();  
}

}

void clearData(){

while(data_count !=0){
  Data[data_count--] = 0; 
}
return;

}

Rezultate Obţinute

Concluzii

Download

Jurnal

Bibliografie/Resurse

pm/prj2022/cstan/3.1654104131.txt.gz · Last modified: 2022/06/01 20:22 by david.botoghina
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0