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:
pin.value(1)/pin.value(0)– az explicit alak.
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.