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

توصيل وتشغيل أزرار أركيد: 7 خطوات (بالصور)
توصيل وتشغيل أزرار أركيد: 7 خطوات (بالصور)

فيديو: توصيل وتشغيل أزرار أركيد: 7 خطوات (بالصور)

فيديو: توصيل وتشغيل أزرار أركيد: 7 خطوات (بالصور)
فيديو: كيفية تشغيل جميع انواع الدراعات الرخيصة على اى لعبة علي الكمبيوتر Connect Usb Joystick On Pc 2024, ديسمبر
Anonim
قم بتوصيل وتشغيل أزرار الممرات
قم بتوصيل وتشغيل أزرار الممرات

لقد بدأت مؤخرًا في استخدام Arduino لإنشاء مشاريعي. كمصمم ، أحب إنشاء واجهات مخصصة لألعابي / المشاريع التفاعلية.

المشكلة الوحيدة التي واجهتها في استخدام الاتصال التسلسلي معقدة للغاية وعرضة للمشاكل والأخطاء وأردت حلاً سريعًا وسهلاً للسماح لي باستخدام الأزرار الخارجية للتحكم في ألعابي.

نظرًا لأنني أردت جهازًا للتوصيل والتشغيل يمكنك استخدامه على الفور مع أي جهاز كمبيوتر ، فقد اشتريت Arduino Leonardo. إنه مطابق تقريبًا لـ Uno ، لكن مع بعض الاختلافات. الاختلاف الرئيسي الذي سأستخدمه لمصلحتي لهذا المشروع هو قدرته على العمل كجهاز HID. جهاز HID أو واجهة المستخدم هو بروتوكول USB يسمح لجهاز الكمبيوتر الخاص بك بالتعرف على المدخلات من لوحات المفاتيح وماوس الكمبيوتر وقبولها دون الحاجة إلى تثبيت برامج تشغيل مخصصة لكل جهاز.

ملاحظة: يمكنك أيضًا استخدام Uno ، إذا قمت بتحديث البرنامج الثابت ، كما هو موضح هنا.

الخطوة 1: المواد

لهذا المشروع سوف تحتاج:

متحكم دقيق 1x HID (هناك عدد قليل مثل Arduino micro و Due & leonardo ، سأستخدم Arduino Leonardo)

1x USB إلى كابل اردوينو (لليوناردو إنه USB الصغير)

3 أزرار أركيد (اشتريت هذه الأزرار)

1x لوح توصيل بدون لحام

3x 10 كيلو أوم مقاومات

3x 220 أوم مقاومات

أسلاك العبور

يمكنك بالطبع إضافة المزيد من الأزرار ، أو لحام كل شيء في لوح التجارب لجعل الأشياء أكثر ديمومة.

الخطوة 2: النمذجة

النماذج
النماذج
النماذج
النماذج
النماذج
النماذج

لذا ، قبل أن أشتري أزرار الآركيد التي أردت استخدامها ، اختبرت ذلك باستخدام أزرار الضغط القياسية. اربط الأزرار بالطريقة القياسية ، أعتقد أنني استخدمت مقاومات 10 كيلو أوم.

البرمجة ، بفضل ليوناردو ، بسيطة للغاية. يجب عليك تضمين مكتبة لوحة المفاتيح. لقد استخدمت مثال Arduino القياسي "رسالة لوحة المفاتيح" كأساس للرمز الخاص بي.

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

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

# تضمين "Keyboard.h"

const int buttonLeft = A0 ؛ // إدخال دبوس لزر الضغط

زر const int buttonRight = A1 ؛ const int buttonUp = A2 ؛

int previousButtonStateLeft = عالية ؛ // لفحص حالة زر الضغط

int previousButtonStateRight = عالية ؛ int previousButtonStateUp = عالية ؛

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

// اجعل دبوس الضغط مدخلاً: pinMode (buttonLeft ، INPUT) ؛ pinMode (buttonRight ، INPUT) ؛ pinMode (buttonUp ، INPUT) ؛ // تهيئة التحكم في لوحة المفاتيح: Keyboard.begin () ؛ }

حلقة فارغة() {

// قراءة زر الضغط: int buttonStateLeft = digitalRead (buttonLeft) ؛ // إذا تغيرت حالة الزر ، إذا ((buttonStateLeft! = previousButtonStateLeft) // وتم الضغط عليه حاليًا: && (buttonStateLeft == HIGH)) {// اكتب رسالة Keyboard.print ("a") ؛ } // حفظ حالة الزر الحالية للمقارنة في المرة القادمة: previousButtonStateLeft = buttonStateLeft؛

// اقرأ الزر الانضغاطي:

int buttonStateRight = digitalRead (buttonRight) ؛ // إذا تغيرت حالة الزر ، إذا ((buttonStateRight! = previousButtonStateRight) // وتم الضغط عليه حاليًا: && (buttonStateRight == HIGH)) {// اكتب رسالة Keyboard.print ("w") ؛ } // حفظ حالة الزر الحالية للمقارنة في المرة القادمة: previousButtonStateRight = buttonStateRight؛

// اقرأ الزر الانضغاطي:

int buttonStateUp = digitalRead (buttonUp) ، // إذا تغيرت حالة الزر ، إذا ((buttonStateUp! = previousButtonStateUp) // وتم الضغط عليه حاليًا: && (buttonStateUp == HIGH)) {// اكتب رسالة Keyboard.print ("d") ؛ } // حفظ حالة الزر الحالية للمقارنة في المرة القادمة: previousButtonStateUp = buttonStateUp؛ }

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

# تضمين "Keyboard.h"

const int buttonLeft = A0 ؛ // إدخال دبوس لزر الضغط

زر const int buttonRight = A1 ؛ const int buttonUp = A2 ؛

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

// اجعل دبوس الضغط مدخلاً: pinMode (buttonLeft ، INPUT) ؛ pinMode (buttonRight ، INPUT) ؛ pinMode (buttonUp ، INPUT) ؛ // تهيئة التحكم في لوحة المفاتيح: Keyboard.begin () ؛ }

حلقة فارغة() {

// قراءة زر الضغط: int buttonStateLeft = digitalRead (buttonLeft) ؛ if (buttonStateLeft == HIGH) // إذا تم الضغط على الزر {// اكتب رسالة Keyboard.print ("a") ؛ تأخير (50) ؛ // تأخير للارتداد وتمكين الكمبيوتر من اللحاق بالركب}

// اقرأ الزر الانضغاطي:

int buttonStateRight = digitalRead (buttonRight) ؛ if (buttonStateRight == HIGH) // إذا تم الضغط على الزر {// اكتب رسالة Keyboard.print ("w") ؛ تأخير (50) ؛ // تأخير للارتداد وتمكين الكمبيوتر من اللحاق بالركب}

// اقرأ الزر الانضغاطي:

int buttonStateUp = digitalRead (buttonUp) ، if (buttonStateUp == HIGH) // إذا تم الضغط على الزر {// اكتب رسالة Keyboard.print ("d") ؛ تأخير (50) ؛ // تأخير للارتداد ولإتاحة الفرصة لجهاز الكمبيوتر الخاص بك اللحاق بالركب}}

يمكنك دائمًا استخدام مزيج من كلتا الطريقتين ، اعتمادًا على ما يناسب احتياجاتك.

الخطوة 3: قص العلبة بالليزر

قطع العلبة بالليزر
قطع العلبة بالليزر

بالنسبة للحالة ، استخدمت mdf 3 مم ، مع إدراج زجاجي 2 مم. لقد أضفت الإدخال لأنني أريد إضافة بعض مصابيح LED داخل العلبة في مرحلة لاحقة لجعلها لطيفة ومتوهجة.

لقد أدخلت أبعادي في makercase وقمت بتنزيل ملف svg. فتحته في Illustrator وأضفت الثقوب حيث أردتها. إذا لم يكن لديك برنامج Illustrator ، يمكنك استخدام Inkscape لهذه الخطوة.

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

الخطوة 4: لحام أزرار أركيد

أزرار ممر اللحام
أزرار ممر اللحام
أزرار ممر اللحام
أزرار ممر اللحام
أزرار ممر اللحام
أزرار ممر اللحام

يتكون زر الممرات (أو زر لي على الأقل) من ثلاثة أجزاء. الغلاف البلاستيكي ، حامل LED (مع LED بداخله) والمفتاح الصغير. المفتاح الصغير هو جزء الزر الفعلي من الزر وهو ما ستحتاجه للاتصال بـ Arduino. هناك ثلاثة أطراف (بتات معدنية تخرج ، حيث ستلحم الأسلاك الخاصة بك) على المفتاح الصغير. واحد في الأعلى (أو في الأسفل ، ما تريده) هو الأرض. الطرفان الآخران هما فتح عادي (NO) ومغلق عادي (NC). لا يعني أنه إذا تم الضغط على المفتاح فإنه يقوم بإجراء اتصال. يعني NC أنه إذا تم الضغط على الزر فإنه يقطع الاتصال. سوف نستخدم NO لهذا المشروع. لقد قمت بتسمية الأرض ، NO و NC على مفتاحي الصغير في الصور.

تضيء الأزرار الخاصة بي لذا قمت بلحام الأسلاك بحامل LED. تأكد من تلوين الأسلاك الخاصة بك حتى تعرف أي جانب هو الأنود وأي القطب السالب (الجوانب الإيجابية والسلبية من LED).

لقد قمت بلحام دبابيس الرأس على الأسلاك الخاصة بي ، لتسهيل استخدامها مع لوح التجارب غير الملحوم. لقد قمت للتو بلحام السلك بمسمار الرأس ووضعت قليلاً من أنابيب الانكماش الحراري لجعلها أكثر مرونة.

الخطوة 5: كومة الأزرار وتوصيلها باللوحة الخاصة بك

كومة الأزرار وتوصيلها باللوحة الخاصة بك
كومة الأزرار وتوصيلها باللوحة الخاصة بك
كومة الأزرار وتوصيلها باللوحة الخاصة بك
كومة الأزرار وتوصيلها باللوحة الخاصة بك
كومة الأزرار وتوصيلها باللوحة الخاصة بك
كومة الأزرار وتوصيلها باللوحة الخاصة بك
كومة الأزرار وتوصيلها باللوحة الخاصة بك
كومة الأزرار وتوصيلها باللوحة الخاصة بك

حان الوقت الآن لتكديس أزرار الآركيد في حالتك. قم بإزالة حلقة القفل من الغلاف البلاستيكي وألصقها من خلال الفتحة الموجودة في العلبة. قم بربط حلقة القفل على الجانب الآخر لتأمين الزر في مكانه. قم بتثبيت حامل LED وقم بلفه لتثبيته في مكانه. تذبذب في المفاتيح الصغيرة (هناك القليل من النتوءات والثقوب التي تتماشى مع بعضها البعض لتثبيتها في مكانها).

لتوصيل المفاتيح باللوحة ، قم بإزالة الأزرار الانضغاطية التي قد تكون أضفتها أو لم تقم بإضافتها. قم بتوصيل السلك المؤدي من الأرض للمفتاح الصغير بأرض Arduino والمقاوم (حيث كانت ساق زر الضغط). قم بتوصيل السلك المؤدي من NO الخاص بالمفتاح الصغير إلى 5 فولت في Arduino.

بالنسبة لأسلاك LED ، قم بتوصيل السلك السالب بالأرض والسلك الموجب عبر المقاوم 220OHM إلى 5 فولت. إذا قمت بتوصيلهم بهذه الطريقة ، فسيظلون دائمًا في وضع التشغيل. يمكنك إضافتها في الكود وحملها على التشغيل والإيقاف بالتزامن مع الأزرار إذا كنت تريد ذلك.

الخطوة 6: ترميز الجحيم

لذلك ، قمت الآن بإرفاق الأزرار الجديدة الرائعة بكودك القديم وفجأة لم يعد يعمل كما ينبغي. تظهر الأحرف حرفين أو ثلاثة في وقت واحد ولا تعمل كما ينبغي مع ألعاب HTML5 البسيطة. مرحبا بكم في شطب الجحيم.

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

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

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

دعني أوفر لك هذه الرحلة ، إليك رمز العمل:

إخلاء المسؤولية: تمت كتابة هذا النص بعد ساعات من الترميز وإصلاح الأخطاء البرمجية في غاية البساطة. يرجى تجاهل أي علامات إحباط والتركيز على رمز العمل المنشور أدناه ؛)

# تضمين "Keyboard.h" # تعريف الزر المبلغ 3

int buttonPin = {

A0 ، A1 ، A2} ؛ // أين الأزرار؟ int asciiLetter = {97، 100، 119} ؛ // الحروف في ASCII ، هنا: a ، d ، w int buttonState [buttonAmount] ؛ // هل الزر مضغوط أم لا؟

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

لـ (int i = 0 ؛ i <buttonAmount ؛ i ++) {// دورة عبر صفيف pinMode (buttonPin ، INPUT) ؛ // ضبط كل الدبابيس على الإدخال}}

حلقة فارغة() {

لـ (int i = 0 ؛ i <buttonAmount ؛ i ++) // دورة عبر المصفوفة {buttonState = digitalRead (buttonPin ) ؛ // ماذا تفعل الأزرار؟ if (buttonState == HIGH) {// إذا تم الضغط على الزر Keyboard.press (asciiLetter ) ؛ // أرسل الحرف المقابل} else // إذا لم يتم الضغط على الزر {Keyboard.release (asciiLetter ) ؛ // حرر الحرف}}

}

الخطوة 7: كل شيء يعمل

استمتع بوحدة تحكم التوصيل والتشغيل المخصصة!

إذا كنت تحب هذه التعليمات ، فالرجاء التفكير في التصويت لي في المسابقة!

موصى به: