3.7. GPIO-utgång¶
machine.LED abstraherar bort kopplingen av kamerans inbyggda indikatorer. För att driva en extern hårdvarudel börjar man med machine.Pin i utgångsläge – den råa kringutrustningen under varje annan GPIO-interaktion.
3.7.1. Driva ett stift¶
Skapa ett stift med Pin.OUT för att göra det till en utgång och ställ sedan in dess värde:
from machine import Pin
led = Pin("P0", Pin.OUT)
led.on() # drive high (about 3.3 V)
led.off() # drive low (about 0 V)
Tre likvärdiga sätt att ställa in tillståndet, alla på machine.Pin:
pin.value(1)/pin.value(0)– den explicita formen.
Att anropa value() utan argument läser tillbaka stiftets aktuella tillstånd – vilket fungerar för både ingångar och utgångar.
3.7.2. Driva en extern LED¶
En röd LED vid 10 mA från 3,3 V behöver cirka 130 Ω i serie (elektroniksidan räknar ut matematiken). Koppla stiftet P0 genom det motståndet till LED:ns anod och LED:ns katod till jord. En blinkare:
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:n växlar på och av en gång per sekund. Strömmen genom LED:n (och därmed dess ljusstyrka) bestäms av motståndet; på/av-cykeln styr endast hur ofta den lyser, inte hur ljust den ser ut medan den är på.
Tips
Konstruktorn accepterar ett initialt värde som ett nyckelordsargument: Pin("P0", Pin.OUT, value=0) konfigurerar stiftet som en utgång som börjar lågt. Utan det antar stiftet kortvarigt vilket standardtillstånd det än hade före det första value()-anropet.
3.7.3. Open-drain-läge¶
Standardläget Pin.OUT är push-pull: stiftet driver aktivt både högt (till matningen) och lågt (till jord). Ibland är det fel. Ta till Pin.OPEN_DRAIN när stiftet antingen ska dra linjen lågt eller släppa den (flyta):
pin = Pin("P0", Pin.OPEN_DRAIN)
pin.off() # actively drive low
pin.on() # release; an external pull-up brings the line high
Huvudanvändningen är att dela en ledning. Flera open-drain-utgångar kan dela en enda linje eftersom ingen av dem aktivt driver den högt. Vilken som helst av dem kan dra linjen lågt; om alla släpper drar ett externt pull-up-motstånd linjen högt. Detta är kopplingskonventionen bakom delade kommunikationsbussar.
Varning
Open-drain är inte en allmän lösning för att driva en enhet med högre spänning. Att ansluta ett open-drain-stift till en pull-up vid 5 V är säkert på ett 5 V-tolerant stift men skadar ett icke-tolerant via dess inbyggda skyddsdioder så snart stiftet släpper och linjen flyter upp till 5 V. Korsspänningssignalering kräver en riktig nivåomvandlare; se Nivåomvandling för kretsen.