Boțoghină David-Ioan
Acest proiect are ca scop construirea unei incuietori care pentru a fi dezactivata, va cere introducerea unei parole de 6 biti.
#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;
}
How it works:
The user needs to introduce a code, using the keyboard (the password). In the beginnig, on LCD is displayed the message “Enter Password”, the password being composed by seven characters.
If the introduced password is incorrect, then the message “Incorrect” is displayed on LCD and the green LED from the relay will turn off for one second.
If the introduced password is correct, then on the display is displayed the message “Correct”, and the fan will turn on.
It was an interesting project, that required several days. It also can be easily upgraded, for example, by adding something like a lamp or a lock at the output of the relay.
19/05/2022 - Hardware Assembly 25/05/2022 - Software
github.com