📚 التعامل مع PyFirmata
المفاهيم الأساسية
تضمين عرض النبضة (Pulse Width Modulation - PWM): عملية تعديل تستخدم لإخراج إشارة رقمي لإصدار إشارة تناظرية بقوة متغيرة.
خريطة المفاهيم
```markmap
تطبيقات على المتحكمات الدقيقة
إنشاء تطبيق سحابي لإنترنت الأشياء
أهداف التعلم
#### • استخدام البايثون وبروتوكول PyFirmata لبرمجة الأردوينو.
برمجة الأردوينو بالبايثون (pyfirmata)
الخطوات البرمجية الأساسية
#### 1. تثبيت حزمة pyfirmata
##### • الأمر في Terminal: pip install pyfirmata
#### 2. استدعاء المكتبة في الكود
##### • import pyfirmata
#### 3. تحديد منفذ الاتصال
##### • communication_port = "COM4" (يختلف حسب الجهاز)
#### 4. إجراء الاتصال والوصول للأطراف
##### • board = pyfirmata.Arduino(communication_port)
##### • it = pyfirmata.util.Iterator(board)
##### • it.start()
#### 5. استخدام حلقة لا نهائية
##### • while True:
##### • # كتابة الأوامر هنا
ملاحظة تقنية
#### • يشغل البرنامج على الحاسوب، وليس على الأردوينو، مما يتيح الوصول إلى وظائف قد لا تتوفر في جهاز التحكم الدقيق.
الوظيفة الأساسية: board.get_pin()
#### • وظيفتها: قراءة وكتابة القيم للأطراف التناظرية والرقمية.
#### • معاملاتها: ثلاثة أحرف تفصل بينها نقطتان رأسيتان (a:d:5)
##### • المعامل الأول: نوع الطرف
###### • 'a': طرف تناظري (analog)
###### • 'd': طرف رقمي (digital)
##### • المعامل الثاني: رقم الطرف
###### • الأطراف الرقمية: من 0 إلى 12
###### • الأطراف التناظرية: من A0 إلى A5
##### • المعامل الثالث: طريقة التعامل
###### • للأطراف الرقمية:
####### • 'i': input (مدخلات)
####### • 'o': output (مخرجات)
###### • للأطراف التناظرية:
####### • 'i': input (مدخلات)
####### • 'p': Pulse Width Modulation (تضمين عرض النبضة)
تضمين عرض النبضة (PWM)
#### • تعريف: تعديل إشارة رقمية لمحاكاة إشارة تناظرية متغيرة القوة.
#### • دورة العمل (Duty Cycle): النسبة المئوية للزمن الذي تكون فيه الإشارة عالية (5v) خلال فترة زمنية واحدة.
##### • analogWrite(0): 0% دورة عمل (إشارة منخفضة دائمًا)
##### • analogWrite(64): 25% دورة عمل
##### • analogWrite(127): 50% دورة عمل
##### • analogWrite(191): 75% دورة عمل
##### • analogWrite(255): 100% دورة عمل (إشارة عالية دائمًا)
```
نقاط مهمة
- الوظيفة الرئيسية للتعامل مع أطراف الأردوينو في `PyFirmata` هي `board.get_pin()`.
- معاملات الدالة `get_pin()` تحدد نوع الطرف ورقمه ووظيفته (إدخال/إخراج/PWM).
- تضمين عرض النبضة (PWM) هو تقنية لتحويل الإشارة الرقمية إلى إشارة تناظرية ظاهرية عن طريق تغيير نسبة الوقت الذي تكون فيه الإشارة عالية (دورة العمل).