قفل الباب بدون مفتاح مع الشاشة |LCD i2c | ولوحة المفاتيح | 4x4 Keypad | ولوحة اردوينو Arduino UNO - DIY Channel3

DIY Channel3

Arduino│ESP8266│ESP32│Drone│Robot

قفل الباب بدون مفتاح مع الشاشة |LCD i2c | ولوحة المفاتيح | 4x4 Keypad | ولوحة اردوينو Arduino UNO

مشاركة هذا

 


في هذا البرنامج التعليمي ، سأوضح لك كيفية إعداد لوحة مفاتيح على Arduino. سأشرح أولاً كيف يكتشف Arduino ضغطات المفاتيح ، ثم سأوضح لك كيفية العثور على pinout لأي لوحة مفاتيح. كمثال بسيط ، سأوضح لك كيفية طباعة ضغطات المفاتيح على الشاشة التسلسلية وشاشة LCD. أخيرًا ، سأوضح لك كيفية تنشيط مرحل 5 فولت عند إدخال كلمة المرور بشكل صحيح.


نظام أمان قفل الباب بكلمة مرور باستخدام Arduino و Keypad- في هذا البرنامج التعليمي ، ستتعلم كيفية إنشاء نظام أمان قفل الباب المحمي بكلمة مرور الأكثر فعالية باستخدام Arduino ولوحة المفاتيح. عند إدخال كلمة المرور الصحيحة المكونة من 4 أرقام ، يُفتح الباب لمدة 5 ثوانٍ. حاليًا ، كلمة المرور هي 1234 ، والتي يمكنك تغييرها في البرمجة ؛ يمكنك حتى تحديد كلمة مرور تتكون من أكثر من 8 أرقام. لقد راجعت نظام أمان قفل الباب بكلمة مرور عدة مرات وعمل بشكل مثالي. إذا تم إدخال كلمة مرور خاطئة 3 مرات ، فسيتم قفل الشخص لمدة 5 ثوانٍ وتشغيل مصباح LED ، والذي يمكن استبداله بجرس. يمكن زيادة أو تقليل عدد المحاولات الخاطئة حسب المتطلبات.








المكونات الاساسية :

-  Arduino UNO R3

- LCD I2C

- Solenoid Lock
-  4x4 Keypad
- Relay Module

- Jumper wires

- 12V Power Adapter


++ مخطط الرسم البياني :


++ الكود البرمجي هنا :

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

#define Password_Length 8 

int signalPin = 12;

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);
}

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); 
      delay(5000);
      digitalWrite(signalPin, LOW);
      }
    else{
      lcd.print("Incorrect");
      delay(1000);
      }
    
    lcd.clear();
    clearData();  
  }
}

void clearData(){
  while(data_count !=0){
    Data[data_count--] = 0; 
  }
  return;
}
#electronicengineering #robots #led #o #arduinolove #stem #automation #digitalelectronics #engineer #electronicsprojects #projects #electronicsengineering #innovation #electronicslovers #robotic #raspberry #dprinting #sensors #artificialintelligence #science #embeddedsystems #tecnologia #pcbdesign #proteus #circuit #code #m #soldering #embedded #electronica

No comments:

Post a Comment