جدول المحتويات:

استخدام لوحات المفاتيح الرقمية مع Arduino: 4 خطوات
استخدام لوحات المفاتيح الرقمية مع Arduino: 4 خطوات

فيديو: استخدام لوحات المفاتيح الرقمية مع Arduino: 4 خطوات

فيديو: استخدام لوحات المفاتيح الرقمية مع Arduino: 4 خطوات
فيديو: ☑️ Keypad أردوينو للمبتدئين - (36) لوحة مفاتيح الأردوينو 2024, يوليو
Anonim
استخدام لوحات المفاتيح الرقمية مع Arduino
استخدام لوحات المفاتيح الرقمية مع Arduino

يمكن أن توفر لوحات المفاتيح الرقمية بديلاً بسيطًا للمستخدم النهائي لواجهات مختلفة لمشاريعك. أو إذا كنت بحاجة إلى الكثير من الأزرار ، فيمكنهم توفير الكثير من الوقت فيما يتعلق بالبناء. سنعمل على توصيلها باستخدام مكتبة Arduino ثم ننتهي بمثال مفيد للرسم التخطيطي.

الخطوة الأولى: البدء

ابدء
ابدء

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

تعتبر ورقة البيانات مهمة لأنها ستخبرك بالدبابيس أو الموصلات الموجودة على لوحة المفاتيح المخصصة للصفوف والأعمدة. إذا لم يكن لديك ورقة البيانات - فستحتاج إلى تحديد جهات الاتصال الخاصة بالصفوف والأعمدة يدويًا.

يمكن القيام بذلك باستخدام وظيفة الاستمرارية للمقياس المتعدد (الجرس). ابدأ بوضع مسبار واحد على السن 1 ، والمجس الآخر على السن 2 ، واضغط على المفاتيح واحدًا تلو الآخر. قم بتدوين ملاحظة عند اكتمال الزر للدائرة ، ثم انتقل إلى الدبوس التالي. قريبا ستعرف أيهما. على سبيل المثال ، في مثال لوحة المفاتيح ، تكون الدبابيس 1 و 5 للزر "1" و 2 و 5 لـ "4" ، إلخ …

في هذه المرحلة ، يرجى تنزيل مكتبة Arduino الخاصة بلوحة المفاتيح وتثبيتها. سنشرح الآن كيفية استخدام كلتا لوحتَي المفاتيح في أمثلة بسيطة.

الخطوة الثانية: استخدام لوحة مفاتيح مكونة من 12 رقمًا

سنستخدم لوحة المفاتيح السوداء الصغيرة ومتوافقة مع Arduino Uno وشاشة LCD بواجهة I2C لأغراض العرض. إذا لم يكن لديك شاشة LCD ، فيمكنك دائمًا إرسال النص إلى الشاشة التسلسلية بدلاً من ذلك.

قم بربط شاشة LCD الخاصة بك ثم قم بتوصيل لوحة المفاتيح بـ Arduino بالطريقة التالية: صف لوحة المفاتيح 1 إلى Arduino digital 5Keypad row 2 إلى Arduino digital 4Keypad الصف 3 إلى Arduino digital 3Keypad الصف 4 إلى Arduino digital 2Keypad عمود 1 إلى Arduino digital 8Keypad عمود 2 إلى Arduino digital 7Keypad العمود 3 إلى Arduino digital 6 إذا كانت لوحة المفاتيح الخاصة بك مختلفة عن لوحة المفاتيح الخاصة بنا ، فقم بتدوين الخطوط الموجودة في الرسم من:

// تعريف نوع لوحة المفاتيح

كما تحتاج إلى تغيير الأرقام الموجودة في المصفوفات rowPins [ROWS] و colPins [COLS]. تقوم بإدخال أرقام الدبوس الرقمية المتصلة بصفوف وأعمدة لوحة المفاتيح على التوالي.

علاوة على ذلك ، تخزن مفاتيح المصفوفة القيم المعروضة على شاشة LCD عند الضغط على زر معين. يمكنك أن ترى أننا قمنا بمطابقتها مع لوحة المفاتيح الفعلية المستخدمة ، ومع ذلك يمكنك تغييرها إلى أي شيء تريده. لكن في الوقت الحالي ، أدخل الرسم التخطيطي التالي وحمّله بمجرد أن تصبح راضيًا عن تخصيصات الصف / رقم التعريف الشخصي:

/ * لوحة المفاتيح الرقمية وشاشات الكريستال السائل I2C https://tronixstuff.com تستخدم مكتبة لوحة المفاتيح لـ Arduino https://www.arduino.cc/playground/Code/Keypad بقلم مارك ستانلي وألكسندر بريفيج * /

# تضمين "Keypad.h"

# تضمين "Wire.h" // لـ I2C LCD # تتضمن "LiquidCrystal_I2C.h" // لوحدة LCD لناقل I2C // https://www.dfrobot.com/wiki/index.php/I2C/TWI_LCD1602_Module_(SKU: _DFR0063) LiquidCrystal_I2C lcd (0x27، 16، 2) ؛ // قم بتعيين عنوان LCD على 0x27 لعرض 16 حرفًا وخطين

// تعريف نوع لوحة المفاتيح

const بايت ROWS = 4 ؛ // أربعة صفوف const بايت COLS = 3 ؛ // ثلاثة أعمدة من مفاتيح الأحرف [ROWS] [COLS] = {{'1'، '2'، '3'}، {'4'، '5'، '6'}، {'7'، '8' ، '9'}، {'*'، '0'، '#'}}؛

بايت rowPins [ROWS] = {

5 ، 4 ، 3 ، 2} ؛ // الاتصال بدبابيس الصف الخاصة بـ colPins بايت لوحة المفاتيح [COLS] = {8 ، 7 ، 6} ؛ // الاتصال بدبابيس عمود لوحة المفاتيح

عدد صحيح = 0 ؛

لوحة مفاتيح لوحة المفاتيح = لوحة المفاتيح (makeKeymap (مفاتيح) ، rowPins ، colPins ، ROWS ، COLS) ؛

الإعداد باطل()

{lcd.init () ، // تهيئة شاشة lcd lcd.backlight () ؛ // تشغيل الإضاءة الخلفية لشاشات الكريستال السائل}

حلقة فارغة()

{char key = keypad.getKey () ؛ إذا (مفتاح! = NO_KEY) {lcd.print (مفتاح) ؛ العد ++ ؛ إذا (العد == 17) {lcd.clear () ؛ العد = 0 ؛ }}}

وتظهر نتائج الرسم في الفيديو. الآن يمكنك أن ترى كيف يمكن ترجمة الضغط على الزر إلى بيانات لاستخدامها في رسم تخطيطي. سنكرر الآن هذا العرض التوضيحي باستخدام لوحة المفاتيح الأكبر حجمًا.

الخطوة 3: استخدام لوحة المفاتيح المكونة من 16 رقمًا

سنستخدم لوحة المفاتيح الأكبر حجمًا 4 × 4 ، وهي متوافقة مع Arduino Uno ولتغيير شاشة I2C LCD من Akafugu لأغراض العرض. مرة أخرى ، إذا لم يكن لديك شاشة LCD ، فيمكنك دائمًا إرسال النص إلى الشاشة التسلسلية بدلاً من ذلك. قم بتوصيل شاشة LCD ثم قم بتوصيل لوحة المفاتيح بـ Arduino بالطريقة التالية:

  • صف لوحة المفاتيح 1 (دبوس ثمانية) إلى Arduino Digital 5
  • صف لوحة المفاتيح 2 (رقم التعريف الشخصي 1) إلى Arduino Digital 4
  • صف لوحة المفاتيح 3 (دبوس 2) إلى Arduino Digital 3
  • صف لوحة المفاتيح 4 (دبوس 4) إلى Arduino Digital 2
  • عمود لوحة المفاتيح 1 (دبوس 3) إلى Arduino Digital 9
  • عمود لوحة المفاتيح 2 (دبوس 5) إلى Arduino Digital 8
  • عمود لوحة المفاتيح 3 (رقم التعريف الشخصي 6) إلى Arduino Digital 7
  • عمود لوحة المفاتيح 4 (دبوس 7) إلى Arduino Digital 6

الآن بالنسبة للرسم - لاحظ كيف استوعبنا لوحة المفاتيح الرقمية الأكبر: العمود الإضافي في مفاتيح المصفوفة الدبوس الإضافي في المصفوفة colPins والبايت COLS = 4.

/ * لوحة المفاتيح الرقمية وشاشات الكريستال السائل I2C https://tronixstuff.com تستخدم مكتبة لوحة المفاتيح لـ Arduino https://www.arduino.cc/playground/Code/Keypad بقلم مارك ستانلي وألكسندر بريفيج * /

# تضمين "Keypad.h"

# تضمين "Wire.h" // لـ I2C LCD # تتضمن "TWIL LiquidCrystal.h" // https://store.akafugu.jp/products/26 LiquidCrystal lcd (12، 11، 5، 4، 3، 2) ؛

const بايت ROWS = 4 ؛ // أربعة صفوف

البايت الثابت COLS = 4 ؛ // أربعة أعمدة مفاتيح أحرف [ROWS] [COLS] = {{'1'، '2'، '3'، 'A'}، {'4'، '5'، '6'، 'B'}، {'7'، '8'، '9'، 'C'}، {'*'، '0'، '#'، 'D'}}؛ بايت rowPins [ROWS] = {5، 4، 3، 2} ؛ // الاتصال بمنافذ الصفوف الخاصة بـ colPins بايت لوحة المفاتيح [COLS] = {9 ، 8 ، 7 ، 6} ؛ // الاتصال بعمود pinouts من لوحة المفاتيح عدد int = 0 ؛

لوحة مفاتيح لوحة المفاتيح = لوحة المفاتيح (makeKeymap (مفاتيح) ، rowPins ، colPins ، ROWS ، COLS) ؛

الإعداد باطل()

{Serial.begin (9600) ، lcd.begin (16 ، 2) ؛ lcd.print ("اختبار لوحة المفاتيح!") ؛ تأخير (1000) ؛ lcd.clear () ؛ }

حلقة فارغة()

{char key = keypad.getKey () ؛ إذا (مفتاح! = NO_KEY) {lcd.print (مفتاح) ؛ Serial.print (مفتاح) ؛ العد ++ ؛ إذا (العد == 17) {lcd.clear () ؛ العد = 0 ؛ }}}

ومرة أخرى يمكنك رؤية نتائج الرسم أعلاه في الفيديو.

الآن كمثال لمشروع ، ربما يكون أكثر استخدام مطلوب للوحة المفاتيح الرقمية …

الخطوة 4: مشروع مثال - نظام الوصول إلى رقم التعريف الشخصي

يبدو أن الاستخدام الأكثر طلبًا للوحة المفاتيح الرقمية هو تطبيق نمط "PIN" ، حيث يُطلب من Arduino القيام بشيء بناءً على الرقم الصحيح الذي يتم إدخاله في لوحة المفاتيح. يستخدم الرسم التالي الأجهزة الموصوفة للرسم السابق ويطبق نظام إدخال PIN المكون من ستة أرقام.

يمكن إدراج الإجراءات التي سيتم تنفيذها في الدالتين truePIN () و wrongPIN (). ويتم تعيين رقم التعريف الشخصي في مجموعة char PIN [6]. مع القليل من العمل الإضافي ، يمكنك إنشاء وظيفة تغيير رقم التعريف الشخصي الخاصة بك أيضًا.

// مفتاح PIN مع لوحة مفاتيح رقمية مكونة من 16 رقمًا // https://tronixstuff.com #include "Keypad.h" #include #include LiquidCrystal lcd (12 ، 11 ، 5 ، 4 ، 3 ، 2) ؛

const بايت ROWS = 4 ؛ // أربعة صفوف

البايت الثابت COLS = 4 ؛ // أربعة أعمدة مفاتيح أحرف [ROWS] [COLS] = {{'1'، '2'، '3'، 'A'}، {'4'، '5'، '6'، 'B'}، {'7'، '8'، '9'، 'C'}، {'*'، '0'، '#'، 'D'}}؛ بايت rowPins [ROWS] = {5، 4، 3، 2} ؛ // الاتصال بدبابيس الصف الخاصة بـ colPins بايت لوحة المفاتيح [COLS] = {9 ، 8 ، 7 ، 6} ؛ // الاتصال بدبابيس عمود لوحة المفاتيح

لوحة مفاتيح لوحة المفاتيح = لوحة المفاتيح (makeKeymap (مفاتيح) ، rowPins ، colPins ، ROWS ، COLS) ؛

رمز PIN [6] = {

'1'، '2'، 'A'، 'D'، '5'، '6'} ؛ // محاولة عدد الأحرف السرية (!) [6] = {'0'، '0'، '0'، '0'، '0'، '0'}؛ // المستخدمة للمقارنة int z = 0 ؛

الإعداد باطل()

{Serial.begin (9600) ، lcd.begin (16 ، 2) ؛ lcd.print ("قفل PIN") ؛ تأخير (1000) ؛ lcd.clear () ؛ lcd.print ("أدخل رقم التعريف الشخصي …") ؛ }

void correctPIN () // افعل ذلك إذا تم إدخال رقم التعريف الشخصي الصحيح

{lcd.print ("* Correct PIN *") ؛ تأخير (1000) ؛ lcd.clear () ؛ lcd.print ("أدخل رقم التعريف الشخصي …") ؛ }

باطل غير صحيح PIN () // افعل هذا إذا تم إدخال رمز PIN غير صحيح

{lcd.print ("* حاول مرة أخرى *") ؛ تأخير (1000) ؛ lcd.clear () ؛ lcd.print ("أدخل رقم التعريف الشخصي …") ؛ }

checkPIN باطلة

{int صحيح = 0 ؛ إنت أنا لـ (i = 0 ؛ i <6 ؛ i ++) {

إذا (حاول == PIN )

{الصحيح ++ ؛ }} إذا (صحيح == 6) {تصحيح بين () ؛ } else {غير صحيح PIN () ؛ }

لـ (int zz = 0؛ zz <6؛ zz ++) {try [zz] = '0'؛ }}

قراءة باطلة

{char key = keypad.getKey () ؛ إذا (مفتاح! = NO_KEY) {محاولة [z] = مفتاح ؛ z ++ ؛ التبديل (مفتاح) {حالة '*': z = 0 ؛ استراحة؛ الحالة "#": z = 0 ؛ تأخير (100) ؛ // من أجل debounce إضافي lcd.clear () ؛ checkPIN () ؛ استراحة؛ }}}

حلقة فارغة()

{readKeypad () ، }

تم عرض المشروع في الفيديو.

الآن لديك القدرة على استخدام اثني عشر وستة عشر زرًا من لوحات المفاتيح مع أنظمة Arduino الخاصة بك. أنا متأكد من أنك ستأتي بشيء مفيد ومثير للاهتمام باستخدام لوحات المفاتيح في المستقبل القريب.

هذا المنشور مقدم من pmdway.com - كل شيء للصانعين وعشاق الإلكترونيات ، مع التوصيل المجاني في جميع أنحاء العالم.

موصى به: