třída Pin – ovládání I/O pinů¶
Objekt Pin představuje jeden GPIO na STM32. Poskytuje metody pro konfiguraci režimu pinu (vstup, výstup, alternativní funkce, analogový) a pull rezistorů a pro čtení nebo nastavení jeho digitální úrovně. Pro analogové vzorkování viz pyb.ADC; pro výčet alternativních funkcí viz PinAF.
Všechny piny konektoru jsou předdefinovány jako pyb.Pin.board.<name>. Většina STM32 OpenMV Cam zpřístupňuje I/O piny konektoru P0 … P9; OpenMV Cam N6 zpřístupňuje další piny až po P18
p0 = pyb.Pin.board.P0
g = pyb.Pin(pyb.Pin.board.P0, pyb.Pin.IN)
Podkladový STM32 port/pin lze také adresovat přímo přes pyb.Pin.cpu.<name>, pojmenovaný jako písmeno portu následované číslem pinu (například pyb.Pin.cpu.A0). Mapování každého pinu konektoru OpenMV na CPU pin je pevně dáno deskou.
Piny lze také vybírat řetězcovým názvem:
g = pyb.Pin("P0", pyb.Pin.OUT_PP)
Uživatelsky definované názvy lze přidat pomocí Pin.dict()
MyMapperDict = {"LeftMotorDir": pyb.Pin.cpu.A0}
pyb.Pin.dict(MyMapperDict)
g = pyb.Pin("LeftMotorDir", pyb.Pin.OUT_OD)
a zpětně dotazovat:
pin = pyb.Pin("LeftMotorDir")
Alternativně lze nainstalovat vlastní mapovací funkci pomocí Pin.mapper()
def MyMapper(pin_name):
if pin_name == "LeftMotorDir":
return pyb.Pin.cpu.A0
pyb.Pin.mapper(MyMapper)
takže volání pyb.Pin("LeftMotorDir", pyb.Pin.OUT_PP) předá "LeftMotorDir" přímo mapperu.
Následující pořadí určuje, jak se název namapuje na fyzický pin:
Objekt
Pinje předán přímo.Uživatelem dodaná mapovací funkce vrátí pin.
Uživatelem dodaný slovník obsahuje odpovídající klíč.
Řetězec odpovídá názvu pinu desky (
P0,P1, …).Řetězec odpovídá názvu CPU portu/pinu (
A0,B7, …).
Zavolejte pyb.Pin.debug(True) pro výpis diagnostických informací o tom, jak je každý objekt namapován na pin.
Konstruktory¶
- class pyb.Pin(id: str | Pin, *args, **kwargs)¶
Vytvoří nový objekt Pin přidružený k danému
id. Pokud jsou zadány další argumenty, jsou předány doPin.init()pro konfiguraci pinu.Metody třídy¶
Metody¶
- init(mode: int, pull: int = Pin.PULL_NONE, *, value: int | None = None, alt: int | str = -1) None¶
Inicializuje pin:
mode může být jedno z:
Pin.IN- konfiguruje pin jako vstup;Pin.OUT_PP- konfiguruje pin jako výstup s push-pull řízením;Pin.OUT_OD- konfiguruje pin jako výstup s open-drain řízením;Pin.ALT- konfiguruje pin pro alternativní funkci, vstup nebo výstup;Pin.AF_PP- konfiguruje pin pro alternativní funkci, push-pull;Pin.AF_OD- konfiguruje pin pro alternativní funkci, open-drain;Pin.ANALOG- konfiguruje pin jako analogový.
pull může být jedno z:
Pin.PULL_NONE- žádné pull-up ani pull-down rezistory;Pin.PULL_UP- zapne pull-up rezistor;Pin.PULL_DOWN- zapne pull-down rezistor.
Když má pin zapnutý pull-mode
Pin.PULL_UPneboPin.PULL_DOWN, je tento pin přitažen k 3V3 respektive GND přes interní rezistor (typicky desítky kOhm – viz elektrické charakteristiky v datasheetu STM32 pro používanou OpenMV Cam).value pokud není None, nastaví výstupní hodnotu portu před zapnutím pinu.
alt lze použít, když je režim
Pin.ALT,Pin.AF_PPneboPin.AF_OD, pro nastavení indexu nebo názvu jedné z alternativních funkcí přidružených k pinu. Tento argument se dříve nazývalaf, který lze v případě potřeby stále používat.
- value(value: Any | None = None) int | None¶
Získá nebo nastaví digitální logickou úroveň pinu:
Bez argumentu vrátí 0 nebo 1 podle logické úrovně pinu.
Pokud je zadána
value, nastaví logickou úroveň pinu.valuemůže být cokoli, co se převede na boolean. Pokud se převede naTrue, pin se nastaví na vysokou úroveň, jinak na nízkou.
- af() int¶
Vrátí aktuálně nakonfigurovanou alternativní funkci pinu. Vrácené celé číslo bude odpovídat jedné z povolených konstant pro argument af funkce init.
Konstanty¶