تعلم الوحدات · الدرس 2.10
وحدة لوحة المفاتيح الغشائية (Membrane Switch Module)
العودة إلى الدروسلوحة المفاتيح المصفوفية (Matrix Keypad)
سنوصل لوحة مفاتيح إلى UNO R3 لتقرأ المفاتيح التي يضغطها المستخدم. تستخدم لوحات المفاتيح في الهواتف والفاكس وأفران الميكروويف والأفران وأقفال الأبواب وغيرها، لذلك يفيد تعلم توصيلها بالمتحكم في بناء منتجات عديدة.
نستخدم لوحة مصفوفية تضم 16 مفتاحًا: 0–9 و A–D و* و#. لكن لها ثمانية أطراف فقط؛ فالترميز المصفوفي يقلل التوصيلات. اللوحة الخطية تحتاج 17 طرفًا، واحدًا لكل مفتاح وأرضيًا، بينما المصفوفة أكثر كفاءة من حيث الأسلاك.
المكونات المطلوبة
- لوحة أردوينو (ELEGOO UNO R3).
- وحدة مفاتيح غشائية (Membrane Switch Module).
- ثمانية أسلاك ذكر إلى ذكر (Male to Male Jumper Wires) لتوصيل أطراف لوحة المفاتيح الثمانية.

مخطط التوصيل


المنافذ والبرنامج
وصّل أطراف الوحدة بالترتيب التالي:
| طرف لوحة المفاتيح | منفذ UNO |
|---|---|
| 1 | D9 |
| 2 | D8 |
| 3 | D7 |
| 4 | D6 |
| 5 | D5 |
| 6 | D4 |
| 7 | D3 |
| 8 | D2 |
قبل رفع البرنامج، تأكد من توفر مكتبة 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);
}
}