3.7. GPIO-lähtö

machine.LED abstrahoi pois kameran sisäänrakennettujen merkkivalojen johdotuksen. Minkä tahansa ulkoisen laitteiston ohjaaminen alkaa machine.Pin-luokasta lähtötilassa – raaka oheislaite jokaisen muun GPIO-vuorovaikutuksen alla.

3.7.1. Nastan ohjaaminen

Luo nasta arvolla Pin.OUT tehdäksesi siitä lähdön, ja aseta sitten sen arvo:

from machine import Pin

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

Kolme samanarvoista tapaa asettaa tila, kaikki machine.Pin-luokassa:

Kun value() kutsutaan ilman argumentteja, se lukee takaisin nastan nykyisen tilan – mikä toimii sekä tuloille että lähdöille.

3.7.2. Ulkoisen LEDin ohjaaminen

Punainen LED 10 mA:lla 3,3 V:stä tarvitsee noin 130 Ω sarjaan (elektroniikkasivu laskee matematiikan). Johdota nasta P0 tuon vastuksen kautta LEDin anodille, LEDin katodi maahan. Vilkutin:

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 vaihtuu päälle ja pois kerran sekunnissa. LEDin läpi kulkevan virran (ja siten sen kirkkauden) asettaa vastus; päälle/pois-pulssisuhde ohjaa vain sitä, kuinka usein se syttyy, ei sitä kuinka kirkkaalta se näyttää ollessaan päällä.

Vihje

Konstruktori hyväksyy alkuarvon avainsana-argumenttina: Pin("P0", Pin.OUT, value=0) määrittää nastan lähdöksi, joka aloittaa alatilassa. Ilman sitä nasta ottaa hetkellisesti minkä tahansa oletustilansa ennen ensimmäistä value()-kutsua.

3.7.3. Avoin nielu -tila

Oletustila Pin.OUT on push-pull: nasta ohjaa aktiivisesti sekä ylätilaa (käyttöjännitteeseen) että alatilaa (maahan). Joskus se on väärin. Käytä tilaa Pin.OPEN_DRAIN, kun nastan tulisi joko vetää linja alas tai vapauttaa se (kelluttaa):

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

Pääkäyttötarkoitus on johdon jakaminen. Useat avoin nielu -lähdöt voivat jakaa yhden linjan, koska yksikään niistä ei aktiivisesti ohjaa sitä ylätilaan. Mikä tahansa niistä voi vetää linjan alas; jos ne kaikki vapauttavat, ulkoinen ylösvetovastus nostaa linjan ylätilaan. Tämä on jaettujen tiedonsiirtoväylien takana oleva johdotuskäytäntö.

Varoitus

Avoin nielu ei ole yleinen ratkaisu korkeamman jännitteen laitteen ohjaamiseen. Avoin nielu -nastan kytkeminen 5 V:n ylösvetovastukseen on turvallista 5 V:tä sietävällä nastalla, mutta vahingoittaa sietämätöntä sen sisäisten suojadiodien kautta heti kun nasta vapautuu ja linja kelluu 5 V:iin. Jännite-erojen yli tapahtuva signalointi vaatii kunnollisen tasonsiirtimen; katso piiri kohdasta Tasonsiirto.