خلال هذا المشروع، سنتعلم كيفية استخدام عصا التحكم Joystick مع الاردوينو. ليتم استخدامها في تطبيقات مختلفة مثل التحكم في حركة الروبوت وتوجيهه، أو في عمل ألعاب الفيديو باستخدام الاردوينو.
المكونات المطلوبة
لوحة الأردوينو (Arduino Uno)
عصا التحكم ( Joystick)
لوح التجارب (Breadboard)
أسلاك توصيل (Wires)
عصا التحكم Joystick
عصا التحكم أو ذراع التوجيه هي احد القطع الالكترونية التي تتميز بالبساطة وسهولة البرمجة. حيث أنها تستخدم في تطبيقات متعددة مثل الألعاب، والروبوتات،والرافعات وغيرها.
تتكون عصا التحكم من مقاومتين متغيرتين للتحكم بمحاور الاتجاه X و Y . يؤدي تحريك عصا التحكم إلى تغيير في قيمة المقاومتان. ويتم تمثيل موضع عصا التحكم بنقطة يتم وصفها على محاور X,Y .
يتكون عصا التحكم من ثلاث مدخلات يتم توصيلهم إلى الأردوينوالخاص بك، في حين ان الاثنين المتبقية امدادات للطاقة.
توصيل الدارة :
قم بتوصيل عصا التحكم إلى الأردوينو كما هو موضح بالصورة التالية :
التوصيل :
Arduino | Joystick |
5v | Vcc |
Gnd | Gnd |
A0 | VRx |
A1 | VRy |
الكود البرمجي :
int xVal; //X values from joystick int yVal; //Y values from joystick void setup() { Serial.begin(9600); //Starts serial at 9600 baud pinMode(A0, INPUT); //Sets the analog ports used to an input pinMode(A1, INPUT); } void loop() { xVal = analogRead(A0); //read the X value yVal = analogRead(A1); //read the Y value Serial.print(" Y = "); Serial.print(yVal); //prints Y value Serial.print(" X = "); Serial.println(xVal); //prints X value delay(1000); // so that we dont get a spam on the serial monitor }
شرح الكود :
قمنا بتعريف متغيرين xVal، yVal إحداهما لتخزين قيمة X والأخر لتخزين قيمة Y ، حيث تمثل القيميتين موضع/موقع عصا التحكم.
في دالة التهيئة قمنا بتفعيل شاشة الاتصال التسلسلي، ثم ضبط الأطراف الموصله مع عصا التحكم كمدخل.
int xVal; //X values from joystick int yVal; //Y values from joystick void setup() { Serial.begin(9600); //Starts serial at 9600 baud pinMode(A0, INPUT); //Sets the analog ports used to an input pinMode(A1, INPUT); }
نقوم بقراءة قيم X و Y ثم عرض النتائج على شاشة الاتصال التسلسلي باستخدام الدالة (Serial.print(value .
void loop() { xVal = analogRead(A0); //read the X value yVal = analogRead(A1); //read the Y value Serial.print(" Y = "); Serial.print(yVal); //prints Y value Serial.print(" X = "); Serial.println(xVal); //prints X value delay(1000); // so that we dont get a spam on the serial monitor }