مشروع أردوينو : قفل الباب وغلقه أتوماتيك| Door Lock | 4×4 Keypad | I2C 1602 LCD Display |Arduino - DIY Channel3

DIY Channel3

Arduino│ESP8266│ESP32│Drone│Robot

مشروع أردوينو : قفل الباب وغلقه أتوماتيك| Door Lock | 4×4 Keypad | I2C 1602 LCD Display |Arduino

مشاركة هذا

 


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

ما هي لوحة المفاتيح؟

لوحة المفاتيح عبارة عن مجموعة من الأزرار مرتبة في كتلة أو "لوحة" تحمل أرقامًا أو رموزًا أو أحرفًا أبجدية. تسمى اللوحات التي تحتوي في الغالب على أرقام بلوحة مفاتيح رقمية.


تُستخدم لوحة المفاتيح ذات المصفوفة 4 × 4 عادةً كمدخلات في المشروع. يحتوي على 16 مفتاحًا في المجموع ، مما يعني نفس قيم الإدخال. إنه نحيف للغاية وسهل التفاعل مع أي متحكم دقيق وله دعامة لاصقة لسهولة التركيب لمجموعة متنوعة من التطبيقات.



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

-  Arduino UNO R3

- LCD I2C

- Solenoid Lock
-  4x4 Keypad
- Relay Module

- Jumper wires

- 12V Power Adapter

- cardboard

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


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

#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

1 comment:

  1. can i ask question
    what the function of the relay on this project
    may i dont know and really i would like to know what is function
    thank you

    ReplyDelete