كود البحث

استخدام لوحة مفاتيح 4x3 مع أردوينو

استخدام لوحة مفاتيح 4x3 مع أردوينو

في هذا الدرس التعليمي، سنستكشف كيفية استخدام لوحة مفاتيح 4x3 مع أردوينو لقراءة ضغطات المفاتيح. يمكن استخدام لوحة المفاتيح هذه في مشاريع متنوعة، مثل إنشاء واجهة إدخال بسيطة لنظام أمني أو لأي تطبيق يتطلب إدخالًا من المستخدم. بحلول نهاية هذا الدليل، ستتمكن من قراءة ضغطات المفاتيح والاستجابة لمفاتيح محددة.

تأكد من مشاهدة الفيديو المرفق للحصول على عرض بصري لتوصيل الأسلاك وتنفيذ الكود (في الفيديو عند 00:00).

شرح الأجهزة

المكونات الرئيسية لهذا المشروع تشمل لوحة مفاتيح 4x3 ولوحة الأردوينو. تتكون لوحة المفاتيح من مصفوفة من الأزرار مرتبة في 4 صفوف و3 أعمدة. عند الضغط على زر، فإنه يربط صفًا معينًا بعمود معين، مما يسمح للوحة الأردوينو بتحديد أي زر تم الضغط عليه.

تعمل لوحة Arduino كمتحكم مركزي يقرأ مدخلات لوحة المفاتيح. تستعين بمكتبة Keypad التي تُبسّط عملية إدارة لوحة المفاتيح المصفوفية وتسهّل اكتشاف ضغطات الأزرار.

تفاصيل ورقة البيانات

المصنّعمتنوعة
رقم القطعةلوحة مفاتيح 4×3
جهد المنطق5 فولت
تيار التشغيل≤ 20 mA
عمر المفتاح≥ 1,000,000 ضغطات
حزمةلوحة مفاتيح مصفوفية

  • وصل دبابيس لوحة المفاتيح بشكل صحيح إلى الدبابيس الرقمية في الأردوينو.
  • استخدم مقاومات سحب للأعلى أو للأسفل عند الحاجة، اعتمادًا على إعدادك.
  • تأكد من تضمين مكتبة Keypad في برنامج Arduino IDE لديك.
  • عالج ارتداد ضغطات المفاتيح برمجياً لتجنب القراءات المتعددة.
  • اختبر كل مفتاح للتأكد من توصيل الأسلاك بشكل صحيح ومن عمله

تعليمات التوصيل الكهربائي

Arduino_wiring_4x3_keypad

لتوصيل لوحة المفاتيح 4x3 إلى الأردوينو، ستقوم بتوصيل دبابيس الصفوف والأعمدة من لوحة المفاتيح إلى الدبابيس الرقمية على الأردوينو. قم بتوصيل دبابيس الصفوف (عادةً 4 دبابيس) إلى الدبابيس2،3،4، و5على الأردوينو. يجب توصيل دبابيس الأعمدة (عادةً 3 دبابيس) إلى دبابيس6،7، و8.

تأكد من توصيل دبوس الأرضي للوحة المفاتيح بأرضي الأردوينو وتوصيل دبوس الطاقة بمخرج 5V. ستمكّن هذه التوصيلة الأردوينو من قراءة حالة كل مفتاح عند الضغط عليه، باستخدام مكتبة Keypad للتعامل مع مسح المصفوفة.

أمثلة على الكود وشرح خطوة بخطوة

يقوم الكود التالي بتهيئة لوحة المفاتيح ويطبع المفتاح المضغوط على المراقب التسلسلي. تُخزّن قيم المفاتيح في مصفوفة من الأحرف.

const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
};

الkeysالمصفوفة تحدد تخطيط لوحة المفاتيح، الذي يتوافق مع الترتيب الفيزيائي للمفاتيح. كل حرف يمثل زرًا على لوحة المفاتيح.

بعد ذلك، نقوم بإعداد لوحة المفاتيح في الـsetup()دالة:

void setup(){
  Serial.begin(9600);
  Serial.println("Robojax 4x3 keypad");
}

يهيئ هذا الجزء الاتصال التسلسلي بمعدل باود 9600، مما يتيح لنا عرض ضغطات المفاتيح في المراقب التسلسلي.

أخيرًا، تتحقق الحلقة من ضغطات المفاتيح وتستجيب لها وفقًا لذلك:

void loop(){
  char key = keypad.getKey();
  if (key){
    Serial.println(key);
  } 
  if (key =='4'){
    Serial.println("Key 4 is pressed");
  } 
}

هنا، يتحقق البرنامج مما إذا تم الضغط على أي مفتاح باستخدامkeypad.getKey(). إذا تم ضغط أي مفتاح، فإنه يطبع قيمة ذلك المفتاح. بالإضافة إلى ذلك، إذا تم ضغط المفتاح '4'، فسيتم عرض رسالة محددة.

عرض توضيحي / ما الذي تتوقعه

عند اكتمال الإعداد، يجب أن يؤدي الضغط على أي مفتاح في لوحة المفاتيح إلى إرسال الحرف المقابل إلى المراقب التسلسلي. إذا تم الضغط على المفتاح '4'، فسيتم طباعة رسالة خاصة تشير إلى تفعيل ذلك المفتاح. تتيح لك هذه الوظيفة البناء على هذا الأساس لتطبيقات أكثر تعقيدًا.

كن حذراً من المدخلات العائمة التي قد تؤدي إلى سلوك متقلب. تأكد من أن جميع الاتصالات محكمة واختبر كل مفتاح للتأكد من عمله بشكل صحيح (في الفيديو عند 00:00).

الصور

4x3_kaypad-1
4x3_kaypad-1
4x3_kaypad-2
4x3_kaypad-2
4x3_kaypad-3
4x3_kaypad-3
4x3_kaypad-4
4x3_kaypad-4
4x3_kaypad-5
4x3_kaypad-5
Arduino_wiring_4x3_keypad
Arduino_wiring_4x3_keypad
128-Ardunino code for 4x3 keypad
اللغة: C++
/*
 * Library taken from: https://playground.arduino.cc/Code/Keypad
 * This is the Arduino code for a 4x3 keypad.
 * Watch the video for details and demo: http://youtu.be/qIDzzG2LUtg
resources page: www.Robojax.com/RJT104
 * 
 * Modified by Ahmad Shamshiri for the Robojax Video channel: www.Robojax.com/RJT104
 * Date: July 11, 2018 at 19:56 in Ajax, Ontario, Canada
 * Permission granted to share this code, given that this
 * note is kept with the code.
 * Disclaimer: This code is "AS IS" and for educational purposes only.
 * This code has been downloaded from https://robojax.com
 * Watch video instructions for this code: 
 * 
 */
/* @file HelloKeypad.pde
|| @version 1.0
|| @author Alexander Brevig
|| @contact alexanderbrevig@gmail.com
||
|| @description
|| | Demonstrates the simplest use of the matrix Keypad library.
|| #
*/
#include <Keypad.h>

const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
};

byte rowPins[ROWS] = {2, 3, 4, 5}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {6,7,8}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
  // Robojax 4x3 keypad test
  Serial.begin(9600);
  Serial.println("Robojax 4x3 keypad");
}
  
void loop(){
  // Robojax 4x3 keypad test
  char key = keypad.getKey();
    // Just print the pressed key
   if (key){
    Serial.println(key);
  } 
   // This checks if 4 is pressed, then do something. Here we print the text, but you can control something.
  if (key =='4'){
    // If key matches what you are looking for
    Serial.println("Key 4 is pressed");
  } 

}

الأشياء التي قد تحتاجها

الموارد والمراجع

لا توجد موارد حتى الآن.

ملفات📁

Fritzing File

ملفات أخرى