بسم الله الرحمن الرحيم
بعد ان ناقشنا فى الدرس السابق ملحق من اهم ملحقات الأردوينو وهى شاشة lcd
سنناقش اليوم واحده من اجمل الملحقات وهى key pad لكن فى البداية ان لم تكن لك خبرة فى الأردوينو
فلقد قمنا بكتابة سبع دروس يمكنك الإطلاع عليها أولا للإطلاع عليها اضغط هنا
يعتبر key pad من احد الملحقات
التى يمكنك ان تستخدمها مع الأردوينو لكتابة شئ ما او لأى غرض اخر
ولقد قمنا بتصميم العديد من المشاريع
مثل :-
كيفية عمل آله حاسبة بإستخدام الأردوينو
كيفية عمل باسورد لفتح الأبواب بواسطه الأردوينو
يمكنك اخذ فكرة عن هذا العنصر الرائع من هذه المقالات
في البداية مما يتكون من هذا العنصر يتكون هذا العنصر من عدد محدد من السويتشات
يكون هناك نوع يحتوى على 16 سويتش واخر يحتوى على 12 سويتش
ويتم تجميع هذه السويتشات كما هو موضح فى الصورة الأتيه
فاننا يمكن تجميع هذا العنصر بأنفسنا بمجرد الحصول على بعض سويتشات وتوصيلها معا كما هو موضح بالأعلى
تحتوى keypad على 8 منافذ اذا كانت 16 زر
و 6 منافذ اذا كانت 12 زر
حيث يكون نصف عدد المنافذ خاص بالصفوف والنصف الأخر خاص بالأعمده كما هو موضح فى الصورة الأتيه
والأن نتطرق الى كيفية توصيل هذا العنصر مع الأردوينو
يتم توصيل كل المنافذ الى المنافذ الرقمية مع ملاحظة عدم وضع منافذ فى المنافذ الأتيه 0 و 1 و 13
اخيرا التجربة :
سوف نقوم بعمل تجربة لهذا العنصر فسنقوم باستخدام شاشة lcd
وطباعه ما يتم ضغطه على keypad
والتى يمكن توضيحها فى هذا الفيديو
اولا التوصيلات الأساسية :
لقد ناقشنا من قبل كيفية توصيل lcd ويمكنك الإطلاع علي الدروس السابقه
ملحوظة : يمكن معامله المنافذ التماثلية كانها رقمية بطريقة عادية جدا
قمت بتوصيل keypad الى الأردوينو من المنافذ 12 الى 5
row1 : 12
row2 : 11
row3 : 10
row4 : 9
col1 : 8
col2 : 7
col3 : 6
col4 : 5
ثالثا ننتقل الى الكود :
#include <Keypad.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(A0,A1,A2,A3,A4,A5);//pin of lcd screen
const byte ROWS = 4; // Four rows
const byte COLS = 4; // four columns
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = { 12,11,10,9 };
byte colPins[COLS] = { 8,7,6,5 };
Keypad kpd( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup()
{
lcd.begin(16, 2);
lcd.setCursor(4,0);
lcd.print("SMART ARABIC");
lcd.setCursor(6,1);
lcd.print("PROJECTS");
delay(6000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("made by : ");
lcd.setCursor(0,1);
lcd.print("BILAL HASSAN");
delay(2000);
lcd.clear();
}
void loop()
{
char key = kpd.getKey();
if (key != NO_KEY)
{
lcd.print(key);
}}
لقد قمنا بشرح اغلبية هذا الكود فى الدرس السابق فلن نشرحه مجددا وسنكتفى بالجزء الخاص ب keypad
فى البداية من اجل التعامل مع keypad يجب استخدام مكتبة خاصه عن طريق
#include<Keypad.h>
حيث تسهل هذه المكتبة العمل مع keypad
من ثم هناك بعض التعريفات الأساسية مثل عدد الصفوف وعدد الأعمدة
المنافذ الخاصه بالصفوف والمنافذ الخاصه بالأعمده
const byte ROWS = 4; // Four rows
const byte COLS = 4; // four columns
يجب ان تكون هذه التعريفات من نوع byte لضمان عمل المكتبة
byte rowPins[ROWS] = { 12,11,10,9 };
byte colPins[COLS] = { 8,7,6,5 };
ومت ثم انشاء مصفوفتين يتم وضع فيهما المنافذ الخاصه بالصفوف والمنافذ الخاصه بالأعمدة ويجب ان تكون ايضا المصفوفة من نوع byte
ومن ثم تعريف الحروف فيجب عمل مصفوفة تحتوى على كل الحروف التى نريد ان نقراءها عند ضغط على سويتش معين
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
فمثلا عند استخدام keypad تحتوى على 4 صفوف و 4 اعمده نحصل على 4 مصفوفات فى كل واحده 4 قيم
وعندما نستخدم keypad تحتوى على 4 صفوف و 3 اعمده نحصل على 4 مصفوفات فى كل واحده ثلاث قيم
ففائده المصفوفة التى في الأعلى تعريف المكتبة بالحروف التى سنستخدمها ولا يشترط استخدام هذه الحروف يمكن استخدام حروف اخرى يمكن ازالة الأرقام واكمال الحروف
Keypad kpd( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
نتجه الأن الى اهم جزء وهو تعريف keypad الى المكتبه فى البداية نكتب اسم المكتبه ثم اسم الكائن الذي سنتعامل معه وكما قلت من قبل لا يشترط ان يكون الإسم ثابت يمكن تغيير الأسم الى اي اسم تريده
ثم استخدام امر
makeKeymap(key)
بهذا الأمر انت تقول للمكتبة خذي المصفوفة الخاصه بالحروف وقومى بعمل خريطة لهذه الحروف و الأرقام لأجل استخدامها مع keypad
ثم وضع المصفوفة الخاص بالمنافذ الخاصه بالصفوف
ثم وضع المنافذ الخاصه بالأعمده
ثم وضع عدد الصفوف وعدد الأعمده
وبهذا ننهى التعريفات الأساسية الخاصه بالكائن
بعد ذلك امر
kpd.getKey();
يقوم هذا الكود بمعرفة الزر الذي تم ضغطه وجعل مكانه فى المصفوفة الخاصة بالصفوف
لتحميل الأكواد اضغط هنا
تصميم : بلال حسان سعدى