مرحبا سكان هبر! قررت اليوم تقديم دليل لوحة مفاتيح كامل لاردوينو.
تحذير! هذه المادة تهدف أساسا إلى المبتدئين!في العديد من المشاريع ، هناك حاجة لإنشاء إمكانية إدخال المستخدم. إذا كنت بحاجة إلى تنفيذ عدد كبير من الأزرار (نسبيًا) ، فإن توصيلها بشكل منفصل يصبح طويلًا وغير منطقي. لهذا الغرض ، من الأفضل اختيار لوحة مفاتيح ، ولكن مثل أي خيار ، تحتاج إلى التعامل معها بوعي. ما هي أنواع لوحات المفاتيح وكيفية التفاعل معها؟
على الصعيد العالمي ، يمكن تقسيم جميع الوحدات من هذا النوع إلى فئتين كبيرتين:
المصفوفة والتناظرية .
مصفوفة لوحات المفاتيح
أسهل وأرخص والأكثر شعبية نوع من لوحة المفاتيح. من السهل نسبيًا تصنيع وتعبئة معظم منتجات وحدات اردوينو. يبدو في الغالب مثل هذا:


مبدأ العمل
يمكنك فهم كيفية عمل لوحة المفاتيح هذه من خلال دراسة المخطط التالي:

لفهم أي زر تم الضغط عليه ، تحتاج إلى تطبيق إشارة على جهات الاتصال الأربعة الأولى من الوحدة النمطية ومشاهدة أي إشارة تعود من الثانية. لكن لا تخف من أن تضطر إلى كتابة خوارزميات معالجة لثمانية دبابيس يدويًا - فالمكتبة الجاهزة "keypad.h" ستساعدنا في ذلك ، وبفضل ذلك لن نضطر إلى إعادة اختراع العجلة.
اتصال المجلس
توصيل الوحدة نفسها
في هذه المقالة سأستخدم مخطط الاتصال التالي:

ربما لديك سؤال: "لماذا قررت استخدام دبابيس من الثانية إلى التاسعة ، وتخطي الصفر والأول؟" - الحقيقة هي أن بعض الوحدات تستخدمها كقنوات RX و TX لاستقبال البيانات وإرسالها ، على التوالي. على سبيل المثال ، وحدة بلوتوث. لذلك ، مع الأخذ في الاعتبار إمكانية إضافة المشروع إلى وحدات أخرى ، فقد تقرر ترك دبابيس الاتصال هذه مجانية.
رسم الكتابة
بادئ ذي بدء ، لكي تتمكن من استخدام المكتبة لتوصيل لوحات المفاتيح في الكود ، تحتاج إلى تثبيته على جهازك. يمكن القيام بذلك على النحو التالي: في Arduino IDE نفسه ، انقر فوق
Sketch -> Connect Library -> Manage Libraries ... أو استخدم اختصار لوحة المفاتيح "Ctrl + Shift + I". في محرك البحث في "keypad.h" (بدون أقواس) واضغط على "التثبيت".
بعد التثبيت ، تابع كتابة الرسم:
#include <Keypad.h> // const byte ROWS = 4; // const byte COLS = 4; // char hexaKeys[ROWS][COLS] = {// , , {'1','4','7','*'}, {'2','5','8','0'}, {'3','6','9','#'}, {'A','B','C','D'} }; byte rowPins[ROWS] = {5, 4, 3, 2}; // byte colPins[COLS] = {9, 8, 7, 6}; // // : 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);// } }
إيجابيات وسلبيات
سلبيات
- الكثير من المسامير تحتاج إلى أن تكون متصلا بالعمل. هذه مشكلة كبيرة ، إذا كنت لا تنشئ آلة حاسبة أو قفل مجموعة ، ولكن مشروعًا أكبر ، لا تزال تحتاج فيه إلى استخدام عدد كبير من الوحدات النمطية المختلفة - ربما ليس لديها دبابيس كافية.
- جودة تنفيذ الوحدة منخفضة جدًا: لا أحد يضمن إشارة ثابتة ثابتة. لا تصنع لوحات المفاتيح الأصلية بمستوى عالٍ جدًا ، وإذا قمت بإجراء طلب على Aliexpress على الإطلاق ، فمن المرجح أنك ستضطر إلى إصلاح عضادات المهندسين الصينيين باستخدام مكواة لحام من أجل تحقيق التشغيل المستقر.
- يتم استخدام مكتبة إضافية ، والتي ستشغل أيضًا ذاكرة المتحكم ، والتي لا تملك بالفعل الكثير منها. إذا كنت تكتب مشروعًا كبيرًا به العديد من الوظائف والحسابات وتحتاج إلى قراءة البيانات من لوحة المفاتيح يدويًا أو استخدام لوحة مفاتيح تمثيلية ، كل بايت على الحساب.
الأشياء الجيدة
- انخفاض السعر
- من السهل العثور على للبيع
لوحات المفاتيح التناظرية
مبدأ العمل
في لوحات المفاتيح التمثيلية ، تُستخدم المقاومات لتغيير مستوى الجهد ، وتنتقل الإشارة عبر قناة واحدة ، متصلة بالفعل ، في الواقع ، الدبوس التمثيلي الموجود على السبورة. يمكن فهم كيف يتم ترتيب كل شيء من خلال النظر في الرسم البياني التالي:

اتصال المجلس
الاتصال بسيط للغاية ، ولكنه قد يختلف حسب لوحة المفاتيح المحددة. في هذه المقالة سأنظر في مثال لاستخدام لوحة المفاتيح التمثيلية الصينية
هذه مع علي.
لذلك: نقوم بتوصيل الناتج التمثيلي للوحة المفاتيح بأي دبوس تمثيلي على السبورة ، وربط دبوس VCC على اللوحة بـ 3.3V (لا تنظر إلى النقش على لوحة المفاتيح نفسها التي تشير إلى 5V - وهذا خطأ) ، و GND على اللوحة مع GND على الوحدة النمطية. يمكنك استخدام المخطط التالي:

رسم الكتابة
ليست هناك حاجة لاستخدام مكتبات الطرف الثالث ، كما كل شيء بسيط للغاية وواضح. إليك الرمز نفسه ، الذي يقرأ الزر المضغوط ويعرض رقمه من 1 إلى 16 (من اليسار إلى اليمين ، من أعلى إلى أسفل) أو 0 إذا لم يتم الضغط على أي شيء ، إلى شاشة المنفذ.
unsigned const short int KEYPAD_PIN = 0;
إيجابيات وسلبيات
الأشياء الجيدة
- اتصال سهل جدا
- دبوس واحد فقط
- يحفظ الذاكرة التي لا تنفقها تحت المكتبة
- يوفر تشغيلًا مستقرًا (شريطة ألا تضغط على أكثر من زر واحد في المرة الواحدة)
سلبيات
- أغلى من لوحات المفاتيح المصفوفة
- على الأرجح فإن الطريقة الوحيدة للشراء هي أن تطلب من الصين وسوف يستغرق التسليم بعض الوقت
النتائج
أنا شخصياً أوصي باستخدام لوحات المفاتيح التمثيلية ، لأنها غالبًا ما تكون ذات جودة أعلى وتوصيلها بسيط وبسيط. الشيء الرئيسي هو الانتباه إلى جدول قيم الأزرار المضغوطة التي توفرها الشركة المصنعة ، أو في حالة عدم وجود أي شيء ، يمكنك إجراء هذه القياسات بنفسك ، وعرض القيم من المنفذ التمثيلي في شاشة المنفذ ، ثم استخدامها في التعليمات البرمجية. لكن الخيار لك دائمًا: استخدام الخيار الرخيص القياسي أو الدفع الزائد من أجل مزايا كبيرة في بعض الحالات.
هذا كل شيء بالنسبة لي. اترك أسئلتك في التعليقات ، اكتب رأيك وسنلتقي في مساحات مفتوحة من هبر!