- المواد المطلوبة
- مخطط الرسم البياني
- وحدة جويستيك
- الكود والشرح
- التحكم في المصابيح باستخدام عصا التحكم مع Arduino
أول ما يتبادر إلى أذهاننا عند الاستماع إلى كلمة جويستيك هو وحدة التحكم في اللعبة. نعم ، هي نفسها تمامًا ويمكن استخدامها لأغراض الألعاب. بصرف النظر عن الألعاب ، فإنه يحتوي على العديد من التطبيقات الأخرى في إلكترونيات DIY. عصا التحكم هذه ليست سوى مزيج من مقياسين للجهد للطائرة X و Y على التوالي. يقرأ الجهد من خلال مقياس الجهد ويعطي قيمة تناظرية لـ Arduino ، وتتغير القيمة التناظرية أثناء تحريك عمود التحكم (وهو ببساطة مؤشر الجهد).
في هذه الدائرة ، نقوم بتوصيل Joystick مع Arduino ببساطة عن طريق التحكم في أربعة مصابيح LED وفقًا لحركة Joystick. لقد وضعنا 4 مصابيح LED بطريقة تمثل اتجاه حركة عمود التحكم. يحتوي ذراع التحكم هذا أيضًا على زر ضغط يمكن استخدامه لأغراض أخرى مختلفة أو يمكن تركه خاملاً. يتم أيضًا توصيل مؤشر LED واحد بمفتاح عصا التحكم ، حيث يضغط زر عصا التحكم على أن مؤشر LED الفردي سيتم تشغيله.
المواد المطلوبة
- اردوينو UNO
- وحدة جويستيك
- المصابيح - 5
- المقاوم: 100 أوم -3
- توصيل الأسلاك
- اللوح
مخطط الرسم البياني
وحدة جويستيك
تتوفر أذرع التحكم بأشكال وأحجام مختلفة. يتم عرض وحدة جويستيك نموذجية في الشكل أدناه. توفر وحدة جويستيك هذه عادةً مخرجات تناظرية وتستمر الفولتية الناتجة التي توفرها هذه الوحدة في التغيير وفقًا للاتجاه الذي نحركه فيه. ويمكننا الحصول على اتجاه الحركة من خلال تفسير تغيرات الجهد هذه باستخدام بعض الميكروكونترولر. في السابق قمنا بتوصيل Joystick مع AVR و Raspberry Pi.
تحتوي وحدة عصا التحكم هذه على محورين كما ترى. هم المحور السيني والمحور ص. يتم تثبيت كل محور من JOYSTICK على مقياس جهد أو وعاء. يتم إخراج نقاط المنتصف لهذه الأواني على أنها Rx و Ry. لذا فإن Rx و Ry هما نقاط متغيرة لهذه الأواني. عندما يكون جويستيك في وضع الاستعداد ، يعمل Rx و Ry كمقسم جهد.
عندما يتم تحريك عصا التحكم على طول المحور الأفقي ، يتغير الجهد عند دبوس Rx. وبالمثل ، عندما يتم تحريكه على طول المحور الرأسي ، يتغير الجهد في Ry pin. لذلك نحن لدينا أربعة اتجاهات المقود على اثنين من النواتج ADC. عندما يتم تحريك العصا ، فإن الجهد على كل دبوس يرتفع أو ينخفض حسب الاتجاه.
هنا ، نقوم بتوصيل وحدة جويستيك هذه مع Arduino UNO والتي تأتي مع آلية ADC (محول تناظري إلى رقمي) مدمجة كما هو موضح في الفيديو في النهاية. تعرف على المزيد حول استخدام ADC من Arduino هنا.
الكود والشرح
تم ذكر كود Arduino الكامل في النهاية.
في الكود أدناه ، حددنا المحور X و Y لوحدة جويستيك للوحدة التناظرية A0 و A1 على التوالي.
# تعريف joyX A0 # تعريف JoyY A1
الآن ، في الكود أدناه ، نقوم بتهيئة PIN 2 من Arduino للمفتاح (زر الضغط) لوحدة جويستيك وستكون قيمة buttonstate و buttonstate1 0 في البداية.
زر int = 2 ؛ int buttonState = 0 ؛ int buttonState1 = 0 ؛
في الكود أدناه ، نقوم بإعداد معدل البث بالباود إلى 9600 وتحديد Pin 7 كدبوس إخراج ودبوس زر كمدخل إدخال. في البداية ، سيظل دبوس الزر مرتفعًا حتى يضغط المفتاح.
إعداد باطل () {pinMode (7، OUTPUT) ؛ pinMode (زر ، المدخلات) ؛ digitalWrite (زر ، مرتفع) ؛ Serial.begin (9600) ؛ }
هنا ، في هذا الرمز ، نقرأ القيم من الدبوس التناظري A0 و A1 ونطبع بشكل متسلسل.
int xValue = analogRead (joyX) ؛ int yValue = analogRead (joyY) ؛ Serial.print (xValue) ؛ Serial.print ("\ t") ؛ Serial.println (yValue) ؛
يتم تحديد شروط تشغيل وإيقاف تشغيل LED وفقًا لحركة عمود التحكم في الكود أدناه. نحن هنا نأخذ فقط القيم التناظرية للجهد عند الطرف A0 و A1 من Arduino. ستتغير هذه القيم التناظرية أثناء تحريك عصا التحكم وسيتوهج مؤشر LED وفقًا لحركة عصا التحكم.
هذا الشرط لحركة عمود التحكم في اتجاه المحور Y.
إذا (xValue> = 0 && yValue <= 10) {digitalWrite (10، HIGH)؛ } else {digitalWrite (10، LOW)؛}
هذا الشرط لحركة عمود التحكم في اتجاه المحور X.
إذا (xValue <= 10 && yValue> = 500) {digitalWrite (11، HIGH)؛ } else {digitalWrite (11، LOW)؛}
هذا الشرط لحركة عمود التحكم في اتجاه المحور + X
إذا (xValue> = 1020 && yValue> = 500) {digitalWrite (9، HIGH) ؛ } else {digitalWrite (9، LOW)؛}
هذا الشرط خاص بحركة عمود التحكم في اتجاه المحور + Y
إذا (xValue> = 500 && yValue> = 1020) {digitalWrite (8، HIGH) ؛ } else {digitalWrite (8، LOW)؛}
عندما نقوم بتحريك عمود التحكم قطريًا ، فسيأتي موضع واحد عندما تكون القيمة التناظرية لـ X و Y هي 1023 و 1023 على التوالي ، سوف يتوهج كل من Pin 9 و Pin 8 LED. لأنه يفي بحالة LED. لذلك ، لإزالة هذا عدم التطابق ، قدمنا شرطًا مفاده أنه إذا كانت قيمة (X ، Y) هي (1023 ، 1023) ، فسيظل كل من مؤشر LED في حالة إيقاف التشغيل
إذا (xValue> = 1020 && yValue> = 1020) {digitalWrite (9، LOW)؛ digitalWrite (8 ، منخفض) ؛ }
يستخدم الشرط أدناه لتشغيل مؤشر LED المتصل بمفتاح الضغط. أثناء الضغط على مفتاح جويستيك ، سيتم تشغيل مؤشر LED ومزلاج حتى يتم تحرير الزر. اختياري لاستخدام زر الضغط على وحدة عصا التحكم.
if (buttonState == LOW) {Serial.println ("Switch = High") ؛ digitalWrite (7 ، عالية) ؛ } else {digitalWrite (7، LOW)؛}
التحكم في المصابيح باستخدام عصا التحكم مع Arduino
بعد تحميل الكود إلى Arduino وتوصيل المكونات وفقًا لمخطط الدائرة ، يمكننا الآن التحكم في مصابيح LED باستخدام جويستيك. يمكننا تشغيل مصابيح LED الأربعة في كل اتجاه وفقًا لحركة عمود التوجيه. تحتوي عصا التحكم على مقياسين للجهد بداخلها ، أحدهما لحركة المحور السيني والآخر لحركة المحور ص. يحصل كل مقياس جهد على 5 فولت من Arduino. لذلك أثناء تحريك عصا التحكم ، ستتغير قيمة الجهد وستتغير القيمة التناظرية عند المسامير التناظرية A0 و A1 أيضًا.
لذلك ، من Arduino ، نقرأ القيمة التناظرية لمحور X و Y ونقوم بتشغيل مصابيح LED وفقًا لحركة محور عصا التحكم. يتم استخدام زر الضغط في وحدة جويستيك للتحكم في مؤشر LED الفردي في الدائرة كما هو موضح في الفيديو أدناه.