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:

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.