لوحة الأزرار Keypad

لوحة الأزرار:

المفتاح (الزر) الرقمي طريقة ادخال شائعة و بسيطة. لكن في الكثير من التطبيقات نحتاج لإدخال معلومات أكثر (أرقام وحروف) للتحكم بتشغيل الأردوينو. ومن أشهر الحلول استخدام شبكة من الأزرار الرقمية Keypad تحتوي 16 زر .

كالعديد من ملحقات الأردوينو هناك العديد من المكتبات الخاصة بلوحة الأزرار. في هذا المقال سنستخدم المكتبة “Keypad“. يمكنك تحميل المكتبة من Library manager بالطريقة الموضحة بالصورة أو عن طريق تحميلها من موقع Github

التوصيل

تحتوي لوحة الأزرار على 8 منافذ رقمية (4 للصفوف و 4 للأعمدة)  يتم توصيلها بشكل مباشر بمنافذ الأردوينو من 2 إلى 9

عرض الأزار على الشاشة

أهم سطر يجب عليك فهمه الذي يبدأ بـ Keypad و يسمى سطر الـ constructor في هذا السطر يتم تعريف البرنامج بكل خصائص لوحة المفاتيح المستخدمة : عدد الصفوف ، الأعمدة ، المنافذ المستخدمة للصفوف و الأعمدة و القيم (الرموز) التي توازي كل ضغطة زر. القيم التي تريد استخدامها عند الضغط على كل زر موجودة في المصفوفة ( Keys ) و يجب الانتباه أنك ستستخدم نوع واحد من البيانات :char في المثال  . كما يمكنك جعل عدد الأعمدة 3 إذا لم تستخدم الأحرف. ويجب تعديل الكود قليلاً.  في العادة ستجد عدم توافق بين الضغطات و الناتج مثلا تضغط (1) فيظهر (A)  الأفضل التجربة ثم التعديل على المصفوفة (Keys ) حتى تتوافق الضغطات مع الناتج على شاشة السيريال.

				
					#include "Keypad.h" //4*4 keypad size
char Keys[4][4] = { //[Rows] [Columns]
{'D','#','0','*'},
{'C','9','8','7'},
{'B','6','5','4'},
{'A','3','2','1'}};
byte RP[4] = {6, 7, 8,9};
byte CP[4] = {2, 3, 4,5};
Keypad KP=Keypad(makeKeymap(Keys),RP,CP,4,4); // Object
void setup(){Serial.begin(9600);}
void loop(){
char x = KP.getKey();
if (x){Serial.println(x);}}
				
			

:استخدم لوحة المفاتيح keypad للتحكم باضاءات الليد (LED)

في حالة كان الزر المدخل (*) سيعمل البرنامج على تشغيل اضاءة الليد أما إذا كان الزر المدخل (#) سيتم إطفاءها.

				
					#include "Keypad.h" //4*4 keypad size
char Keys[4][4] = { //[Rows] [Columns]
{'D','#','0','*'},
{'C','9','8','7'},
{'B','6','5','4'},
{'A','3','2','1'}};
byte RP[4] = {6, 7, 8, 9};
byte CP[4] = {2, 3, 4, 5};
Keypad KP=Keypad(makeKeymap(Keys),RP,CP,4,4); // Object
void setup(){pinMode(13,OUTPUT);}
void loop(){
char x = KP.getKey();
if (x=='*'){digitalWrite(13,HIGH);}
if (x=='#'){digitalWrite(13,LOW);}}
				
			

انتقل إلى المتجر

لوحة مفاتيح | KEYPAD 4*4

18.00 ر.س

ARDUINO NANO | اردوينو نانو

35.00 ر.س

حزمة أسلاك متنوعة

20.00 ر.س

اردوينو اونو | ARDUINO UNO

50.00 ر.س
انتقال إلى الأعلى