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:
pin.value(1)/pin.value(0)– nimenomainen muoto.
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.