جدول المحتويات:
- الخطوة 1:
- الخطوة 2:
- الخطوه 3:
- الخطوة الرابعة:
- الخطوة الخامسة:
- الخطوة السادسة:
- الخطوة 7: مفاتيح متعددة
- الخطوة الثامنة:
- الخطوة 9:
فيديو: مفاتيح Arduino و Thumbwheel: 9 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:39
في هذه المقالة ، ندرس استخدام مفاتيح عجلة الدفع / الإبهام مع أنظمة Arduino الخاصة بنا. فيما يلي بعض الأمثلة التي تم الحصول عليها من PMD Way.
الخطوة 1:
بالنسبة للمبتدئين ، يمثل كل مفتاح مقطعًا رأسيًا واحدًا ويمكن توصيلهما معًا لتشكيل أحجام مختلفة. يمكنك استخدام الأزرار للاختيار من الأرقام من صفر إلى تسعة. هناك بدائل متاحة لها عجلة يمكنك تحريكها بإبهامك بدلاً من زري الزيادة / النقصان.
قبل أيام واجهات المستخدم الفاخرة ، كانت هذه المفاتيح شائعة جدًا لإعداد إدخال البيانات الرقمية. ومع ذلك فهي لا تزال متاحة اليوم ، لذلك دعونا نرى كيف تعمل وكيف يمكننا استخدامها. يتم توفير قيمة المحول من خلال نظام عشري ثنائي أو عشري مستقيم. ضع في اعتبارك الجزء الخلفي من المفتاح في شكل BCD.
الخطوة 2:
لدينا مشتركين على اليسار ، ثم جهات الاتصال لـ 1 و 2 و 4 و 8. إذا قمت بتطبيق جهد صغير (على سبيل المثال 5 فولت) على مشترك ، فيمكن قياس قيمة المحول عن طريق إضافة قيم جهات الاتصال الموجودة في حالة عالية. على سبيل المثال ، إذا حددت 3 - ستكون جهات الاتصال 1 و 2 عند الجهد المشترك. يمكن تمثيل القيم بين صفر وتسعة على هذا النحو في الجدول.
الخطوه 3:
الآن يجب أن تدرك أنه سيكون من السهل قراءة قيمة المفتاح - وأنت على صواب ، هذا صحيح. يمكننا توصيل 5 فولت بالمشترك ، والمخرجات بدبابيس الإدخال الرقمية للوحات Arduino الخاصة بنا ، ثم استخدام digitalRead () لتحديد قيمة كل إخراج. في الرسم ، نستخدم بعض الرياضيات الأساسية لتحويل قيمة BCD إلى رقم عشري. لذلك دعونا نفعل ذلك الآن.
من منظور الأجهزة ، نحتاج إلى أن نأخذ في الاعتبار شيئًا آخر - يعمل مفتاح عجلة الدفع كهربائيًا مثل أربعة أزرار ضغط عادة ما تكون مفتوحة. هذا يعني أننا بحاجة إلى استخدام مقاومات منسدلة من أجل الحصول على فرق واضح بين الحالات العالية والمنخفضة. لذا فإن التخطيطي لمفتاح واحد كما هو موضح أعلاه.
الخطوة الرابعة:
الآن أصبح من السهل توصيل المخرجات المسمى 1 و 2 و 4 و 8 (على سبيل المثال) المسامير الرقمية 8 و 9 و 10 و 11. قم بتوصيل 5 فولت بنقطة المحول "C" و GND بـ… GND. بعد ذلك ، نحتاج إلى رسم تخطيطي يمكنه قراءة المدخلات وتحويل إخراج BCD إلى رقم عشري. ضع في اعتبارك الرسم التخطيطي التالي:
/ * يستخدم درع العرض الرقمي SAA1064 https://www.gravitech.us/7segmentshield.html يستخدم الشاشة التسلسلية إذا لم يكن لديك درع SAA1064 * / # تضمين "Wire.h" #define q1 8 #define q2 9 # تحديد q4 10 # تعريف q8 11 إعداد باطل () {Serial.begin (9600)؛ Wire.begin () ؛ // انضم إلى ناقل i2c (العنوان اختياري للسيد) تأخير (500) ؛ pinMode (q1 ، الإدخال) ؛ // عجلة الإبهام '1' pinMode (q2 ، INPUT) ؛ // عجلة الإبهام '2' pinMode (q4 ، INPUT) ؛ // عجلة الإبهام '4' pinMode (q8 ، INPUT) ؛ // thumbwheel '8'} void dispSAA1064 (int Count) // يرسل عددًا صحيحًا 'Count' إلى Gravitech SAA1064 shield {const int lookup [10] = {0x3F ، 0x06 ، 0x5B ، 0x4F ، 0x66 ، 0x6D ، 0x7D ، 0x07 ، 0x7F ، 0x6F} ، آلاف ، مئات ، عشرات ، قاعدة ؛ Wire.beginTransmission (0x38) ؛ Wire.write (0) ؛ Wire.write (B01000111) ؛ Wire.endTransmission () ؛ Wire.beginTransmission (0x38) ؛ Wire.write (1) ؛ الآلاف = العد / 1000 ؛ المئات = (العدد- (آلاف * 1000)) / 100 ؛ العشرات = (العد - ((آلاف * 1000) + (مئات * 100))) / 10 ؛ الأساس = العد - ((آلاف * 1000) + (مئات * 100) + (عشرات * 10)) ؛ Wire.write (بحث [Base]) ؛ Wire.write (بحث [عشرات]) ؛ Wire.write (بحث [مئات]) ؛ Wire.write (بحث [بالآلاف]) ؛ Wire.endTransmission () ؛ تأخير (10) ؛ } int readSwitch () {int total = 0؛ if (digitalRead (q1) == HIGH) {total + = 1؛ } if (digitalRead (q2) == HIGH) {total + = 2؛ } if (digitalRead (q4) == HIGH) {total + = 4؛ } if (digitalRead (q8) == HIGH) {total + = 8؛ } العائد الإجمالي ؛ } void loop () {dispSAA1064 (readSwitch ()) ؛ // يرسل قيمة التبديل لعرض الدرع Serial.println (readSwitch ()) ؛ // يرسل قيمة التبديل إلى صندوق المراقبة التسلسلي}
وظيفة readSwitch () هي المفتاح. يقوم بحساب قيمة المحول عن طريق إضافة التمثيل العددي لكل ناتج من مخرجات التبديل وإرجاع الإجمالي كنتيجة له. في هذا المثال ، استخدمنا درع عرض رقمي يتم التحكم فيه بواسطة NXP SAA1064.
الخطوة الخامسة:
وظيفة readSwitch () هي المفتاح. يقوم بحساب قيمة المحول عن طريق إضافة التمثيل العددي لكل ناتج من مخرجات التبديل وإرجاع الإجمالي كنتيجة له. في هذا المثال ، استخدمنا درع عرض رقمي يتم التحكم فيه بواسطة NXP SAA1064.
إذا لم يكن لديك واحد ، فلا بأس - يتم إرسال النتائج أيضًا إلى الشاشة التسلسلية. الآن ، دعنا نراه عمليًا في الفيديو.
الخطوة السادسة:
حسنًا ، لا يبدو كثيرًا ، ولكن إذا كنت بحاجة إلى إدخال رقمي ، فإنه يوفر الكثير من المساحة المادية ويوفر طريقة دقيقة للدخول.
لذلك هناك لديك. هل ستستخدمها بالفعل في مشروع؟ لرقم واحد - نعم. لأربعة؟ ربما لا - ربما يكون من الأسهل استخدام لوحة مفاتيح مكونة من 12 رقمًا. هناك فكرة …
الخطوة 7: مفاتيح متعددة
الآن سوف نفحص كيفية قراءة أربعة أرقام - وعدم إضاعة كل تلك الدبابيس الرقمية في هذه العملية. بدلاً من ذلك ، سوف نستخدم IC موسع المنفذ ذو 16 بت Microchip MCP23017 الذي يتصل عبر ناقل I2C. يحتوي على ستة عشر دبابيس إدخال / إخراج رقمية يمكننا استخدامها لقراءة حالة كل مفتاح.
قبل المضي قدمًا ، يرجى ملاحظة أن بعض المعرفة المفترضة مطلوبة لهذه المقالة - ناقل I2C (الجزءان الأول والثاني) و MCP23017. سنصف أولاً توصيلات الأجهزة ، ثم رسم Arduino. أذكر التخطيطي المستخدم لمثال التبديل الفردي.
عندما تم توصيل المحول مباشرة بـ Arduino ، نقرأ حالة كل دبوس لتحديد قيمة المحول. سنفعل هذا مرة أخرى ، على نطاق أوسع باستخدام MCP23017. النظر في مخطط pinout:
الخطوة الثامنة:
لدينا 16 دبوسًا ، مما يسمح بتوصيل أربعة مفاتيح. لا تزال المشاعات الخاصة بكل مفتاح متصلة بـ 5 فولت ، ولا يزال لدى كل جهة اتصال للمفتاح مقاومة منسدلة 10 كيلو إلى GND. ثم نقوم بتوصيل 1 ، 2 ، 4 ، 8 دبابيس من الرقم الأول بـ GPBA0 ~ 3 ؛ الرقم الثاني 1 ، 2 ، 4 ، 8 إلى GPA4 ~ 7 ؛ الأرقام الثلاثة 1 و 2 و 4 و 8 إلى GPB0 ~ 3 والرقم الرابع هو 1 و 2 و 4 و 8 إلى GPB4 ~ 7.
الآن كيف نقرأ المفاتيح؟ قد تجعلك كل هذه الأسلاك تعتقد أنه صعب ، لكن الرسم بسيط للغاية. عندما نقرأ قيمة GPBA و B ، يتم إرجاع بايت واحد لكل بنك ، مع البت الأكثر أهمية أولاً. ستطابق كل أربع بتات إعداد المحول المتصل بدبابيس الإدخال / الإخراج المطابقة. على سبيل المثال ، إذا طلبنا البيانات لكل من بنوك IO وتم تعيين المحولات على 1 2 3 4 - سيرجع البنك A 0010 0001 وسيرجع البنك B 0100 0011.
نستخدم بعض عمليات bitshift لفصل كل أربع بتات في متغير منفصل - مما يترك لنا قيمة كل رقم. على سبيل المثال ، لفصل قيمة المفتاح الرابع ، نقوم بإزاحة البتات من البنك B >> 4. يؤدي هذا إلى دفع قيمة المفتاح الثالث إلى الخارج ، وتصبح البتات الفارغة على اليسار صفرًا.
لفصل قيمة المفتاح الثالث ، نستخدم معامل أحادي المعامل المركب & - والذي يترك قيمة المفتاح الثالث. تُظهر الصورة تحليلاً لقيم التبديل الثنائي - تُظهر قيم GPIOA و B الأولية ، ثم القيمة الثنائية لكل رقم والقيمة العشرية.
الخطوة 9:
لذلك دعونا نرى الرسم التوضيحي:
/ * مثال 40a - اقرأ أربعة مفاتيح BCD لعجلة الدفع عبر MCP23017 ، اعرض على شاشة LED ذات 7 مقاطع SAA1064 / 4 أرقام * / // MCP23017 دبابيس 15 ~ 17 إلى GND ، عنوان ناقل I2C هو 0x20 // SAA1064 I2C عنوان ناقل 0x38 # تتضمن "Wire.h" // لتعريفات أرقام LED int الأرقام [16] = {63، 6، 91، 79، 102، 109، 125، 7، 127، 111، 119، 124، 57، 94، 121، 113 } ؛ بايت GPIOA ، GPIOB ، dig1 ، dig2 ، dig3 ، dig4 ؛ initSAA1064 () باطلة {// setup 0x38 Wire.beginTransmission (0x38) ؛ Wire.write (0) ؛ Wire.write (B01000111) ؛ // 12mA الإخراج ، لا يوجد رقم طمس Wire.endTransmission () ؛ } إعداد باطل () {Serial.begin (9600) ؛ Wire.begin () ؛ // بدء تشغيل ناقل I2C initSAA1064 () ؛ } حلقة فارغة () {// اقرأ مدخلات البنك أ Wire.beginTransmission (0x20) ؛ Wire.write (0x12) ؛ Wire.endTransmission () ؛ Wire.request From (0x20، 1) ؛ GPIOA = Wire.read () ، // يحتوي هذا البايت على بيانات التبديل للأرقام 1 و 2 // اقرأ مدخلات البنك B Wire.beginTransmission (0x20) ؛ Wire.write (0x13) ؛ Wire.endTransmission () ؛ Wire.request From (0x20، 1) ؛ GPIOB = Wire.read () ، // يحتوي هذا البايت على بيانات التبديل للأرقام 3 و 4 // قيمة الاستخراج لكل مفتاح // dig1 LHS ، dig4 RHS dig4 = GPIOB >> 4 ؛ dig3 = GPIOB & B00001111 ؛ dig2 = GPIOA >> 4 ؛ dig1 = GPIOA & B00001111 ؛ // إرسال جميع بيانات GPIO وبيانات التبديل الفردية إلى الشاشة التسلسلية // من أجل التصحيح والمصلحة Serial.print ("GPIOA =") ؛ Serial.println (GPIOA ، BIN) ؛ Serial.print ("GPIOB =") ؛ Serial.println (GPIOB ، BIN) ؛ Serial.println () ، Serial.print ("digit 1 =") ؛ Serial.println (dig1 ، BIN) ؛ Serial.print ("digit 2 =") ؛ Serial.println (dig2 ، BIN) ؛ Serial.print ("digit 3 =") ؛ Serial.println (dig3 ، BIN) ؛ Serial.print ("digit 4 =") ؛ Serial.println (dig4، BIN) ؛ Serial.println () ، Serial.print ("digit 1 =") ؛ Serial.println (dig1 ، DEC) ؛ Serial.print ("digit 2 =") ؛ Serial.println (dig2 ، DEC) ؛ Serial.print ("digit 3 =") ؛ Serial.println (dig3 ، DEC) ؛ Serial.print ("digit 4 =") ؛ Serial.println (dig4 ، DEC) ؛ Serial.println () ، // إرسال قيمة التبديل إلى شاشة LED عبر SAA1064 Wire.beginTransmission (0x38) ؛ Wire.write (1) ؛ Wire.write (أرقام [dig4]) ؛ Wire.write (أرقام [dig3]) ؛ Wire.write (أرقام [dig2]) ؛ Wire.write (أرقام [dig1]) ؛ Wire.endTransmission () ؛ تأخير (10) ؛ تأخير (1000) ؛ }
وللكافرين… عرض بالفيديو.
لذلك هناك لديك. أربعة أرقام بدلاً من واحد ، وفوق ناقل I2C الذي يحافظ على دبابيس الإدخال / الإخراج الرقمية من Arduino. باستخدام ثمانية MCP23017s ، يمكنك قراءة 32 رقمًا في وقت واحد. استمتع بفعل ذلك!
يمكنك طلب كل من المفاتيح BCD والمفاتيح العشرية بأحجام مختلفة من PMD Way ، مع التوصيل المجاني في جميع أنحاء العالم.
هذا المنشور يقدمه لك pmdway.com - كل شيء للصانعين وعشاق الإلكترونيات ، مع التوصيل المجاني في جميع أنحاء العالم.
موصى به:
صندوق موسع عصا التحكم في لوحة مفاتيح Arduino وشيء التحكم في الصوت باستخدام Deej: 8 خطوات
صندوق موسع عصا التحكم في لوحة مفاتيح Arduino وشيء وحدة التحكم في الصوت باستخدام Deej: لماذا لفترة من الوقت كنت أرغب في إضافة عصا تحكم صغيرة إلى لوحة المفاتيح للتحكم في عناصر الواجهة أو المهام الأصغر الأخرى في الألعاب وأجهزة المحاكاة (MS Flight Sim ، Elite: Dangerous ، حرب النجوم: الأسراب ، إلخ). أيضًا ، بالنسبة إلى Elite: Dangerous ، لقد كنت
لوحة مفاتيح USB عالمية مع مفاتيح RGB: 6 خطوات
لوحة مفاتيح USB عالمية مع مفاتيح RGB: في هذا التوجيه ، سأوضح لك كيفية إنشاء لوحة مفاتيح USB مخصصة تتصرف تمامًا مثل لوحة مفاتيح الكمبيوتر العادية. يمكنك تعيين أي مجموعة مفاتيح أو تسلسل مفاتيح للضغط عليها أثناء الضغط على زر ضغط واحد فقط. يمكنك استخدامه
ساعة Thumbwheel - دعونا نخمن الوقت: 5 خطوات (بالصور)
ساعة Thumbwheel - دعنا نخمن الوقت: مرحبًا بالجميع ، ها هي أول Instructables لي ، لذلك آمل أن تكون جيدة. علاوة على ذلك ، فإن مستواي في اللغة الإنجليزية ضعيف للغاية ، لذا آمل ألا أرتكب الكثير من الأخطاء! الهدف من هذا المشروع هو إعادة استخدام بعض & quot؛ Thumbwheels & quot؛ تم إنقاذها من معمل قديم ه
لوحة مفاتيح سريعة وقذرة (لوحة مفاتيح فارغة): 3 خطوات
لوحة مفاتيح سريعة وقذرة (لوحة مفاتيح فارغة): لوحة مفاتيح داس هي اسم لوحة المفاتيح الأكثر شيوعًا بدون نقوش على المفاتيح (لوحة مفاتيح فارغة). يتم بيع لوحة مفاتيح Das بسعر 89.95 دولارًا. سيرشدك هذا الدليل أثناء إنشاء لوحة مفاتيح قديمة لديك
تنظيف لوحة مفاتيح Apple Aluminium . أو أي لوحة مفاتيح أخرى ناعمة الملمس: 5 خطوات
تنظيف لوحة مفاتيح Apple Aluminium …. أو أي لوحة مفاتيح أخرى ناعمة الملمس: نظيفة مثلك أو قد أحاول الحفاظ على لوحات مفاتيح Apple المصنوعة من الألومنيوم ، فإنها تصبح قذرة بعد عام أو نحو ذلك. هذا التوجيه هو لمساعدتك على تنظيفه. كن حذرًا ، لأنني لست مسؤولاً إذا تعطلت لوحة المفاتيح أثناء القيام بذلك …. SUCKS F