خلال هذا المشروع، سنتعلم كيفية استخدام عصا التحكم 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
}
