class Pin – upravljanje I/O pinovima¶
Objekt pin koristi se za upravljanje I/O pinovima (poznatim i kao GPIO - opći ulaz/izlaz). Objekti pin obično su povezani s fizičkim pinom koji može davati izlazni napon i čitati ulazne napone. Klasa pin ima metode za postavljanje načina rada pina (IN, OUT, itd.) i metode za dohvaćanje i postavljanje digitalne logičke razine. Za analogno upravljanje pinom pogledajte klasu ADC.
Objekt pin konstruira se pomoću identifikatora koji jednoznačno određuje određeni I/O pin. Dopušteni oblici identifikatora i fizički pin na koji se identifikator preslikava ovise o portu. Mogući oblici identifikatora su cijeli broj, niz znakova ili torka s brojem porta i pina.
Model korištenja:
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))
Konstruktori¶
- class machine.Pin(id: int | str, mode: int = -1, pull: int = -1, *, value: Any = None, drive: int = 0, alt: int = -1)¶
Pristupa periferiji pina (GPIO pin) povezanoj s danim
id. Ako su u konstruktoru dani dodatni argumenti, oni se koriste za inicijalizaciju pina. Sve postavke koje nisu navedene ostat će u prethodnom stanju.Argumenti su:
idje obavezan i može biti proizvoljan objekt. Mogući tipovi vrijednosti su: int (interni identifikator pina), str (naziv pina) i tuple (par [port, pin]).modeodređuje način rada pina, koji može biti jedan od:Pin.IN- Pin je konfiguriran za ulaz. Ako se promatra kao izlaz, pin je u stanju visoke impedancije.Pin.OUT- Pin je konfiguriran za (normalan) izlaz.Pin.OPEN_DRAIN- Pin je konfiguriran za izlaz s otvorenim odvodom (open-drain). Open-drain izlaz radi na sljedeći način: ako je izlazna vrijednost postavljena na 0, pin je aktivan na niskoj razini; ako je izlazna vrijednost 1, pin je u stanju visoke impedancije. Ne implementiraju svi portovi ovaj način rada, a neki ga mogu implementirati samo na određenim pinovima.Pin.ALT- Pin je konfiguriran za obavljanje alternativne funkcije, koja ovisi o portu. Za pin konfiguriran na takav način sve druge metode klase Pin (osimPin.init()) nisu primjenjive (njihovo pozivanje dovest će do nedefiniranog ili hardverski specifičnog rezultata). Ne implementiraju svi portovi ovaj način rada.Pin.ALT_OPEN_DRAIN- Isto kaoPin.ALT, ali je pin konfiguriran kao open-drain. Ne implementiraju svi portovi ovaj način rada.Pin.ANALOG- Pin je konfiguriran za analogni ulaz, pogledajte klasuADC.
pullodređuje ima li pin priključen (slab) pull otpornik, i može biti jedan od:None- Nema pull-up ni pull-down otpornika.Pin.PULL_UP- Pull-up otpornik omogućen.Pin.PULL_DOWN- Pull-down otpornik omogućen.
valueje valjan samo za načine rada Pin.OUT i Pin.OPEN_DRAIN i određuje početnu izlaznu vrijednost pina ako je dana, u protivnom stanje periferije pina ostaje nepromijenjeno.driveodređuje izlaznu snagu pina i može biti jedan od:Pin.DRIVE_0,Pin.DRIVE_1, itd., rastuće po jačini upravljanja. Stvarne sposobnosti upravljanja strujom ovise o portu. Ne implementiraju svi portovi ovaj argument.altodređuje alternativnu funkciju za pin, a vrijednosti koje može poprimiti ovise o portu. Ovaj argument je valjan samo za načine radaPin.ALTiPin.ALT_OPEN_DRAIN. Može se koristiti kada pin podržava više od jedne alternativne funkcije. Ako je podržana samo jedna alternativna funkcija pina, ovaj argument nije potreban. Ne implementiraju svi portovi ovaj argument.
Kao što je gore navedeno, klasa Pin omogućuje postavljanje alternativne funkcije za određeni pin, ali ne određuje nikakve daljnje operacije nad takvim pinom. Pinovi konfigurirani u načinu rada alternativne funkcije obično se ne koriste kao GPIO, već njima upravljaju druge hardverske periferije. Jedina operacija podržana na takvom pinu je ponovna inicijalizacija, pozivanjem konstruktora ili metode
Pin.init(). Ako se pin koji je konfiguriran u načinu rada alternativne funkcije ponovno inicijalizira sPin.IN,Pin.OUTiliPin.OPEN_DRAIN, alternativna funkcija bit će uklonjena s pina.Metode¶
- init(mode: int = -1, pull: int = -1, *, value: Any = None, drive: int = 0, alt: int = -1) None¶
Ponovno inicijalizira pin pomoću danih parametara. Bit će postavljeni samo oni argumenti koji su navedeni. Ostatak stanja periferije pina ostat će nepromijenjen. Pojedinosti o argumentima potražite u dokumentaciji konstruktora.
Vraća
None.
- value(x: Any = None, /) int | None¶
Ova metoda omogućuje postavljanje i dohvaćanje vrijednosti pina, ovisno o tome je li argument
xnaveden ili ne.Ako je argument izostavljen, ova metoda dohvaća digitalnu logičku razinu pina, vraćajući 0 ili 1 što odgovara signalima niskog odnosno visokog napona. Ponašanje ove metode ovisi o načinu rada pina:
Pin.IN- Metoda vraća stvarnu ulaznu vrijednost trenutno prisutnu na pinu.Pin.OUT- Ponašanje i povratna vrijednost metode su nedefinirani.Pin.OPEN_DRAIN- Ako je pin u stanju ‘0’, tada su ponašanje i povratna vrijednost metode nedefinirani. U protivnom, ako je pin u stanju ‘1’, metoda vraća stvarnu ulaznu vrijednost trenutno prisutnu na pinu.
Ako je argument naveden, ova metoda postavlja digitalnu logičku razinu pina. Argument
xmože biti bilo što što se pretvara u boolean. Ako se pretvori uTrue, pin se postavlja u stanje ‘1’, u protivnom se postavlja u stanje ‘0’. Ponašanje ove metode ovisi o načinu rada pina:Pin.IN- Vrijednost se pohranjuje u izlazni međuspremnik pina. Stanje pina se ne mijenja, ostaje u stanju visoke impedancije. Pohranjena vrijednost postat će aktivna na pinu čim se promijeni u način radaPin.OUTiliPin.OPEN_DRAIN.Pin.OUT- Izlazni međuspremnik odmah se postavlja na danu vrijednost.Pin.OPEN_DRAIN- Ako je vrijednost ‘0’, pin se postavlja u stanje niskog napona. U protivnom se pin postavlja u stanje visoke impedancije.
Pri postavljanju vrijednosti ova metoda vraća
None.
- __call__(x: Any = None, /) int | None¶
Objekti pin su pozivni. Metoda poziva pruža (brzu) prečicu za postavljanje i dohvaćanje vrijednosti pina. Ekvivalentna je Pin.value([x]). Pogledajte
Pin.value()za više pojedinosti.
- 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¶
Konfigurira rukovatelj prekida koji će biti pozvan kada je izvor okidanja pina aktivan. Ako je način rada pina
Pin.IN, tada je izvor okidanja vanjska vrijednost na pinu. Ako je način rada pinaPin.OUT, tada je izvor okidanja izlazni međuspremnik pina. U protivnom, ako je način rada pinaPin.OPEN_DRAIN, tada je izvor okidanja izlazni međuspremnik za stanje ‘0’ i vanjska vrijednost pina za stanje ‘1’.Argumenti su:
handlerje neobavezna funkcija koja se poziva kada se prekid okine. Rukovatelj mora primati točno jedan argument, a to je instancaPin.triggerkonfigurira događaj koji može generirati prekid. Moguće vrijednosti su:Pin.IRQ_FALLINGprekid na padajućem rubu.Pin.IRQ_RISINGprekid na rastućem rubu.
Ove vrijednosti mogu se kombinirati operatorom OR kako bi se okinule na više događaja.
prioritypostavlja razinu prioriteta prekida. Vrijednosti koje može poprimiti ovise o portu, ali više vrijednosti uvijek predstavljaju više prioritete.wakeodabire način rada napajanja u kojem ovaj prekid može probuditi sustav. Nije podržano ni na jednom OpenMV portu; ostavite na zadanoj vrijednosti.hardako je istinito, koristi se hardverski prekid. To smanjuje kašnjenje između promjene pina i pozivanja rukovatelja. Rukovatelji hardverskih prekida ne smiju alocirati memoriju; pogledajte Pisanje rukovatelja prekidima. Ne podržavaju svi portovi ovaj argument.
Ova metoda vraća objekt povratnog poziva.
Sljedeće metode su proširenja osnovnog Pin API-ja. Grupirane su prema dostupnosti na portovima.
Metode dostupne na svim OpenMV portovima¶
samo mimxrt + alif¶
samo STM32¶
Konstante¶
Konstante u nastavku koriste se za konfiguriranje objekata
Pinputem konstruktora,init()iirq(). Grupirane su prema dostupnosti na portovima.Konstante dostupne na svim OpenMV portovima¶
samo STM32¶
- ALT: int¶
Način rada pina: alternativna funkcija (push-pull). Koristite s
alt=za odabir periferne funkcije na koju se pin usmjerava. Alias zaAF_PP.
- ANALOG: int¶
Način rada pina: analogni ulaz – digitalni ulazno/izlazni međuspremnik je odspojen tako da pinom može upravljati
ADCkanal.
- AF_OD: int¶
Open-drain način rada alternativne funkcije (ista vrijednost kao
ALT_OPEN_DRAIN).
- OUT_OD: int¶
Open-drain izlazni način rada (ista vrijednost kao
OPEN_DRAIN).
samo mimxrt¶
- PULL_HOLD: int¶
Omogućuje funkciju zadržavanja stanja (bus-keeper) pločice – pin zadržava svoju trenutnu logičku razinu umjesto da plovi.