klasa Pin – upravljanje I/O pinovima¶
Objekt Pin predstavlja jedan GPIO na STM32. Pruža metode za konfiguraciju načina rada pina (ulaz, izlaz, alternativna funkcija, analogni) i pull otpornika te za čitanje ili postavljanje njegove digitalne razine. Za analogno uzorkovanje pogledajte pyb.ADC; za nabrajanje alternativnih funkcija pogledajte PinAF.
Svi pinovi zaglavlja unaprijed su definirani kao pyb.Pin.board.<name>. Većina STM32 OpenMV Cam kamera izlaže I/O pinove zaglavlja P0 … P9; OpenMV Cam N6 izlaže dodatne pinove sve do P18
p0 = pyb.Pin.board.P0
g = pyb.Pin(pyb.Pin.board.P0, pyb.Pin.IN)
Pripadajući STM32 port/pin može se također adresirati izravno putem pyb.Pin.cpu.<name>, imenovan slovom porta nakon kojeg slijedi broj pina (na primjer pyb.Pin.cpu.A0). Preslikavanje svakog OpenMV pina zaglavlja na CPU pin fiksirano je pločom.
Pinovi se mogu odabrati i nizom znakova s imenom:
g = pyb.Pin("P0", pyb.Pin.OUT_PP)
Korisnički definirana imena mogu se dodati pomoću Pin.dict()
MyMapperDict = {"LeftMotorDir": pyb.Pin.cpu.A0}
pyb.Pin.dict(MyMapperDict)
g = pyb.Pin("LeftMotorDir", pyb.Pin.OUT_OD)
i zatim ponovno ispitati:
pin = pyb.Pin("LeftMotorDir")
Alternativno, prilagođena funkcija preslikavanja može se instalirati pomoću Pin.mapper()
def MyMapper(pin_name):
if pin_name == "LeftMotorDir":
return pyb.Pin.cpu.A0
pyb.Pin.mapper(MyMapper)
tako da poziv pyb.Pin("LeftMotorDir", pyb.Pin.OUT_PP) prosljeđuje "LeftMotorDir" izravno funkciji za preslikavanje.
Sljedeći redoslijed određuje kako se ime preslikava na fizički pin:
Objekt
Pinprosljeđuje se izravno.Korisnički definirana funkcija za preslikavanje vraća pin.
Korisnički definirani rječnik sadrži odgovarajući ključ.
Niz znakova odgovara imenu pina ploče (
P0,P1, …).Niz znakova odgovara imenu CPU porta/pina (
A0,B7, …).
Pozovite pyb.Pin.debug(True) za ispis dijagnostičkih informacija o tome kako je svaki objekt preslikan na pin.
Konstruktori¶
- class pyb.Pin(id: str | Pin, *args, **kwargs)¶
Stvara novi Pin objekt povezan s danim
id. Ako su dodani dodatni argumenti, oni se prosljeđuju metodiPin.init()radi konfiguracije pina.Metode klase¶
- classmethod debug(state: bool | None = None) bool | None¶
Dohvaća ili postavlja stanje ispravljanja pogrešaka (
TrueiliFalseza uključeno ili isključeno).
Metode¶
- init(mode: int, pull: int = Pin.PULL_NONE, *, value: int | None = None, alt: int | str = -1) None¶
Inicijalizira pin:
mode može biti jedan od:
Pin.IN- konfigurira pin za ulaz;Pin.OUT_PP- konfigurira pin za izlaz, s push-pull upravljanjem;Pin.OUT_OD- konfigurira pin za izlaz, s open-drain upravljanjem;Pin.ALT- konfigurira pin za alternativnu funkciju, ulaz ili izlaz;Pin.AF_PP- konfigurira pin za alternativnu funkciju, push-pull;Pin.AF_OD- konfigurira pin za alternativnu funkciju, open-drain;Pin.ANALOG- konfigurira pin za analogni rad.
pull može biti jedan od:
Pin.PULL_NONE- bez pull-up ili pull-down otpornika;Pin.PULL_UP- omogućuje pull-up otpornik;Pin.PULL_DOWN- omogućuje pull-down otpornik.
Kada pin ima omogućen pull-način
Pin.PULL_UPiliPin.PULL_DOWN, taj se pin povlači na 3V3 odnosno GND putem internog otpornika (obično desetke kOhm – pogledajte električne karakteristike u STM32 podatkovnom listu za korištenu OpenMV Cam kameru).value ako nije None postavit će izlaznu vrijednost porta prije omogućavanja pina.
alt se može koristiti kada je način rada
Pin.ALT,Pin.AF_PPiliPin.AF_ODza postavljanje indeksa ili imena jedne od alternativnih funkcija povezanih s pinom. Ovaj se argument prije zvaoafi još uvijek se može koristiti po potrebi.
- value(value: Any | None = None) int | None¶
Dohvaća ili postavlja digitalnu logičku razinu pina:
Bez argumenta vraća 0 ili 1 ovisno o logičkoj razini pina.
Kada je zadan
value, postavlja logičku razinu pina.valuemože biti bilo što što se pretvara u logičku vrijednost. Ako se pretvara uTrue, pin se postavlja na visoku razinu, inače se postavlja na nisku.
- af() int¶
Vraća trenutno konfiguriranu alternativnu funkciju pina. Vraćeni cijeli broj odgovarat će jednoj od dopuštenih konstanti za argument af funkcije init.
Konstante¶