لقد قمنا سابقًا بتوصيل Joystick مع Arduino UNO لفهم كيفية عمله والتحكم في أربعة مصابيح LED على حركته اليسرى واليمنى والأعلى والأسفل. في هذا المشروع ، سنستخدم نفس المقود مثل Gamepad أو وحدة التحكم في اللعبة للعب أي ألعاب كمبيوتر تتطلب حركات اليسار واليمين والأعلى والأسفل. لتشغيل الألعاب التي تتطلب المزيد من خيارات التحكم ، يمكن استخدام اثنين أو أكثر من أذرع التحكم. هنا سوف نستخدم Arduino Leonardo لواجهة Joystick كوحدة تحكم في الألعاب. يتميز Arduino Leonardo على Uno بأنه يمكننا تثبيت برامج تشغيل USB عليه ويمكن اكتشافه على أنه ماوس أو لوحة مفاتيح أو عصا تحكم بواسطة الكمبيوتر عند الاتصال.
المكونات مطلوبة
- اردوينو ليوناردو
- وحدة المقود XY ثنائية المحور
- اردوينو IDE
- توصيل الأسلاك
اردوينو ليوناردو
بالنسبة لهذا المشروع ، نستخدم Arduino Leonardo ، وهو عبارة عن لوحة متحكم تعتمد على ATmega32u4. يحتوي على 20 دبوس إدخال / إخراج رقمي (يمكن استخدام 7 منها كمخرجات PWM و 12 كمدخلات تناظرية) ، ومذبذب بلوري 16 ميجا هرتز ، ووصلة USB صغيرة ، ومقبس طاقة ، ورأس ICSP وزر إعادة تعيين. يحتوي على كل ما يلزم لدعم المتحكم الدقيق ؛ ما عليك سوى توصيله بجهاز كمبيوتر باستخدام كبل USB أو تشغيله باستخدام محول أو بطارية AC-to-DC للبدء.
يختلف Leonardo عن جميع اللوحات السابقة في أن ATmega32u4 يحتوي على اتصال USB مدمج ، مما يلغي الحاجة إلى معالج ثانوي. هذا يسمح ليوناردو بالظهور على جهاز كمبيوتر متصل على شكل ماوس ولوحة مفاتيح ، بالإضافة إلى منفذ تسلسلي / COM افتراضي (CDC).
المواصفات الفنية
متحكم | ATmega32u4 |
جهد التشغيل | 5 فولت |
جهد الإدخال (موصى به) | 7-12 فولت |
جهد الإدخال (حدود) | 6-20 فولت |
دبابيس الإدخال / الإخراج الرقمية | 20 |
قنوات PWM | 7 |
قنوات الإدخال التناظرية | 12 |
تيار مستمر لكل I / O Pin | 40 مللي أمبير |
تيار مستمر ل 3.3 فولت دبوس | 50 مللي أمبير |
ذاكرة متنقله | 32 كيلو بايت (ATmega32u4) يستخدم 4 كيلو بايت منها بواسطة أداة تحميل التشغيل |
SRAM | 2.5 كيلو بايت (ATmega32u4) |
إيبروم | 1 كيلو بايت (ATmega32u4) |
سرعة الساعة | 16 ميجا هرتز |
الطول | 68.6 ملم |
عرض | 53.3 ملم |
وزن | 20 جرام |
مرجع PIN Out
وحدة المقود XY ثنائية المحور
تتوفر أذرع التحكم بأشكال وأحجام مختلفة. يتم عرض وحدة جويستيك نموذجية في الشكل أدناه. توفر وحدة جويستيك هذه عادةً مخرجات تناظرية وتستمر الفولتية الناتجة التي توفرها هذه الوحدة في التغيير وفقًا للاتجاه الذي نحركه فيه. ويمكننا الحصول على اتجاه الحركة من خلال تفسير تغيرات الجهد هذه باستخدام بعض الميكروكونترولر. في السابق قمنا بتوصيل عصا الفرح بمتحكمات دقيقة مختلفة:
- ربط عصا التحكم مع اردوينو
- ربط عصا التحكم مع Raspberry Pi
- ربط عصا التحكم مع متحكم PIC
- جويستيك تتفاعل مع متحكم AVR
تحتوي وحدة عصا التحكم هذه على محورين كما ترى. هم المحور السيني والمحور ص. كل محور من JOY STICK مثبت على مقياس جهد أو وعاء. يتم إخراج النقاط الوسطى من هذه الأواني مثل Rx و Ry. لذا فإن Rx و Ry هما نقاط متغيرة لهذه الأواني. عندما يكون جويستيك في وضع الاستعداد ، يعمل Rx و Ry كمقسم جهد.
عندما يتم تحريك عصا التحكم على طول المحور الأفقي ، يتغير الجهد عند دبوس Rx. وبالمثل ، عندما يتم تحريكه على طول المحور الرأسي ، يتغير الجهد في Ry pin. لذلك لدينا أربعة اتجاهات من جويستيك على اثنين من مخرجات ADC. عندما يتم تحريك العصا ، فإن الجهد على كل دبوس يرتفع أو ينخفض حسب الاتجاه.
مخطط الرسم البياني
تتطلب وحدة التحكم في لعبة Arduino Joystick هذه اتصالات بين Arduino و Joystick على النحو التالي:
كود وشرح العمل
يتم تقديم رمز كامل مع فيديو توضيحي في النهاية ؛ نحن هنا نوضح بعض الأجزاء المهمة منه.
أولاً ، نحتاج إلى تهيئة مكتبة لوحة المفاتيح
#تضمن
بعد ذلك في الكود أدناه ، قمنا بتهيئة المحور X و Y لوحدة جويستيك للوحدة التناظرية A0 و A1 على التوالي.
const int X_pin و const int Y_pin على التوالي
تتم قراءة القيمة التناظرية لدبوس VRX وإذا كانت القيمة 1023 ، فسيتم إعطاء أمر "up" وإذا كانت القيمة 0 ، فسيتم إعطاء أمر "down".
وبالمثل ، تتم قراءة القيمة التناظرية لدبوس VRY وإذا كانت القيمة 1023 ، فسيتم إعطاء الأمر لـ "right" وإذا كانت القيمة 0 فسيتم إعطاء الأمر لـ "left".
تحتوي عصا التحكم أيضًا على زر ضغط في الأعلى بحيث تتم قراءة هذا الزر (SW) أيضًا وإذا تم الضغط على الزر ، فستكون القيمة 0 ثم يتم إعطاء أمر "الإدخال".
أخيرًا انسخ الكود في Arduino وقم بتوصيل Arduino بالكمبيوتر.
بعد ذلك تحقق من " الأجهزة والطابعات" في لوحة التحكم الخاصة بك ، ستتمكن من رؤية " Arduino Leonardo" ضمن قسم الأجهزة كما هو موضح في الصورة أدناه. أنت الآن جاهز للعب باستخدام عصا التحكم.
يمكننا التحكم في أي ضوابط لعبة باستخدام عصا التحكم هذه. تحتوي عصا التحكم على مقياسين للجهد بداخلها ، أحدهما لحركة المحور X والآخر لحركة المحور Y. يحصل كل مقياس جهد على 5 فولت من Arduino. لذلك أثناء تحريك عصا التحكم ، ستتغير قيمة الجهد وستتغير القيمة التناظرية عند المسامير التناظرية A0 و A1 أيضًا. لذا ستعمل عصا التحكم كلوحة ألعاب.
هذه هي الطريقة التي يمكن بها تحويل جويستيك عادي إلى وحدة تحكم ألعاب باستخدام Arduino Leonardo ويمكن استخدامه لممارسة الألعاب التي تحتوي على جميع عناصر التحكم للتحرك يسارًا ويمينًا ولأعلى ولأسفل. كما قيل سابقًا ، يمكن توصيل أكثر من جويستيك للحصول على المزيد من عناصر التحكم بخلاف هذه الوظائف الأربع الأساسية.