📚 التفاعل مع الأطراف الرقمية والتناظرية
المفاهيم الأساسية
التفاعل مع الأطراف الرقمية: قراءة وكتابة قيم ثنائية (0 أو 1) من وإلى أطراف محددة.
التفاعل مع الأطراف التناظرية: قراءة وكتابة قيم متغيرة (مثل 0.75) من وإلى أطراف محددة.
خريطة المفاهيم
```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% دورة عمل (إشارة عالية دائمًا)
التفاعل مع الأطراف الرقمية
#### • قراءة قيمة من طرف رقمي (مثال: الطرف 10)
##### • digital_pin = board.get_pin("d:10:i")
##### • pin_value = digital_pin.read()
#### • كتابة قيمة إلى طرف رقمي (مثال: الطرف 10)
##### • digital_pin = board.get_pin("d:10:o")
##### • digital_pin.write(1) # قيمة HIGH
##### • digital_pin.write(0) # قيمة LOW
التفاعل مع الأطراف التناظرية
#### • قراءة قيمة من طرف تناظري (مثال: الطرف 4)
##### • analog_pin = board.get_pin("a:4:i")
##### • pin_value = analog_pin.read()
#### • كتابة قيمة إلى طرف تناظري (مثال: الطرف 4)
##### • analog_pin = board.get_pin("a:4:p")
##### • analog_pin.write(0.75)
ملاحظة عامة
#### • يتطلب كل مستشعر أو مشغل قيماً مختلفة ليعمل بصورة صحيحة.
```
نقاط مهمة
- الفرق الأساسي: الأطراف الرقمية تتعامل مع قيم ثنائية (0 أو 1)، بينما الأطراف التناظرية تتعامل مع قيم متغيرة (مثل 0.75).
- بناء الجملة: استخدام `board.get_pin()` مع معاملات محددة (`d:10:i` للقراءة الرقمية، `a:4:p` للكتابة التناظرية).
- القيم: القيمة `1` تعني HIGH للطرف الرقمي، والقيمة `0.75` مثال على قيمة للطرف التناظري.
- تطبيق عملي: القيم المكتوبة تختلف حسب نوع المستشعر أو المشغل المستخدم.