class Pin – I/O-nastojen ohjaus¶
Pin-oliota käytetään I/O-nastojen (tunnetaan myös nimellä GPIO - general-purpose input/output) ohjaamiseen. Pin-oliot liittyvät tavallisesti fyysiseen nastaan, joka voi ohjata lähtöjännitettä ja lukea tulojännitteitä. Pin-luokassa on metodit nastan tilan (IN, OUT jne.) asettamiseen sekä metodit digitaalisen logiikkatason hakemiseen ja asettamiseen. Nastan analogiseen ohjaukseen katso ADC -luokka.
Pin-olio muodostetaan käyttämällä tunnistetta, joka määrittää yksiselitteisesti tietyn I/O-nastan. Tunnisteen sallitut muodot ja fyysinen nasta, johon tunniste viittaa, ovat porttikohtaisia. Tunniste voi olla kokonaisluku, merkkijono tai monikko, jossa on portti ja nastan numero.
Käyttömalli:
from machine import Pin
# create an output pin on header pin P0
p0 = Pin("P0", Pin.OUT)
# set the value low then high
p0.value(0)
p0.value(1)
# create an input pin on header pin P2, with a pull-up resistor
p2 = Pin("P2", Pin.IN, Pin.PULL_UP)
# read and print the pin value
print(p2.value())
# reconfigure P0 in input mode with a pull-down resistor
p0.init(p0.IN, p0.PULL_DOWN)
# install an IRQ callback
p0.irq(lambda p: print(p))
Muodostimet¶
- class machine.Pin(id: int | str, mode: int = -1, pull: int = -1, *, value: Any = None, drive: int = 0, alt: int = -1)¶
Käytä annettuun
id-tunnisteeseen liittyvää nastaoheislaitetta (GPIO-nasta). Jos muodostimelle annetaan lisäargumentteja, niitä käytetään nastan alustamiseen. Kaikki asetukset, joita ei määritetä, säilyvät aiemmassa tilassaan.Argumentit ovat:
idon pakollinen ja voi olla mielivaltainen olio. Mahdollisia arvotyyppejä ovat: int (sisäinen Pin-tunniste), str (Pin-nimi) ja tuple ([portti, nasta] -pari).modemäärittää nastan tilan, joka voi olla jokin seuraavista:Pin.IN- Nasta on määritetty tuloksi. Lähtönä tarkasteltuna nasta on suuri-impedanssitilassa.Pin.OUT- Nasta on määritetty (normaaliksi) lähdöksi.Pin.OPEN_DRAIN- Nasta on määritetty avo-drain-lähdöksi. Avo-drain-lähtö toimii seuraavasti: jos lähtöarvoksi asetetaan 0, nasta on aktiivinen matalalla tasolla; jos lähtöarvo on 1, nasta on suuri-impedanssitilassa. Kaikki portit eivät toteuta tätä tilaa, tai jotkin saattavat toteuttaa sen vain tietyissä nastoissa.Pin.ALT- Nasta on määritetty suorittamaan vaihtoehtoista toimintoa, joka on porttikohtainen. Näin määritetylle nastalle mitkään muut Pin-metodit (paitsiPin.init()) eivät ole sovellettavissa (niiden kutsuminen johtaa määrittelemättömään tai laitteistokohtaiseen tulokseen). Kaikki portit eivät toteuta tätä tilaa.Pin.ALT_OPEN_DRAIN- Sama kuinPin.ALT, mutta nasta on määritetty avo-drain-tyyppiseksi. Kaikki portit eivät toteuta tätä tilaa.Pin.ANALOG- Nasta on määritetty analogiatuloksi, katsoADC-luokka.
pullmäärittää, onko nastaan kytketty (heikko) ylös- tai alasvetovastus, ja voi olla jokin seuraavista:None- Ei ylös- tai alasvetovastusta.Pin.PULL_UP- Ylösvetovastus käytössä.Pin.PULL_DOWN- Alasvetovastus käytössä.
valueon voimassa vain Pin.OUT- ja Pin.OPEN_DRAIN-tiloissa ja määrittää annettaessa nastan alkuperäisen lähtöarvon, muutoin nastaoheislaitteen tila säilyy ennallaan.drivemäärittää nastan lähtötehon ja voi olla jokin seuraavista:Pin.DRIVE_0,Pin.DRIVE_1jne., kasvavan ajovoiman mukaan. Todelliset virranajokyvyt ovat porttikohtaisia. Kaikki portit eivät toteuta tätä argumenttia.altmäärittää nastan vaihtoehtoisen toiminnon ja sen sallimat arvot ovat porttikohtaisia. Tämä argumentti on voimassa vainPin.ALT- jaPin.ALT_OPEN_DRAIN-tiloissa. Sitä voidaan käyttää, kun nasta tukee useampaa kuin yhtä vaihtoehtoista toimintoa. Jos vain yhtä nastan vaihtoehtoista toimintoa tuetaan, tätä argumenttia ei tarvita. Kaikki portit eivät toteuta tätä argumenttia.
Kuten edellä määritettiin, Pin-luokka mahdollistaa vaihtoehtoisen toiminnon asettamisen tietylle nastalle, mutta se ei määritä mitään muita operaatioita tällaiselle nastalle. Vaihtoehtoistoimintotilassa määritettyjä nastoja ei yleensä käytetä GPIO:na, vaan niitä ohjaavat muut laitteisto-oheislaitteet. Ainoa tällaiselle nastalle tuettu operaatio on uudelleenalustus kutsumalla muodostinta tai
Pin.init()-metodia. Jos vaihtoehtoistoimintotilassa määritetty nasta alustetaan uudelleen tilaanPin.IN,Pin.OUTtaiPin.OPEN_DRAIN, vaihtoehtoinen toiminto poistetaan nastalta.Metodit¶
- init(mode: int = -1, pull: int = -1, *, value: Any = None, drive: int = 0, alt: int = -1) None¶
Alusta nasta uudelleen annetuilla parametreilla. Vain määritetyt argumentit asetetaan. Loput nastaoheislaitteen tilasta säilyy ennallaan. Katso muodostimen dokumentaatiosta tarkemmat tiedot argumenteista.
Palauttaa
None.
- value(x: Any = None, /) int | None¶
Tämä metodi mahdollistaa nastan arvon asettamisen ja hakemisen sen mukaan, annetaanko argumentti
xvai ei.Jos argumentti jätetään pois, tämä metodi hakee nastan digitaalisen logiikkatason ja palauttaa 0 tai 1 vastaten matalaa ja korkeaa jännitesignaalia. Tämän metodin käyttäytyminen riippuu nastan tilasta:
Pin.IN- Metodi palauttaa nastassa parhaillaan olevan todellisen tuloarvon.Pin.OUT- Metodin käyttäytyminen ja paluuarvo ovat määrittelemättömiä.Pin.OPEN_DRAIN- Jos nasta on tilassa ’0’, metodin käyttäytyminen ja paluuarvo ovat määrittelemättömiä. Muutoin, jos nasta on tilassa ’1’, metodi palauttaa nastassa parhaillaan olevan todellisen tuloarvon.
Jos argumentti annetaan, tämä metodi asettaa nastan digitaalisen logiikkatason. Argumentti
xvoi olla mikä tahansa, joka muuntuu totuusarvoksi. Jos se muuntuu arvoksiTrue, nasta asetetaan tilaan ’1’, muutoin se asetetaan tilaan ’0’. Tämän metodin käyttäytyminen riippuu nastan tilasta:Pin.IN- Arvo tallennetaan nastan lähtöpuskuriin. Nastan tila ei muutu, se pysyy suuri-impedanssitilassa. Tallennettu arvo aktivoituu nastassa heti, kun se vaihdetaanPin.OUT- taiPin.OPEN_DRAIN-tilaan.Pin.OUT- Lähtöpuskuri asetetaan annettuun arvoon välittömästi.Pin.OPEN_DRAIN- Jos arvo on ’0’, nasta asetetaan matalaan jännitetilaan. Muutoin nasta asetetaan suuri-impedanssitilaan.
Arvoa asetettaessa tämä metodi palauttaa
None.
- __call__(x: Any = None, /) int | None¶
Pin-oliot ovat kutsuttavia. Kutsumetodi tarjoaa (nopean) pikatien nastan arvon asettamiseen ja hakemiseen. Se vastaa kutsua Pin.value([x]). Katso lisätietoja kohdasta
Pin.value().
- irq(handler: Callable[[Pin], None] | None = None, trigger: int = Pin.IRQ_FALLING | Pin.IRQ_RISING, *, priority: int = 1, wake: int | None = None, hard: bool = False) None¶
Määritä keskeytyskäsittelijä, joka kutsutaan, kun nastan laukaisulähde on aktiivinen. Jos nastan tila on
Pin.IN, laukaisulähde on nastan ulkoinen arvo. Jos nastan tila onPin.OUT, laukaisulähde on nastan lähtöpuskuri. Muutoin, jos nastan tila onPin.OPEN_DRAIN, laukaisulähde on lähtöpuskuri tilassa ’0’ ja ulkoinen nastan arvo tilassa ’1’.Argumentit ovat:
handleron valinnainen funktio, joka kutsutaan keskeytyksen laukaistessa. Käsittelijän on otettava täsmälleen yksi argumentti, joka onPin-instanssi.triggermäärittää tapahtuman, joka voi tuottaa keskeytyksen. Mahdolliset arvot ovat:Pin.IRQ_FALLINGkeskeytys laskevalla reunalla.Pin.IRQ_RISINGkeskeytys nousevalla reunalla.
Nämä arvot voidaan yhdistää OR-operaatiolla, jolloin laukaisu tapahtuu useista tapahtumista.
priorityasettaa keskeytyksen prioriteettitason. Sen sallimat arvot ovat porttikohtaisia, mutta suuremmat arvot vastaavat aina korkeampia prioriteetteja.wakevalitsee virrankäyttötilan, jossa tämä keskeytys voi herättää järjestelmän. Ei tuettu missään OpenMV-portissa; jätä oletusarvoonsa.hardjos tosi, käytetään laitteistokeskeytystä. Tämä vähentää viivettä nastan muutoksen ja käsittelijän kutsumisen välillä. Laitteistokeskeytyskäsittelijät eivät saa varata muistia; katso Keskeytyskäsittelijöiden kirjoittaminen. Kaikki portit eivät tue tätä argumenttia.
Tämä metodi palauttaa takaisinkutsuolion.
Seuraavat metodit ovat laajennuksia Pin-ydinrajapintaan. Ne on ryhmitelty porttisaatavuuden mukaan.
Kaikissa OpenMV-porteissa saatavilla olevat metodit¶
vain mimxrt + alif¶
vain STM32¶
Vakiot¶
Alla olevia vakioita käytetään
Pin-olioiden määrittämiseen muodostimen,init()-metodin jairq()-metodin kautta. Ne on ryhmitelty porttisaatavuuden mukaan.Kaikissa OpenMV-porteissa saatavilla olevat vakiot¶
vain STM32¶
- ALT: int¶
Nastan tila: vaihtoehtoinen toiminto (push-pull). Käytä
alt=-argumentin kanssa valitaksesi, mihin oheislaitetoimintoon nasta ohjataan. Alias arvolleAF_PP.
- ANALOG: int¶
Nastan tila: analogiatulo – digitaalinen tulo-/lähtöpuskuri kytketään irti, jotta nastaa voidaan ohjata
ADC-kanavalla.
- AF_OD: int¶
Vaihtoehtoistoiminto-avo-drain-tila (sama arvo kuin
ALT_OPEN_DRAIN).
- OUT_OD: int¶
Avo-drain-lähtötila (sama arvo kuin
OPEN_DRAIN).
vain mimxrt¶
- PULL_HOLD: int¶
Ota käyttöön padin väyläpidätin-/pitotoiminto – nasta lukitsee nykyisen logiikkatasonsa kelluttamisen sijaan.