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:

קריאה ל-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) עבור המעגל.