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
השימוש העיקרי הוא שיתוף חוט. מספר יציאות open-drain יכולות לחלוק קו יחיד מכיוון שאף אחת מהן אינה מניעה אותו באופן פעיל למצב גבוה. כל אחת מהן יכולה למשוך את הקו למצב נמוך; אם כולן משחררות, נגד pull-up חיצוני מעלה את הקו למצב גבוה. זוהי מוסכמת החיווט שמאחורי אפיקי תקשורת משותפים.
אזהרה
מצב open-drain אינו פתרון כללי להנעת התקן במתח גבוה יותר. חיבור פין open-drain ל-pull-up ב-5 V בטוח על פין סובל-5 V אך פוגע בפין שאינו סובל זאת דרך דיודות ההגנה שעל השבב ברגע שהפין משחרר והקו צף כלפי מעלה אל 5 V. איתות חוצה-מתחים זקוק לממיר רמות מתאים; ראה התאמת מתח (Level shifting) עבור המעגל.