06 · TK-101 · المشاريع
لوحة تحكم بمحرك سيرفو بلغة Python و Tkinter بمقياس دائري
واجهة سطح مكتب بـ Tkinter فيها شريط تمرير من 0 إلى 180 درجة وأزرار للزوايا 0 و 90 و 180 ومقياس دائري بإبرة، ترسل الزاوية إلى Arduino عبر pySerial، والبرنامج على اللوحة يرفض أي زاوية خارج المدى.

التقنيات
PythonTkinterpySerialArduinoServo
المشكلة
بعد بناء واجهات التحكم بـ VB.NET، الخطوة التالية هي واجهة بلغة أخرى أوضح بصرياً: المشغّل يريد أن يرى الزاوية الحالية بنظرة، لا أن يقرأ رقماً فقط.
الحل وطريقة العمل
- الواجهة: نافذة Tkinter بعنوان Servo Control Interface، فيها شريط
Scaleمن 0 إلى 180، وأزرار للزوايا 0° و 90° و 180°، وتسمية تعرض الزاوية الحالية. - المقياس الدائري: صنف
CircularGaugeمبني علىCanvasيرسم قوساً بنصف دائرة وإبرة، ويحوّل القيمة إلى زاوية رسم ثم إلى إحداثيات بـcosوsin. - الإرسال: الزاوية تُرسل نصاً منتهياً بسطر جديد عبر
pySerialبسرعة 9600، ولا تُرسل إذا كانت خارج 0 إلى 180. - اللوحة: برنامج Arduino يقرأ الرقم بـ
Serial.parseIntويتحقق من المدى مرة ثانية قبلmyServo.write، ويرد برسالة خطأ إن كانت الزاوية خارجه.
التنفيذ والتحديات
التحقق من المدى في الطرفين يمنع أمراً خاطئاً من تحريك السيرفو إلى نهايته الميكانيكية، حتى لو أُرسل من برنامج آخر. ويُغلق المنفذ التسلسلي عند إغلاق النافذة حتى لا يبقى محجوزاً. هذا تمرين شخصي ضمن الدراسة على لوحة Arduino ومحرك سيرفو صغير.
المهارات المكتسبة
بناء واجهات Tkinter وعناصر رسم مخصصة على Canvas، الاتصال التسلسلي بـ pySerial، التحكم بالسيرفو، والتحقق من الحدود في الطرفين.