تعريف
يمكنك من ارسال أوامر الى الجهاز (حاسوب، جهاز ألعاب، طائرة، سيارة، غواصة، كاميرات المراقبة، روبوت...) الذي تريد التحكم به انطلاقا من مقبض يتوسطه. أبسط أنواعه هو ما يملك مقبضا فقط، بينما قد تجد المتطورة منها مدعومة ببعض اﻷزرار الكهربائية لتحكم أسهل وأشمل (مقبض الطائرة مثلا). |
مختلف أشكاله
آلية عمله
|
هذا نموذج بسيط جدا لمقبض التحكم، وهو يتكون من مقاومتين متغيرتين فقط. كل مقاومة تمثل أحد البعدين لمستوى مسطح. بمعنى آخر أن إحدى المقاومتين تمثل محور الأفاصيل x والثانية تمثل محور التماثيل y في مستوى ثنائي الأبعاد.
المقاومة المتغيرة اسم على مسمى، أي أنها تتغير كلما قمنا بتعديلها انطلاقا من مقبضها هي أيضا. وبالتالي فإن تغير قيمتي المقاومتين هو نفسه تغير المحورين x و y . غالبا ما تستعمل قيمتي هذين المقاومتين لقيادة الروبوت حتى يتجه يمينا أو يسار، أماما أو وراءً، ولاسيما الطائرات، فإن الكثير منها مزود بمقابض التحكم. |
|
تجدر الإشارة أنه اعتمادا على هذا المبدأ البسيط يمكنك أنت أيضا أن تصنع مقبض التحكم بنفسك. ويمكنك أيضا أن تضيف إليه بعضا من الأزرار الكهربائية من أجل القيام بمهام أخرى كالإضاءة أو إصدار الأصوات من الروبوت مثلا.
سنقوم اليوم ببرمجة هذا النموذج البسيط حتى تفهم مبدأ برمجة هذا النوع من أدوات التحكم. وإذا حصلت على أداة تحكم تضم العديد من الأزرار الكهربائية فأرنا براعتك في برمجتها بعدما فهمت المبدأ ثم شاركنا بما أنجزت في هذا الموقع حتى تعم الفائدة. |
تركيب
![]() |
لكل مقاومة متغيرة ثلاث مرابط. يجب أيصالهما بمرابط البطاقة Arduino كما هو مبين في الدارة الكهربائية أعلاه. يجب أن تزودهما بالطاقة الكهربائية عن طريق ايصال مربطيهما بالمربطين5V و GND كما هو مبين في الدارة الكهربائية. أما مربطي الإشارة لكل من المقاومتين فصلهما بالمربطين التناظريين 0 و 1 للبطاقة (Analog 0, Analog 1) |
برمجيا
توجد مشكلة خفيفة يجب فهمها عند برمجة المقاومة المتغيرة. ألا وهي أننا نستقبل قيمة المقاومة المتغيرة بـ 10bits (بمعنى آخر أن القيم الصادرة من المقاومة تتغير من 0 إلى 1024) في حين أننا يجب أن نتعامل فقط مع 8bit. للتغلب على هذا المشكل الطفيف تم القيام بإضافة دالة رياضية إلى الشيفرة حتى تقوم بتحويل قيمة المقاومة المتغيرة إلى قيمة بين 0 أو 9. |
/* شيفرة لقراءة مقبض التحكم * ------------ * تعمل هذه الشيفرة على قراءة القيم الصادرة من * المربطين التناظريين للمقاومتين المتغيرتين * واللتان يمثلان مقبض التحكم * * http://www.0j0.org | http://arduino.berlios.de * copyleft 2005 DojoDave for DojoCorp */
int ledPin = 13; // مربط الصمام الثنائي int joyPin1 = 0; // مربط أحد المقاومتين موصول بالمربط التناظري 0 للبطاقة int joyPin2 = 1; // أما المربط الآخر فهو موصول بالمربط التناظري 1 للبطاقة int value1 = 0; // للقراءة من المربط التناظري 0 int value2 = 0; // للقراءة من المربط التناظري 1
void setup() { pinMode(ledPin, OUTPUT); beginSerial(9600); } //........................................................................................................................ int treatValue(int value) //تحويل { return (value *9 /1024)+48; } //........................................................................................................................ void loop() { value1 = analogRead(joyPin1); // نقرأ القيمة الأولى من المقاومة المتغيرة delay(100); // يجب أن ننتظر لبعض الوقت بين قراءة القيمة الأولى والثانية، وإلا فربما نحصل على نفس القيمة مرتين value2 = analogRead(joyPin2); // نقرأ القيمة الثانية من المقاومة المتغيرة
digitalWrite(ledPin, HIGH); delay(value1); digitalWrite(ledPin, LOW); delay(value2);
serialWrite('J'); //إظهار القيم على الشاشة serialWrite(treatValue(value1)); serialWrite(treatValue(value2)); serialWrite(10); // \r الرجوع إلى بداية السطر serialWrite(13); // \n الرجوع إلى السطر } |
تأليف
ترجمة وتحرير: محمد السهلي
{jumi [*3]}
المراجع
http://myweb.wit.edu/johnsont/Classes/462/Arduino%20Tutorials.pdf
http://en.wikipedia.org/wiki/Joystick
http://www.domremy.catholic.edu.au/Curriculum/IST/year_10/B/Mouse...