Pin osztály – I/O lábak vezérlése¶
A pin objektum az I/O lábak (más néven GPIO - általános célú be-/kimenet) vezérlésére szolgál. A pin objektumok általában egy fizikai lábhoz kapcsolódnak, amely kimeneti feszültséget tud meghajtani és bemeneti feszültségeket tud beolvasni. A pin osztály rendelkezik metódusokkal a láb módjának (IN, OUT stb.) beállítására, valamint metódusokkal a digitális logikai szint lekérdezésére és beállítására. A láb analóg vezérléséhez lásd az ADC osztályt.
A pin objektum egy azonosító segítségével hozható létre, amely egyértelműen megad egy bizonyos I/O lábat. Az azonosító megengedett formái és az a fizikai láb, amelyre az azonosító leképeződik, port-specifikusak. Az azonosító lehet egész szám, karakterlánc vagy egy port- és lábszámot tartalmazó kettős (tuple).
Használati modell:
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))
Konstruktorok¶
- class machine.Pin(id: int | str, mode: int = -1, pull: int = -1, *, value: Any = None, drive: int = 0, alt: int = -1)¶
Az adott
idazonosítóhoz tartozó láb-periféria (GPIO láb) elérése. Ha a konstruktorban további argumentumokat adunk meg, akkor azokat a láb inicializálására használja. Minden olyan beállítás, amely nincs megadva, az előző állapotában marad.Az argumentumok a következők:
Az
idkötelező, és tetszőleges objektum lehet. A lehetséges értéktípusok közé tartozik: int (belső Pin azonosító), str (Pin név) és tuple ([port, pin] pár).A
modeadja meg a láb módját, amely az alábbiak egyike lehet:Pin.IN- A láb bemenetre van konfigurálva. Kimenetként tekintve a láb nagy impedanciájú állapotban van.Pin.OUT- A láb (normál) kimenetre van konfigurálva.Pin.OPEN_DRAIN- A láb nyitott nyelős (open-drain) kimenetre van konfigurálva. A nyitott nyelős kimenet a következőképpen működik: ha a kimeneti érték 0, a láb alacsony szinten aktív; ha a kimeneti érték 1, a láb nagy impedanciájú állapotban van. Nem minden port valósítja meg ezt a módot, vagy egyesek csak bizonyos lábakon.Pin.ALT- A láb egy alternatív funkció ellátására van konfigurálva, amely port-specifikus. Az így konfigurált láb esetén semmilyen más Pin metódus (kivéve aPin.init()) nem alkalmazható (hívásuk meghatározatlan vagy hardver-specifikus eredményhez vezet). Nem minden port valósítja meg ezt a módot.Pin.ALT_OPEN_DRAIN- Ugyanaz, mint aPin.ALT, de a láb nyitott nyelősként van konfigurálva. Nem minden port valósítja meg ezt a módot.Pin.ANALOG- A láb analóg bemenetre van konfigurálva, lásd azADCosztályt.
A
pullazt adja meg, hogy a lábhoz csatlakozik-e (gyenge) felhúzó-/lehúzó ellenállás, és az alábbiak egyike lehet:None- Nincs felhúzó vagy lehúzó ellenállás.Pin.PULL_UP- Felhúzó ellenállás engedélyezve.Pin.PULL_DOWN- Lehúzó ellenállás engedélyezve.
A
valuecsak a Pin.OUT és Pin.OPEN_DRAIN módokban érvényes, és a kezdeti kimeneti lábértéket adja meg, ha meg van adva; egyébként a láb-periféria állapota változatlan marad.A
drivea láb kimeneti teljesítményét adja meg, és az alábbiak egyike lehet:Pin.DRIVE_0,Pin.DRIVE_1stb., a meghajtási erősség növekvő sorrendjében. A tényleges áram-meghajtási képességek port-függőek. Nem minden port valósítja meg ezt az argumentumot.Az
altegy alternatív funkciót ad meg a lábhoz, és az értékei port-függőek. Ez az argumentum csak aPin.ALTésPin.ALT_OPEN_DRAINmódokban érvényes. Akkor használható, ha egy láb több alternatív funkciót is támogat. Ha csak egy láb-alternatív funkció van támogatva, akkor ez az argumentum nem szükséges. Nem minden port valósítja meg ezt az argumentumot.
Mint fentebb szerepelt, a Pin osztály lehetővé teszi egy alternatív funkció beállítását egy adott lábhoz, de nem ad meg további műveleteket egy ilyen lábon. Az alternatív-funkció módban konfigurált lábakat általában nem GPIO-ként használják, hanem más hardver-perifériák hajtják meg őket. Az egyetlen művelet, amelyet egy ilyen láb támogat, az újrainicializálás a konstruktor vagy a
Pin.init()metódus meghívásával. Ha egy alternatív-funkció módban konfigurált lábatPin.IN,Pin.OUTvagyPin.OPEN_DRAINmóddal újrainicializálunk, az alternatív funkció eltávolításra kerül a lábról.Metódusok¶
- init(mode: int = -1, pull: int = -1, *, value: Any = None, drive: int = 0, alt: int = -1) None¶
A láb újrainicializálása a megadott paraméterekkel. Csak a megadott argumentumok kerülnek beállításra. A láb-periféria többi állapota változatlan marad. Az argumentumok részleteit lásd a konstruktor dokumentációjában.
Visszaadott érték:
None.
- value(x: Any = None, /) int | None¶
Ez a metódus lehetővé teszi a láb értékének beállítását és lekérdezését, attól függően, hogy az
xargumentum meg van-e adva vagy sem.Ha az argumentum hiányzik, akkor ez a metódus lekérdezi a láb digitális logikai szintjét, és 0-t vagy 1-et ad vissza, amelyek rendre alacsony és magas feszültségű jeleknek felelnek meg. A metódus viselkedése a láb módjától függ:
Pin.IN- A metódus a lábon jelenleg jelen lévő tényleges bemeneti értéket adja vissza.Pin.OUT- A metódus viselkedése és visszatérési értéke meghatározatlan.Pin.OPEN_DRAIN- Ha a láb «0» állapotban van, akkor a metódus viselkedése és visszatérési értéke meghatározatlan. Egyébként, ha a láb «1» állapotban van, a metódus a lábon jelenleg jelen lévő tényleges bemeneti értéket adja vissza.
Ha az argumentum meg van adva, akkor ez a metódus beállítja a láb digitális logikai szintjét. Az
xargumentum bármi lehet, ami logikai értékké alakítható. HaTrueértékké alakul, a láb «1» állapotba kerül, egyébként «0» állapotba. A metódus viselkedése a láb módjától függ:Pin.IN- Az érték a láb kimeneti pufferében tárolódik. A láb állapota nem változik, nagy impedanciájú állapotban marad. A tárolt érték azonnal aktívvá válik a lábon, amintPin.OUTvagyPin.OPEN_DRAINmódba kerül.Pin.OUT- A kimeneti puffer azonnal a megadott értékre áll be.Pin.OPEN_DRAIN- Ha az érték «0», a láb alacsony feszültségű állapotba kerül. Egyébként a láb nagy impedanciájú állapotba kerül.
Az érték beállításakor ez a metódus
Noneértéket ad vissza.
- __call__(x: Any = None, /) int | None¶
A Pin objektumok hívhatók. A hívás metódus (gyors) rövidítést biztosít a láb értékének beállításához és lekérdezéséhez. Ez egyenértékű a Pin.value([x]) hívással. További részletekért lásd a
Pin.value()metódust.
- 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¶
Megszakításkezelő konfigurálása, amely akkor hívódik meg, amikor a láb kiváltó forrása aktív. Ha a láb módja
Pin.IN, akkor a kiváltó forrás a lábon lévő külső érték. Ha a láb módjaPin.OUT, akkor a kiváltó forrás a láb kimeneti puffere. Egyébként, ha a láb módjaPin.OPEN_DRAIN, akkor a kiváltó forrás a kimeneti puffer a «0» állapotnál és a külső lábérték az «1» állapotnál.Az argumentumok a következők:
A
handleregy opcionális függvény, amely a megszakítás kiváltásakor hívódik meg. A kezelőnek pontosan egy argumentumot kell fogadnia, amely aPinpéldány.A
triggerazt az eseményt konfigurálja, amely megszakítást generálhat. A lehetséges értékek:Pin.IRQ_FALLINGmegszakítás lefutó élnél.Pin.IRQ_RISINGmegszakítás felfutó élnél.
Ezek az értékek OR művelettel összekapcsolhatók, hogy több eseményre is kiváltsanak.
A
prioritya megszakítás prioritási szintjét állítja be. Az értékei port-specifikusak, de a magasabb értékek mindig magasabb prioritást jelentenek.A
wakeazt az energiagazdálkodási módot választja ki, amelyben ez a megszakítás felébresztheti a rendszert. Egyetlen OpenMV porton sem támogatott; hagyja az alapértelmezett értéken.A
hardha igaz, hardveres megszakítás kerül használatra. Ez csökkenti a láb változása és a kezelő meghívása közötti késleltetést. A hardveres megszakításkezelők nem foglalhatnak memóriát; lásd: Megszakításkezelők írása. Nem minden port támogatja ezt az argumentumot.
Ez a metódus egy visszahívás objektumot ad vissza.
A következő metódusok az alapvető Pin API kiterjesztései. A portonkénti elérhetőség szerint vannak csoportosítva.
Az összes OpenMV porton elérhető metódusok¶
csak mimxrt + alif¶
csak STM32¶
Konstansok¶
Az alábbi konstansok a
Pinobjektumok konfigurálására szolgálnak a konstruktoron, azinit()és azirq()metóduson keresztül. A portonkénti elérhetőség szerint vannak csoportosítva.Az összes OpenMV porton elérhető konstansok¶
csak STM32¶
- ALT: int¶
Láb mód: alternatív funkció (push-pull). Használja az
alt=argumentummal annak kiválasztásához, hogy a láb melyik periféria-funkcióhoz legyen irányítva. AzAF_PPaliasa.
- ANALOG: int¶
Láb mód: analóg bemenet – a digitális be-/kimeneti puffer le van választva, így a láb egy
ADCcsatornával hajtható meg.
- AF_OD: int¶
Alternatív-funkció open-drain mód (ugyanaz az érték, mint az
ALT_OPEN_DRAIN).
- OUT_OD: int¶
Nyitott nyelős (open-drain) kimeneti mód (ugyanaz az érték, mint az
OPEN_DRAIN).
csak mimxrt¶
- PULL_HOLD: int¶
A pad busz-tartó / hold funkciójának engedélyezése – a láb a pillanatnyi logikai szintjét tartja, ahelyett, hogy lebegne.
- DRIVE_0: int¶
Legalacsonyabb meghajtási-erősség beállítás (legmagasabb soros impedancia) – az
R0referencia (~150 Ω 3,3 V-on / 260 Ω 1,8 V-on).