كيف تعمل عصا التحكم أو الالعاب Joystick و مواجهة مع الاردوينو اكتب تعليقُا

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

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

عندما تسمع كلمة Thumb Joystick ، فإن أول ما يتبادر إلى الذهن هو التحكم في اللعبة . إنها تستخدم بشكل أساسي لممارسة الألعاب ، على الرغم من أنه ، هناك الكثير من الأشياء الممتعة التي يمكنك القيام بها . مثل التحكم في روبوت ، والتحكم في حركة الكاميرا ؛ هذه ليست سوى قليل من كثير .

نظرة عامة على عصا التحكم أو الالعاب Joystick :

هذا ذراع تحكم يشبه إلى حد بعيد عصا التحكم “التناظرية” على وحدات تحكم PS2 (PlayStation 2) . إنه ذراع تحكم محمل ذات محور نابض ، مما يعني أنه عندما تقوم بإطلاق ذراع التحكم ، فإنه سيتم توسيط نفسه . كما أنه يحتوي على مقبض / غطاء مريح من نوع الكوب يمنح إحساسًا بالإبهام .

PS2-Joystick-Module-2-Potentiometers-Internal-Structure

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

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

PS2-Joystick-Module-Push-Button-Switch-Internal-Structure

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

How PS2 2-axis thumb joystick module works?

الفكرة الأساسية لعصا التحكم هي ترجمة موضع العصا على محورين – المحور X (من اليسار إلى اليمين) والمحور Y (لأعلى ولأسفل)  إلى معلومات إلكترونية يستطيع الاردوينو معالجتها . قد يكون هذا صعبًا بعض الشيء ، ولكن بفضل تصميم ذراع التحكم الذي يتكون من مقاييس جهد وآلية أو مكنيكية Gimbal . أصبح الامر سهلا فلا تقلق !

Gimbal Mechanism

2-Axis-Joystick-Working-Gimbal-Mechanism

عندما تقوم بتدوير ذراع التحكم ، فإن مقبض الإبهام يتحرك بقضيب ضيق يجلس في محاور ذات فتحات قابلة للتدوير (Gimbal) . يسمح أحد الأعمدة بالحركة في المحور X (اليسار واليمين) بينما يسمح الآخر بالحركة في المحور Y (لأعلى ولأسفل) .

إمالة العصا إلى الأمام والخلف تدور حول المحور Y من جانب إلى جانب . إمالة من اليسار إلى اليمين تدورحول المحور X . عندما تقوم بتحريك العصا قطريا ، فإنها تدور حول كل من المحورين .

Potentiometer-Working-In-Joystick-Module

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

قراءة القيم التناظرية من عصا التحكم Joystick :

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

نظرًا لأن لوحة الاردوينو بها دقة ADC تبلغ 10 بت ، فإن القيم في كل قناة تمثيلية (محور) يمكن أن تختلف من 0 إلى 1023 . لذلك ، إذا تم نقل العصا على محور X من طرف إلى آخر ، ستتغير قيم X من 0 إلى 1023 ويحدث شيء مشابه عندما يتم نقله على طول المحور Y . عندما يبقى ذراع التحكم في موضعه المركزي ، تكون القيمة حوالي 512 .
يُظهر الرسم أدناه اتجاهي X و Y ، كما يقدم أيضًا إشارة إلى كيفية استجابة المخرجات عند الضغط على ذراع التحكم في اتجاهات مختلفة .

PS2-Joystick-Module-Movement-Analog-Values-on-Arduino

من أجل استخدام ذراع التحكم ، ستحتاج إلى فهم أي اتجاه هو X وأي اتجاه هو Y. ستحتاج أيضًا إلى فك رموز الاتجاه الذي يتم الدفع في اتجاه X أو Y .

أطراف عصا التحكم Joystick :

دعونا نلقي نظرة على اطراف وحدة عصا التحكم Joystick .

.

Pinout-PS2-Joystick-Module
  • GND هو دبوس الأرضي الذي نربطه بدبوس GND على اردوينو .
  • VCC توفر الطاقة للوحدة . يمكنك توصيله إلى 5V الناتج من اردوينو الخاص بك .
  • VRx يعطي قراءات لعصا التحكم في الاتجاه الأفقي (إحداثي X) ، أي إلى أي مدى تم الضغط على اليسار .
  • VRy يقدم قراءات لعصا التحكم في الاتجاه الرأسي (إحداثي Y) ، أي إلى أي مدى يتم الضغط على ذراع التحكم لأعلى ولأسفل .
  • SW هو  زر ضغط  . إنه مفتوح عادة ، مما يعني أن القراءة الرقمية من دبوس SW ستكون عالية . عند الضغط على الزر ، سيتم الاتصال بـ GND ، مما يؤدي إلى انخفاض الناتج .

الأسلاك - ربط وحدة عصا التحكم لاردوينو UNO :

الآن بعد أن عرفنا كل شيء عن الوحدة ، فقد حان الوقت لاستخدامها!

كما نعلم ، من أجل تحديد إحداثيات X و Y لعصا التحكم ، نحتاج إلى توصيل كل من المخرجات التناظرية من عصا التحكم إلى دبابيس تمثيلية على الاردوينو . بالنسبة إلى لوحة الاردوينو الخاصة بنا ، نقوم بتوصيل VRx بالدبوس التمثيلي A0 من Arduino و VRy بالتناظري A1 من Arduino .

لقراءة ما إذا كان مفتاح عصا التحكم قد تم الضغط عليه لأسفل ، نقوم بتوصيل دبوس SW لعصا التحكم بالدبوس الرقمي D8 من Arduino .

arduino_8gA6v3ZrFh
تنبيه : في حال لم تكن متأكد من قدرتك على تنفيذ خطوات المشروع يرجى استشارة شخص متخصص في هذا المجال.

الكود البرمجي :

البرنامج بسيط جدا سوف نفوم بقرأ القياسات من اثنين من المدخلات التناظرية وواحد من المدخلات الرقمية . ثم سنقوم بعرض النتيجة على الشاشة التسلسلية .

لتحميل الكود البرمجي اضغط هنا
// Arduino pin numbers
const int SW_pin = 2; // digital pin connected to switch output
const int X_pin = 0; // analog pin connected to X output
const int Y_pin = 1; // analog pin connected to Y output

void setup() {
  pinMode(SW_pin, INPUT);
  digitalWrite(SW_pin, HIGH);
  Serial.begin(9600);
}

void loop() {
  Serial.print("Switch:  ");
  Serial.print(digitalRead(SW_pin));
  Serial.print(" | ");
  Serial.print("X-axis: ");
  Serial.print(analogRead(X_pin));
  Serial.print(" | ");
  Serial.print("Y-axis: ");
  Serial.print(analogRead(Y_pin));
  Serial.println(" | ");
  delay(200);
}

إذا كان كل شيء على ما يرام ، يجب أن تشاهد الإخراج أدناه على الشاشة التسلسلية .

PS2-Joystick-Module-Arduino-Sketch-Output-on-serial-window

أنتهت !!!

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *