class Pin – Steuerung von I/O-Pins¶
Ein Pin-Objekt repräsentiert einen einzelnen GPIO auf dem STM32. Es stellt Methoden bereit, um den Modus des Pins (Eingang, Ausgang, alternative Funktion, analog) und die Pull-Widerstände zu konfigurieren sowie seinen digitalen Pegel zu lesen oder zu treiben. Für die analoge Abtastung siehe pyb.ADC; für die Aufzählung der alternativen Funktionen siehe PinAF.
Alle Header-Pins sind als pyb.Pin.board.<name> vordefiniert. Die meisten STM32 OpenMV Cams stellen die I/O-Header-Pins P0 … P9 bereit; die OpenMV Cam N6 stellt zusätzliche Pins bis zu P18 bereit:
p0 = pyb.Pin.board.P0
g = pyb.Pin(pyb.Pin.board.P0, pyb.Pin.IN)
Der zugrunde liegende STM32-Port/Pin kann auch direkt über pyb.Pin.cpu.<name> angesprochen werden, benannt als der Port-Buchstabe gefolgt von der Pin-Nummer (zum Beispiel pyb.Pin.cpu.A0). Die Zuordnung jedes OpenMV-Header-Pins zu einem CPU-Pin ist durch das Board festgelegt.
Pins können auch über einen Zeichenkettennamen ausgewählt werden:
g = pyb.Pin("P0", pyb.Pin.OUT_PP)
Benutzerdefinierte Namen können mit Pin.dict() hinzugefügt werden:
MyMapperDict = {"LeftMotorDir": pyb.Pin.cpu.A0}
pyb.Pin.dict(MyMapperDict)
g = pyb.Pin("LeftMotorDir", pyb.Pin.OUT_OD)
und wieder abgefragt werden:
pin = pyb.Pin("LeftMotorDir")
Alternativ kann mit Pin.mapper() eine benutzerdefinierte Zuordnungsfunktion installiert werden:
def MyMapper(pin_name):
if pin_name == "LeftMotorDir":
return pyb.Pin.cpu.A0
pyb.Pin.mapper(MyMapper)
sodass ein Aufruf von pyb.Pin("LeftMotorDir", pyb.Pin.OUT_PP) "LeftMotorDir" direkt an den Mapper übergibt.
Die folgende Reihenfolge bestimmt, wie ein Name einem physischen Pin zugeordnet wird:
Ein
Pin-Objekt wird direkt übergeben.Die vom Benutzer bereitgestellte Mapper-Funktion gibt einen Pin zurück.
Das vom Benutzer bereitgestellte Dictionary enthält einen passenden Schlüssel.
Die Zeichenkette stimmt mit einem Board-Pin-Namen überein (
P0,P1, …).Die Zeichenkette stimmt mit einem CPU-Port/Pin-Namen überein (
A0,B7, …).
Rufen Sie pyb.Pin.debug(True) auf, um Diagnoseinformationen darüber auszugeben, wie jedes Objekt einem Pin zugeordnet wird.
Konstruktoren¶
- class pyb.Pin(id: str | Pin, *args, **kwargs)¶
Erzeugt ein neues Pin-Objekt, das mit der angegebenen
idverknüpft ist. Wenn zusätzliche Argumente angegeben werden, werden sie anPin.init()weitergeleitet, um den Pin zu konfigurieren.Klassenmethoden¶
Methoden¶
- init(mode: int, pull: int = Pin.PULL_NONE, *, value: int | None = None, alt: int | str = -1) None¶
Initialisiert den Pin:
mode kann einer der folgenden sein:
Pin.IN- konfiguriert den Pin als Eingang;Pin.OUT_PP- konfiguriert den Pin als Ausgang mit Push-Pull-Steuerung;Pin.OUT_OD- konfiguriert den Pin als Ausgang mit Open-Drain-Steuerung;Pin.ALT- konfiguriert den Pin für eine alternative Funktion, Eingang oder Ausgang;Pin.AF_PP- konfiguriert den Pin für eine alternative Funktion, Push-Pull;Pin.AF_OD- konfiguriert den Pin für eine alternative Funktion, Open-Drain;Pin.ANALOG- konfiguriert den Pin als analog.
pull kann einer der folgenden sein:
Pin.PULL_NONE- keine Pull-up- oder Pull-down-Widerstände;Pin.PULL_UP- aktiviert den Pull-up-Widerstand;Pin.PULL_DOWN- aktiviert den Pull-down-Widerstand.
Wenn bei einem Pin der Pull-Modus
Pin.PULL_UPoderPin.PULL_DOWNaktiviert ist, wird dieser Pin über einen internen Widerstand auf 3V3 bzw. GND gezogen (typischerweise einige zehn kOhm – siehe die elektrischen Eigenschaften im STM32-Datenblatt der verwendeten OpenMV Cam).value setzt, falls nicht None, den Ausgabewert des Ports, bevor der Pin aktiviert wird.
alt kann verwendet werden, wenn der Modus
Pin.ALT,Pin.AF_PPoderPin.AF_ODist, um den Index oder Namen einer der mit einem Pin verknüpften alternativen Funktionen festzulegen. Dieses Argument hieß früheraf, was bei Bedarf weiterhin verwendet werden kann.
- value(value: Any | None = None) int | None¶
Liest oder setzt den digitalen Logikpegel des Pins:
Ohne Argument wird 0 oder 1 zurückgegeben, je nach Logikpegel des Pins.
Wird
valueangegeben, so wird der Logikpegel des Pins gesetzt.valuekann alles sein, was sich in einen booleschen Wert umwandeln lässt. Wenn es sich inTrueumwandelt, wird der Pin auf High gesetzt, andernfalls auf Low.
- af() int¶
Gibt die aktuell konfigurierte alternative Funktion des Pins zurück. Die zurückgegebene Ganzzahl entspricht einer der erlaubten Konstanten für das af-Argument der init-Funktion.
- af_list() List[PinAF]¶
Gibt ein Array der für diesen Pin verfügbaren alternativen Funktionen zurück.
Konstanten¶