3.7. GPIO kimenet

A machine.LED elrejti a kamera beépített jelzőfényeinek bekötését. Bármilyen külső hardver meghajtása a machine.Pin kimeneti módú használatával kezdődik – ez a nyers periféria minden más GPIO interakció alatt.

3.7.1. Egy láb meghajtása

Hozz létre egy lábat a Pin.OUT értékkel, hogy kimenetté tedd, majd állítsd be az értékét:

from machine import Pin

led = Pin("P0", Pin.OUT)
led.on()           # drive high (about 3.3 V)
led.off()          # drive low (about 0 V)

Az állapot beállításának három egyenértékű módja, mind a machine.Pin osztályon:

A value() argumentum nélküli hívása visszaolvassa a láb aktuális állapotát – ami bemeneteknél és kimeneteknél egyaránt működik.

3.7.2. Egy külső LED meghajtása

Egy 10 mA-es vörös LED-hez 3,3 V-ról körülbelül 130 Ω soros ellenállásra van szükség (az elektronikai oldal levezeti a számítást). Kösd a P0 lábat ezen az ellenálláson keresztül a LED anódjára, a LED katódját pedig a földre. Egy villogtató:

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)

A LED másodpercenként egyszer kapcsol be és ki. A LED-en átfolyó áramot (és így a fényerejét) az ellenállás állítja be; a be/ki kitöltés csak azt szabályozza, milyen gyakran világít, nem azt, hogy mennyire fényesnek tűnik, amíg ég.

Javaslat

A konstruktor kulcsszó argumentumként elfogad egy kezdőértéket: a Pin("P0", Pin.OUT, value=0) a lábat alacsony szinten induló kimenetként konfigurálja. Enélkül a láb az első value() hívás előtt rövid időre azt az alapértelmezett állapotot veszi fel, ami éppen volt.

3.7.3. Nyitott nyelős (open-drain) mód

Az alapértelmezett Pin.OUT mód push-pull jellegű: a láb aktívan hajtja mind a magas (a tápra), mind az alacsony (a földre) szintet. Néha ez nem megfelelő. Nyúlj a Pin.OPEN_DRAIN módhoz, ha a lábnak vagy alacsonyra kell húznia a vonalat, vagy el kell engednie (lebegtetni):

pin = Pin("P0", Pin.OPEN_DRAIN)
pin.off()       # actively drive low
pin.on()        # release; an external pull-up brings the line high

A fő felhasználása egy vezeték megosztása. Több nyitott nyelős kimenet osztozhat egyetlen vonalon, mert egyik sem hajtja aktívan magasra. Bármelyikük alacsonyra húzhatja a vonalat; ha mindegyik elengedi, egy külső felhúzó ellenállás húzza magasra a vonalat. Ez a megosztott kommunikációs buszok mögötti bekötési konvenció.

Figyelem

A nyitott nyelős mód nem általános megoldás magasabb feszültségű eszköz meghajtására. Egy nyitott nyelős láb 5 V-os felhúzóhoz csatlakoztatása biztonságos egy 5 V-tűrő lábon, de egy nem tűrő lábat tönkretesz a chipen belüli védődiódáin keresztül, amint a láb elenged, és a vonal 5 V-ig lebeg felfelé. A feszültségszintek közötti jelzéshez megfelelő szintillesztő szükséges; az áramkört lásd: Szintillesztés.