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”id donné. 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 :

  • id est 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]).

  • mode spé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 (sauf Pin.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 classe ADC.

  • pull spé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.

  • value n’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é.

  • drive spé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.

  • alt spé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 modes Pin.ALT et Pin.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 avec Pin.IN, Pin.OUT ou Pin.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 x est 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 x peut être tout ce qui se convertit en booléen. S’il se convertit en True, 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 mode Pin.OUT ou Pin.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.

on() None

Met la broche au niveau de sortie « 1 ».

off() None

Met la broche au niveau de sortie « 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

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 est Pin.OUT, alors la source de déclenchement est le tampon de sortie de la broche. Sinon, si le mode de la broche est Pin.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 :

  • handler est une fonction optionnelle à appeler lorsque l’interruption se déclenche. Le gestionnaire doit prendre exactement un argument, qui est l’instance Pin.

  • trigger configure l’événement qui peut générer une interruption. Les valeurs possibles sont :

    • Pin.IRQ_FALLING interruption sur front descendant.

    • Pin.IRQ_RISING interruption sur front montant.

    Ces valeurs peuvent être combinées par OU pour déclencher sur plusieurs événements.

  • priority dé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.

  • wake sé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.

  • hard si 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

low() None

Met la broche au niveau de sortie « 0 ». Alias de off().

high() None

Met la broche au niveau de sortie « 1 ». Alias de on().

mimxrt + alif uniquement

toggle() None

Bascule la broche de sortie – passe de « 0 » à « 1 » ou inversement. Non exposé sur STM32 (utilisez value(not value()) si vous en avez besoin sur STM32).

STM32 uniquement

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

Lit ou définit le mode de la broche. Voir la documentation du constructeur pour les détails de l’argument mode.

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

Lit ou définit l’état de tirage de la broche. Voir la documentation du constructeur pour les détails de l’argument pull.

Constantes

Les constantes ci-dessous sont utilisées pour configurer les objets Pin via le constructeur, init() et irq(). Elles sont regroupées par disponibilité selon le portage.

Constantes disponibles sur tous les portages OpenMV

IN: int

Mode de broche : entrée numérique à haute impédance.

OUT: int

Mode de broche : sortie numérique push-pull. Alias de OUT_PP sur STM32.

OPEN_DRAIN: int

Mode de broche : sortie à drain ouvert. Piloter 0 tire la ligne vers le bas ; piloter 1 la libère vers la haute impédance.

PULL_UP: int

Active la résistance de tirage haut interne sur la broche.

PULL_DOWN: int

Active la résistance de tirage bas interne sur la broche.

IRQ_FALLING: int

À passer à irq() pour déclencher sur un front descendant.

IRQ_RISING: int

À passer à irq() pour déclencher sur un front montant.

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 de AF_PP.

ALT_OPEN_DRAIN: int

Mode de broche : fonction alternative (drain ouvert). Alias de AF_OD.

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_PP: int

Mode fonction alternative push-pull (même valeur que ALT).

AF_OD: int

Mode fonction alternative à drain ouvert (même valeur que ALT_OPEN_DRAIN).

OUT_PP: int

Mode de sortie push-pull (même valeur que OUT).

OUT_OD: int

Mode de sortie à drain ouvert (même valeur que OPEN_DRAIN).

PULL_NONE: int

Désactive la résistance interne de tirage haut / tirage bas sur la broche.

mimxrt uniquement

PULL_UP_47K: int

Active une résistance de tirage haut interne d’environ 47 kΩ.

PULL_UP_22K: int

Active une résistance de tirage haut interne d’environ 22 kΩ.

PULL_HOLD: int

Active la fonction bus-keeper / hold du plot – la broche maintient son niveau logique actuel au lieu de flotter.

DRIVE_OFF: int

Désactive le pilote de sortie de la broche.

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

DRIVE_1: int

Force de commande d’un cran au-dessus de DRIVE_0.

DRIVE_2: int

Force de commande de deux crans au-dessus de DRIVE_0.

DRIVE_3: int

Force de commande de trois crans au-dessus de DRIVE_0 (valeur par défaut pour les broches de sortie).

DRIVE_4: int

Force de commande de quatre crans au-dessus de DRIVE_0.

DRIVE_5: int

Force de commande de cinq crans au-dessus de DRIVE_0.

DRIVE_6: int

Réglage de force de commande le plus élevé.