classe Pin – contrôle des broches d’E/S¶
Un objet pin sert à contrôler les broches d’E/S (également appelées GPIO - entrée/sortie à usage général). Les objets pin sont généralement associés à une broche physique capable de fournir une tension de sortie et de lire des tensions d’entrée. La classe pin dispose de méthodes pour définir le mode de la broche (IN, OUT, etc.) ainsi que de méthodes pour lire et définir le niveau logique numérique. Pour le contrôle analogique d’une broche, voir la classe ADC.
Un objet pin est construit à l’aide d’un identifiant qui spécifie sans ambiguïté une certaine broche d’E/S. Les formes autorisées de l’identifiant et la broche physique à laquelle il correspond sont spécifiques au portage. Les valeurs possibles pour l’identifiant sont un entier, une chaîne ou un tuple contenant le port et le numéro de broche.
Modèle d’utilisation
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))
Constructeurs¶
- class machine.Pin(id: int | str, mode: int = -1, pull: int = -1, *, value: Any = None, drive: int = 0, alt: int = -1)¶
Accède au périphérique de broche (broche GPIO) associé à l”
iddonné. Si des arguments supplémentaires sont fournis dans le constructeur, ils sont utilisés pour initialiser la broche. Tout réglage non spécifié conserve son état précédent.Les arguments sont :
idest obligatoire et peut être un objet arbitraire. Parmi les types de valeurs possibles : int (un identifiant interne de Pin), str (un nom de Pin) et tuple (paire [port, broche]).modespécifie le mode de la broche, qui peut être l’un des suivants :Pin.IN- La broche est configurée en entrée. Vue comme une sortie, la broche est en état de haute impédance.Pin.OUT- La broche est configurée en sortie (normale).Pin.OPEN_DRAIN- La broche est configurée en sortie à drain ouvert. La sortie à drain ouvert fonctionne de la manière suivante : si la valeur de sortie est fixée à 0, la broche est active à un niveau bas ; si la valeur de sortie est 1, la broche est en état de haute impédance. Tous les portages n’implémentent pas ce mode, et certains peuvent ne le faire que sur certaines broches.Pin.ALT- La broche est configurée pour réaliser une fonction alternative, qui est spécifique au portage. Pour une broche configurée de cette manière, aucune autre méthode de Pin (saufPin.init()) n’est applicable (les appeler conduira à un résultat indéfini ou propre au matériel). Tous les portages n’implémentent pas ce mode.Pin.ALT_OPEN_DRAIN- Identique àPin.ALT, mais la broche est configurée en drain ouvert. Tous les portages n’implémentent pas ce mode.Pin.ANALOG- La broche est configurée pour une entrée analogique, voir la classeADC.
pullspécifie si la broche est dotée d’une résistance de tirage (faible) et peut être l’une des valeurs suivantes :None- Aucune résistance de tirage haut ou bas.Pin.PULL_UP- Résistance de tirage haut activée.Pin.PULL_DOWN- Résistance de tirage bas activée.
valuen’est valide que pour les modes Pin.OUT et Pin.OPEN_DRAIN et spécifie la valeur de sortie initiale de la broche si elle est fournie ; sinon, l’état du périphérique de broche reste inchangé.drivespécifie la puissance de sortie de la broche et peut être l’une des valeurs suivantes :Pin.DRIVE_0,Pin.DRIVE_1, etc., par ordre croissant de force de commande. Les capacités réelles de fourniture de courant dépendent du portage. Tous les portages n’implémentent pas cet argument.altspécifie une fonction alternative pour la broche et les valeurs qu’il peut prendre dépendent du portage. Cet argument n’est valide que pour les modesPin.ALTetPin.ALT_OPEN_DRAIN. Il peut être utilisé lorsqu’une broche prend en charge plusieurs fonctions alternatives. Si une seule fonction alternative de broche est prise en charge, alors cet argument n’est pas requis. Tous les portages n’implémentent pas cet argument.
Comme indiqué ci-dessus, la classe Pin permet de définir une fonction alternative pour une broche particulière, mais elle ne spécifie aucune autre opération sur une telle broche. Les broches configurées en mode fonction alternative ne sont généralement pas utilisées comme GPIO, mais sont plutôt pilotées par d’autres périphériques matériels. La seule opération prise en charge sur une telle broche est la réinitialisation, en appelant le constructeur ou la méthode
Pin.init(). Si une broche configurée en mode fonction alternative est réinitialisée avecPin.IN,Pin.OUTouPin.OPEN_DRAIN, la fonction alternative sera retirée de la broche.Méthodes¶
- init(mode: int = -1, pull: int = -1, *, value: Any = None, drive: int = 0, alt: int = -1) None¶
Réinitialise la broche en utilisant les paramètres donnés. Seuls les arguments spécifiés seront définis. Le reste de l’état du périphérique de broche restera inchangé. Voir la documentation du constructeur pour les détails des arguments.
Renvoie
None.
- value(x: Any = None, /) int | None¶
Cette méthode permet de définir et de lire la valeur de la broche, selon que l’argument
xest fourni ou non.Si l’argument est omis, cette méthode lit le niveau logique numérique de la broche, renvoyant 0 ou 1 correspondant respectivement aux signaux de tension basse et haute. Le comportement de cette méthode dépend du mode de la broche :
Pin.IN- La méthode renvoie la valeur d’entrée réelle actuellement présente sur la broche.Pin.OUT- Le comportement et la valeur de retour de la méthode sont indéfinis.Pin.OPEN_DRAIN- Si la broche est dans l’état « 0 », alors le comportement et la valeur de retour de la méthode sont indéfinis. Sinon, si la broche est dans l’état « 1 », la méthode renvoie la valeur d’entrée réelle actuellement présente sur la broche.
Si l’argument est fourni, cette méthode définit le niveau logique numérique de la broche. L’argument
xpeut être tout ce qui se convertit en booléen. S’il se convertit enTrue, la broche est mise à l’état « 1 », sinon elle est mise à l’état « 0 ». Le comportement de cette méthode dépend du mode de la broche :Pin.IN- La valeur est stockée dans le tampon de sortie de la broche. L’état de la broche ne change pas, elle reste en état de haute impédance. La valeur stockée deviendra active sur la broche dès qu’elle passera en modePin.OUTouPin.OPEN_DRAIN.Pin.OUT- Le tampon de sortie est immédiatement réglé à la valeur donnée.Pin.OPEN_DRAIN- Si la valeur est « 0 », la broche est mise à un état de tension basse. Sinon, la broche est mise en état de haute impédance.
Lors de la définition de la valeur, cette méthode renvoie
None.
- __call__(x: Any = None, /) int | None¶
Les objets pin sont appelables. La méthode d’appel fournit un raccourci (rapide) pour définir et lire la valeur de la broche. Elle équivaut à Pin.value([x]). Voir
Pin.value()pour plus de détails.
- 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¶
Configure un gestionnaire d’interruption à appeler lorsque la source de déclenchement de la broche est active. Si le mode de la broche est
Pin.IN, alors la source de déclenchement est la valeur externe sur la broche. Si le mode de la broche estPin.OUT, alors la source de déclenchement est le tampon de sortie de la broche. Sinon, si le mode de la broche estPin.OPEN_DRAIN, alors la source de déclenchement est le tampon de sortie pour l’état « 0 » et la valeur externe de la broche pour l’état « 1 ».Les arguments sont :
handlerest une fonction optionnelle à appeler lorsque l’interruption se déclenche. Le gestionnaire doit prendre exactement un argument, qui est l’instancePin.triggerconfigure l’événement qui peut générer une interruption. Les valeurs possibles sont :Pin.IRQ_FALLINGinterruption sur front descendant.Pin.IRQ_RISINGinterruption sur front montant.
Ces valeurs peuvent être combinées par OU pour déclencher sur plusieurs événements.
prioritydéfinit le niveau de priorité de l’interruption. Les valeurs qu’il peut prendre sont spécifiques au portage, mais des valeurs plus élevées représentent toujours des priorités plus élevées.wakesélectionne le mode d’alimentation dans lequel cette interruption peut réveiller le système. Non pris en charge sur aucun portage OpenMV ; laisser la valeur par défaut.hardsi vrai, une interruption matérielle est utilisée. Cela réduit le délai entre le changement de la broche et l’appel du gestionnaire. Les gestionnaires d’interruption matérielle ne peuvent pas allouer de mémoire ; voir Écriture de gestionnaires d’interruption. Tous les portages ne prennent pas en charge cet argument.
Cette méthode renvoie un objet de rappel.
Les méthodes suivantes sont des extensions de l’API Pin de base. Elles sont regroupées par disponibilité selon le portage.
Méthodes disponibles sur tous les portages OpenMV¶
mimxrt + alif uniquement¶
STM32 uniquement¶
Constantes¶
Les constantes ci-dessous sont utilisées pour configurer les objets
Pinvia le constructeur,init()etirq(). Elles sont regroupées par disponibilité selon le portage.Constantes disponibles sur tous les portages OpenMV¶
STM32 uniquement¶
- ALT: int¶
Mode de broche : fonction alternative (push-pull). À utiliser avec
alt=pour sélectionner vers quelle fonction de périphérique la broche est routée. Alias deAF_PP.
- ANALOG: int¶
Mode de broche : entrée analogique – le tampon d’entrée/sortie numérique est déconnecté afin que la broche puisse être pilotée par un canal
ADC.
- AF_OD: int¶
Mode fonction alternative à drain ouvert (même valeur que
ALT_OPEN_DRAIN).
- OUT_OD: int¶
Mode de sortie à drain ouvert (même valeur que
OPEN_DRAIN).
mimxrt uniquement¶
- PULL_HOLD: int¶
Active la fonction bus-keeper / hold du plot – la broche maintient son niveau logique actuel au lieu de flotter.
- DRIVE_0: int¶
Réglage de force de commande le plus faible (impédance série la plus élevée) – la référence
R0(~150 Ω à 3,3 V / 260 Ω à 1,8 V).