من المفيد بل من الضروري استخدام عصا التوجيه joystick في بعض التطبيقات، وبما أنّ معظمَها يُعطي إشارة تشابهيّة فيجب تحويل الإشارة إلى رقميّة عن طريق شريحة MCP3008.
تمتلِك عصا التوجيه التشابهيّة محورَين يسمحان لكميّة معيّنة من الجهد بالمرور عبر مقاومتَين متغيِّرتَين potentiometers، ونحتاج إلى رقاقة MCP3008 لقراءة الموقع رقميّاً على الراسبيري باي.
مخطط هذه الوحدة كالتالي:
يتوضَّع على الجهة اليساريّة 8 مداخل تشابهيّة نحتاج ثلاثة منها، وتتوضّع على الجهة اليمينيّة المخارجُ الرقميّة حيث تتمّ عملية النقل خلال DIN و DOUT.
عنصر MCP3008 محوَّل من تشابهيّ إلى رقميّ بطول عشر بتات،وهذا يعني أنّه يصل إلى حد أعلى هو 2^10،
وكمثال يمكنه أن يعطي 1024 تشكيلة من البتات (القيم من 0 إلى 1023)، وبالتالي ومع دخْل 3.3V تكون الخطوة 3.2mV تقريباً.
الملحقات:
- عصا توجيه (تشابهيّة)
- دارة متكاملة MCP3008 (محوّل من تشابهيّ إلى رقميّ)
- لوحة تجارب
- سلك توصيل ذكر-أنثى
- مقاومة 10kOhm
التوصيل:
على الرغم من أنّ جهد دخْل عصا التوجيه هو 5V إلّا أنّها تعمل دون مشاكلَ على جهد 3.3V المناسب عند استخدام MCP3008، يعبِّر المصطلح SW عن الزّرّ الذي يتمّ تفعيلُه عند الضغط على عصا التوجيه، يجب وصل مقاومة 10kOhm مع التغذية ليكونَ هذا الزّرّ إمّا 0 أو 1023 (مضغوط أو غير مضغوط)، دون هذه المقاومة يتمّ إخراج أرقام عشوائيّة لا يمكن التعامل معها.
الوصلات مع الراسبيري باي
راسبيري | MCP3008 |
---|---|
(Pin 1 (3.3V | (Pin 16 (VDD |
(Pin 1 (3.3V | (Pin 15 (VREF |
(Pin 6 (GND | (Pin 14 (AGND |
(Pin 23 (SCLK | (Pin 13 (CLK |
(Pin 21 (MISO | (Pin 12 (DOUT |
(Pin 19 (MOSI | (Pin 11 (DIN |
(Pin 24 (CE0 | (Pin 10 (CS/SHDN |
(Pin 6 (GND | (Pin 9 (DGND |
الوصلات مع عصا التوجيه
RPi / MCP3008 | Joystick |
---|---|
(Raspberry Pin 6 (GND | GND |
(Raspberry Pin 1 (3.3V | +5V |
(Pin 1 (CH0 | SW |
(Pin 2 (CH1 | VRx |
(Pin 3 (CH2 | VRy |
التجربة:
بداية: قُم بتحميل مكتبة SpiDev من الرابط هنا
كما ذكرنا سابقاً يعيد MCP3008 قيمة بين 0 و 1023، إذا كانَتْ عصا التوجيه في وضع السكون (المنتصف) سيعيد قيمة 512. وسيعيد قيمة 0 في نهاية المحور وقيمة 1023 في النهاية الأخرى.
يمكنك تحميل ملفّ التجريب من الموقع هنا أو إنشاؤه بنفسك
الكود البرمجي 1:للتحميل اضغط هنا
ومن التشغيل عن طريق
sudo python joystick_test.py
عند تحريك عصا التوجيه ستجد أنّ 1024 خطوة كثيرة جداً وخاصة لعصا توجيه صغيرة، لذلك يمكنك الاختبار على نطاقات بدلاً من قيم وحيدة (عدا القيمتَين 0 و 1023).