class Pin – styr I/O-stift

Ett pin-objekt används för att styra I/O-stift (även kallade GPIO - general-purpose input/output). Pin-objekt är vanligtvis kopplade till ett fysiskt stift som kan driva en utspänning och läsa inspänningar. Pin-klassen har metoder för att ställa in stiftets läge (IN, OUT, osv.) och metoder för att läsa och ställa in den digitala logiknivån. För analog styrning av ett stift, se klassen ADC.

Ett pin-objekt skapas med hjälp av en identifierare som entydigt anger ett visst I/O-stift. De tillåtna formerna för identifieraren och det fysiska stift som identifieraren mappar till är portspecifika. Möjliga former för identifieraren är ett heltal, en sträng eller en tupel med port och stiftnummer.

Användningsmodell:

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))

Konstruktorer

class machine.Pin(id: int | str, mode: int = -1, pull: int = -1, *, value: Any = None, drive: int = 0, alt: int = -1)

Få åtkomst till den stiftkringutrustning (GPIO-stift) som är kopplad till det angivna id. Om ytterligare argument anges i konstruktorn används de för att initiera stiftet. Alla inställningar som inte anges behåller sitt tidigare tillstånd.

Argumenten är:

  • id är obligatoriskt och kan vara ett godtyckligt objekt. Bland möjliga värdetyper finns: int (en intern Pin-identifierare), str (ett Pin-namn) och tupel (paret [port, stift]).

  • mode anger stiftläget, som kan vara ett av:

    • Pin.IN - Stiftet är konfigurerat för inmatning. Sett som utgång befinner sig stiftet i högimpedanstillstånd.

    • Pin.OUT - Stiftet är konfigurerat för (normal) utmatning.

    • Pin.OPEN_DRAIN - Stiftet är konfigurerat för open-drain-utmatning. Open-drain-utmatning fungerar på följande sätt: om utvärdet sätts till 0 är stiftet aktivt på låg nivå; om utvärdet är 1 befinner sig stiftet i högimpedanstillstånd. Inte alla portar implementerar detta läge, och vissa kan göra det endast på vissa stift.

    • Pin.ALT - Stiftet är konfigurerat för att utföra en alternativ funktion, som är portspecifik. För ett stift som konfigurerats på detta sätt är inga andra Pin-metoder (utom Pin.init()) tillämpliga (att anropa dem leder till ett odefinierat, eller hårdvaruspecifikt, resultat). Inte alla portar implementerar detta läge.

    • Pin.ALT_OPEN_DRAIN - Samma som Pin.ALT, men stiftet är konfigurerat som open-drain. Inte alla portar implementerar detta läge.

    • Pin.ANALOG - Stiftet är konfigurerat för analog inmatning, se klassen ADC.

  • pull anger om stiftet har ett (svagt) pull-motstånd anslutet, och kan vara ett av:

    • None - Inget pull-up- eller pull-down-motstånd.

    • Pin.PULL_UP - Pull-up-motstånd aktiverat.

    • Pin.PULL_DOWN - Pull-down-motstånd aktiverat.

  • value är giltigt endast för lägena Pin.OUT och Pin.OPEN_DRAIN och anger det initiala utvärdet för stiftet om det ges, annars förblir stiftkringutrustningens tillstånd oförändrat.

  • drive anger stiftets uteffekt och kan vara ett av: Pin.DRIVE_0, Pin.DRIVE_1, osv., med ökande drivstyrka. Den faktiska strömdrivningskapaciteten är portberoende. Inte alla portar implementerar detta argument.

  • alt anger en alternativ funktion för stiftet och de värden det kan anta är portberoende. Detta argument är giltigt endast för lägena Pin.ALT och Pin.ALT_OPEN_DRAIN. Det kan användas när ett stift stöder mer än en alternativ funktion. Om endast en alternativ stiftfunktion stöds krävs inte detta argument. Inte alla portar implementerar detta argument.

Som angetts ovan tillåter Pin-klassen att en alternativ funktion ställs in för ett visst stift, men den anger inga ytterligare operationer på ett sådant stift. Stift som konfigurerats i läget för alternativa funktioner används vanligtvis inte som GPIO utan drivs istället av annan hårdvarukringutrustning. Den enda operation som stöds på ett sådant stift är ominitiering, genom att anropa konstruktorn eller metoden Pin.init(). Om ett stift som är konfigurerat i läget för alternativa funktioner ominitieras med Pin.IN, Pin.OUT eller Pin.OPEN_DRAIN tas den alternativa funktionen bort från stiftet.

Metoder

init(mode: int = -1, pull: int = -1, *, value: Any = None, drive: int = 0, alt: int = -1) None

Ominitiera stiftet med hjälp av de angivna parametrarna. Endast de argument som anges ställs in. Resten av stiftkringutrustningens tillstånd förblir oförändrat. Se konstruktordokumentationen för detaljer om argumenten.

Returnerar None.

value(x: Any = None, /) int | None

Denna metod tillåter att stiftets värde ställs in och läses, beroende på om argumentet x anges eller inte.

Om argumentet utelämnas läser denna metod stiftets digitala logiknivå och returnerar 0 eller 1 som motsvarar låg respektive hög spänningssignal. Beteendet för denna metod beror på stiftets läge:

  • Pin.IN - Metoden returnerar det faktiska invärde som för närvarande finns på stiftet.

  • Pin.OUT - Metodens beteende och returvärde är odefinierat.

  • Pin.OPEN_DRAIN - Om stiftet befinner sig i tillstånd ’0’ är metodens beteende och returvärde odefinierat. Annars, om stiftet befinner sig i tillstånd ’1’, returnerar metoden det faktiska invärde som för närvarande finns på stiftet.

Om argumentet anges ställer denna metod in stiftets digitala logiknivå. Argumentet x kan vara vad som helst som konverteras till ett booleskt värde. Om det konverteras till True sätts stiftet till tillstånd ’1’, annars sätts det till tillstånd ’0’. Beteendet för denna metod beror på stiftets läge:

  • Pin.IN - Värdet lagras i utbufferten för stiftet. Stiftets tillstånd ändras inte, det förblir i högimpedanstillstånd. Det lagrade värdet blir aktivt på stiftet så snart det ändras till läget Pin.OUT eller Pin.OPEN_DRAIN.

  • Pin.OUT - Utbufferten sätts till det angivna värdet omedelbart.

  • Pin.OPEN_DRAIN - Om värdet är ’0’ sätts stiftet till ett lågspänningstillstånd. Annars sätts stiftet till högimpedanstillstånd.

När värdet ställs in returnerar denna metod None.

__call__(x: Any = None, /) int | None

Pin-objekt är anropbara. Anropsmetoden ger en (snabb) genväg för att ställa in och läsa stiftets värde. Den är likvärdig med Pin.value([x]). Se Pin.value() för mer information.

on() None

Sätt stiftet till utnivå ”1”.

off() None

Sätt stiftet till utnivå ”0”.

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

Konfigurera en avbrottshanterare som ska anropas när stiftets utlösningskälla är aktiv. Om stiftläget är Pin.IN är utlösningskällan det externa värdet på stiftet. Om stiftläget är Pin.OUT är utlösningskällan stiftets utbuffert. Annars, om stiftläget är Pin.OPEN_DRAIN, är utlösningskällan utbufferten för tillstånd ’0’ och det externa stiftvärdet för tillstånd ’1’.

Argumenten är:

  • handler är en valfri funktion som ska anropas när avbrottet utlöses. Hanteraren måste ta exakt ett argument, vilket är Pin-instansen.

  • trigger konfigurerar den händelse som kan generera ett avbrott. Möjliga värden är:

    • Pin.IRQ_FALLING avbrott på fallande kant.

    • Pin.IRQ_RISING avbrott på stigande kant.

    Dessa värden kan OR:as samman för att utlösa på flera händelser.

  • priority ställer in avbrottets prioritetsnivå. De värden det kan anta är portspecifika, men högre värden representerar alltid högre prioritet.

  • wake väljer det energiläge i vilket detta avbrott kan väcka systemet. Stöds inte på någon OpenMV-port; lämna som standardvärdet.

  • hard om sant används ett hårdvaruavbrott. Detta minskar fördröjningen mellan stiftändringen och att hanteraren anropas. Hårda avbrottshanterare får inte allokera minne; se Skriva avbrottshanterare. Inte alla portar stöder detta argument.

Denna metod returnerar ett återanropsobjekt.

Följande metoder är tillägg till det centrala Pin-API:et. De är grupperade efter porttillgänglighet.

Metoder tillgängliga på alla OpenMV-portar

low() None

Sätt stiftet till utnivå ”0”. Alias för off().

high() None

Sätt stiftet till utnivå ”1”. Alias för on().

endast mimxrt + alif

toggle() None

Växla utgångsstiftet – vänd ”0” till ”1” eller tvärtom. Exponeras inte på STM32 (använd value(not value()) om du behöver detta på STM32).

endast STM32

mode(mode: int | None = None, /) int
mode(mode: int, /) None

Läs eller ställ in stiftläget. Se konstruktordokumentationen för detaljer om argumentet mode.

pull(pull: int | None = None, /) int
pull(pull: int, /) None

Läs eller ställ in stiftets pull-tillstånd. Se konstruktordokumentationen för detaljer om argumentet pull.

Konstanter

Konstanterna nedan används för att konfigurera Pin-objekt via konstruktorn, init() och irq(). De är grupperade efter porttillgänglighet.

Konstanter tillgängliga på alla OpenMV-portar

IN: int

Stiftläge: högimpedans digital inmatning.

OUT: int

Stiftläge: push-pull digital utmatning. Alias för OUT_PP på STM32.

OPEN_DRAIN: int

Stiftläge: open-drain-utmatning. Att driva 0 drar linjen låg; att driva 1 släpper den till högimpedans.

PULL_UP: int

Aktivera det interna pull-up-motståndet på stiftet.

PULL_DOWN: int

Aktivera det interna pull-down-motståndet på stiftet.

IRQ_FALLING: int

Skicka till irq() för att utlösa på en fallande kant.

IRQ_RISING: int

Skicka till irq() för att utlösa på en stigande kant.

endast STM32

ALT: int

Stiftläge: alternativ funktion (push-pull). Använd med alt= för att välja vilken kringutrustningsfunktion stiftet dirigeras till. Alias för AF_PP.

ALT_OPEN_DRAIN: int

Stiftläge: alternativ funktion (open-drain). Alias för AF_OD.

ANALOG: int

Stiftläge: analog inmatning – den digitala in-/utbufferten kopplas bort så att stiftet kan drivas av en ADC-kanal.

AF_PP: int

Push-pull-läge för alternativ funktion (samma värde som ALT).

AF_OD: int

Open-drain-läge för alternativ funktion (samma värde som ALT_OPEN_DRAIN).

OUT_PP: int

Push-pull-utmatningsläge (samma värde som OUT).

OUT_OD: int

Open-drain-utmatningsläge (samma värde som OPEN_DRAIN).

PULL_NONE: int

Inaktivera det interna pull-up-/pull-down-motståndet på stiftet.

endast mimxrt

PULL_UP_47K: int

Aktivera ett internt pull-up-motstånd på ~47 kΩ.

PULL_UP_22K: int

Aktivera ett internt pull-up-motstånd på ~22 kΩ.

PULL_HOLD: int

Aktivera padens bus-keeper-/hållfunktion – stiftet låser sin nuvarande logiknivå istället för att flyta fritt.

DRIVE_OFF: int

Inaktivera stiftets utgångsdrivare.

DRIVE_0: int

Lägsta drivstyrkeinställningen (högsta serieimpedansen) – referensen R0 (~150 Ω vid 3,3 V / 260 Ω vid 1,8 V).

DRIVE_1: int

Drivstyrka ett steg över DRIVE_0.

DRIVE_2: int

Drivstyrka två steg över DRIVE_0.

DRIVE_3: int

Drivstyrka tre steg över DRIVE_0 (standard för utgångsstift).

DRIVE_4: int

Drivstyrka fyra steg över DRIVE_0.

DRIVE_5: int

Drivstyrka fem steg över DRIVE_0.

DRIVE_6: int

Starkaste drivstyrkeinställningen.