Web
	Analytics
مقبض التحكم

مقبض التحكم

image001

يلعب مقبض التحكم عدة أدوار كاللعب بالعاب الاليكترونية والتحكم بالروبوتات، سيارات كانت أو طائرات.

نقدم لكم اليوم نموذجا بسيطا لهذا الجهاز بغرض فهم آلية عمله وكذلك برمجته.

 


تعريف

 

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

 


مختلف أشكاله 

 


آلية عمله 

image002

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

 

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

003

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

 

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

 


تركيب 

image003

لكل مقاومة متغيرة ثلاث مرابط. يجب أيصالهما بمرابط البطاقة 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   الرجوع إلى السطر

}


ترجمة وتحرير محمد السهلي 


 المراجع

 

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... 


 

أضف تعليق


كود امني
تحديث


Go to top