تعلم الوحدات · الدرس 2.10

وحدة لوحة المفاتيح الغشائية (Membrane Switch Module)

العودة إلى الدروس

لوحة المفاتيح المصفوفية (Matrix Keypad)

سنوصل لوحة مفاتيح إلى UNO R3 لتقرأ المفاتيح التي يضغطها المستخدم. تستخدم لوحات المفاتيح في الهواتف والفاكس وأفران الميكروويف والأفران وأقفال الأبواب وغيرها، لذلك يفيد تعلم توصيلها بالمتحكم في بناء منتجات عديدة.

نستخدم لوحة مصفوفية تضم 16 مفتاحًا: 0–9 و A–D و* و#. لكن لها ثمانية أطراف فقط؛ فالترميز المصفوفي يقلل التوصيلات. اللوحة الخطية تحتاج 17 طرفًا، واحدًا لكل مفتاح وأرضيًا، بينما المصفوفة أكثر كفاءة من حيث الأسلاك.

المكونات المطلوبة

لوحة المفاتيح الغشائية (Membrane Switch Module) ذات 16 مفتاحًا
لوحة المفاتيح الغشائية (Membrane Switch Module) ذات 16 مفتاحًا

مخطط التوصيل

المخطط الكهربائي لصفوف وأعمدة لوحة المفاتيح
المخطط الكهربائي لصفوف وأعمدة لوحة المفاتيح
توصيل لوحة المفاتيح بلوحة أردوينو (UNO R3 Board)
توصيل لوحة المفاتيح بلوحة أردوينو (UNO R3 Board)

المنافذ والبرنامج

وصّل أطراف الوحدة بالترتيب التالي:

طرف لوحة المفاتيحمنفذ UNO
1D9
2D8
3D7
4D6
5D5
6D4
7D3
8D2

قبل رفع البرنامج، تأكد من توفر مكتبة Keypad في بيئة Arduino IDE. إذا لم تكن مثبتة أو ظهرت رسالة تشير إلى مكتبة مفقودة، فاتبع خطوات التثبيت في قسم «ما هي المكتبات؟» وطرق تثبيتها في الدرس 1.5 «وميض LED وإضافة المكتبات».

افتح ملف البرنامج custom_keypad.ino من ملفات الدرس في بيئة Arduino IDE. بعد إتمام التوصيلات، وصّل لوحة أردوينو (UNO R3 Board) بالحاسوب بكابل توصيل (USB Cable)، ثم اضغط زر Upload (رفع) لنقل البرنامج إلى اللوحة وتشغيله عليها.

إذا تعذر نقل البرنامج إلى اللوحة، فراجع قسم «رفع البرنامج ومعالجة خطأ الاتصال» في الدرس 1.5 «وميض LED وإضافة المكتبات» للتحقق من اتصال USB واختيار نوع اللوحة والمنفذ التسلسلي في بيئة Arduino IDE.

بعد تجميع البرنامج ونقله إلى لوحة أردوينو (UNO R3 Board)، يظهر المفتاح المضغوط في Serial Monitor. افتحه بزر المراقب التسلسلي، وراجع الدرس 2.4 «المراقب التسلسلي» لمعرفة طريقة فتحه وضبط سرعة الاتصال وقراءة البيانات.

ظهور المفاتيح في المراقب التسلسلي
ظهور المفاتيح في المراقب التسلسلي

الكود

custom_keypad/custom_keypad.ino

//www.elegoo.com
//2016.12.9

/* @file CustomKeypad.pde
|| @version 1.0
|| @author Alexander Brevig
|| @contact alexanderbrevig@gmail.com
||
|| @description
|| | Demonstrates changing the keypad size and key values.
|| #
*/
#include <Keypad.h>

const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the two-dimensional array on the buttons of the keypads
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}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad

//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 

void setup(){
  Serial.begin(9600);
}
  
void loop(){
  char customKey = customKeypad.getKey();
  
  if (customKey){
    Serial.println(customKey);
  }
}

ملفات الدرس والمكتبات

المكتبات المرفقة

ملفات الدرس

100%

عرض الصورة

استخدم + و− للتكبير والتصغير، أو اضغط Esc للإغلاق.