3.7. خرج GPIO¶
يجرِّد الصنف machine.LED توصيلات مؤشرات الكاميرا المدمجة. أما تشغيل أي قطعة عتاد خارجية فيبدأ بالصنف machine.Pin في وضع الخرج -- وهو الطرفية الخام الكامنة تحت كل تفاعل آخر مع GPIO.
3.7.1. تشغيل دبوس¶
أنشئ دبوسًا باستخدام Pin.OUT لجعله خرجًا، ثم اضبط قيمته:
from machine import Pin
led = Pin("P0", Pin.OUT)
led.on() # drive high (about 3.3 V)
led.off() # drive low (about 0 V)
ثلاث طرق متكافئة لضبط الحالة، جميعها على machine.Pin:
pin.value(1)/pin.value(0)-- الصيغة الصريحة.
إن استدعاء value() دون وسائط يقرأ الحالة الراهنة للدبوس -- وهو ما يعمل مع المداخل والمخارج على حد سواء.
3.7.2. تشغيل مصباح LED خارجي¶
يحتاج مصباح LED أحمر بتيار 10 mA من 3.3 V إلى نحو 130 Ω على التوالي (تشرح صفحة الإلكترونيات تفاصيل الحساب). وصِّل الدبوس P0 عبر تلك المقاومة بمصعد LED، ومهبط LED بالأرضي. وإليك مصباحًا وامضًا:
import time
from machine import Pin
led = Pin("P0", Pin.OUT)
while True:
led.on()
time.sleep_ms(500)
led.off()
time.sleep_ms(500)
يتبدل LED بين التشغيل والإطفاء مرة واحدة في الثانية. ويُضبط التيار المار عبر LED (ومن ثم سطوعه) بواسطة المقاومة؛ أما دورة التشغيل/الإطفاء فلا تتحكم إلا في عدد مرات إضاءته، لا في مدى سطوعه أثناء التشغيل.
نصيحة
يقبل المُنشئ قيمة ابتدائية كوسيط بالكلمة المفتاحية: فالاستدعاء Pin("P0", Pin.OUT, value=0) يهيِّئ الدبوس كخرج يبدأ في الحالة المنخفضة. وبدونها يتخذ الدبوس لوهلة أيًّا كانت حالته الافتراضية قبل أول استدعاء لـ value().
3.7.3. وضع المصرف المفتوح (Open-drain)¶
الوضع الافتراضي Pin.OUT هو وضع الدفع والسحب (push-pull): إذ يدفع الدبوس فعليًا إلى الحالة المرتفعة (نحو التغذية) والمنخفضة (نحو الأرضي) معًا. لكن ذلك يكون خاطئًا أحيانًا. فاستعمل Pin.OPEN_DRAIN عندما يُراد للدبوس إما سحب الخط إلى الحالة المنخفضة أو تحريره (تركه عائمًا):
pin = Pin("P0", Pin.OPEN_DRAIN)
pin.off() # actively drive low
pin.on() # release; an external pull-up brings the line high
الاستعمال الأساسي هو مشاركة سلك واحد. فيمكن لعدة مخارج بمصرف مفتوح أن تتشارك خطًا واحدًا لأن أيًّا منها لا يدفعه فعليًا إلى الحالة المرتفعة. ويمكن لأيٍّ منها سحب الخط إلى الحالة المنخفضة؛ وإذا حررتها جميعًا، رفعت مقاومة سحب علوي خارجية الخط إلى الحالة المرتفعة. وهذه هي اصطلاحات التوصيل الكامنة خلف نواقل الاتصال المشتركة.
تحذير
المصرف المفتوح ليس حلًّا عامًا لتشغيل جهاز ذي جهد أعلى. فتوصيل دبوس بمصرف مفتوح بمقاومة سحب علوي عند 5 V آمن على دبوس متحمل لجهد 5 V، لكنه يتلف دبوسًا غير متحمل عبر ثنائيات الحماية المدمجة في الرقاقة بمجرد أن يحرِّر الدبوس الخط ويرتفع عائمًا إلى 5 V. وتتطلب الإشارات عبر الجهود المختلفة مبدِّل مستوى مناسبًا؛ راجع إزاحة المستوى للاطلاع على الدائرة.