Skip to content

Utiliser les entrées / sorties de la Pi Pico avec MicroPython

Configuration des broches en entrée ou en sortie avec MicroPython

Entrées / sorties et MicroPython

En MicroPython, les entrées et sorties des broches (également appelé GPIO pour General Purpose Input OutPut) peuvent être facilement gérées grâce à l’objet logiciel Pin du module machine.

En anglais, le terme Pin désigne une broche.

C’est au moment de la création d’un objet logiciel Pin que s’effectue la configuration d’une broche soit en entrée ou soit en sortie.

Pour information, le brochage de la Pi Pico est le suivant :

Image title

Beaucoup de broches et de microcontrôleurs

Il existe d'innombrable microcontrôleurs disposant chacun de beaucoup de broches d'entrée / sortie, impossible de tout retenir !

En Sciences de l'ingénieur, une documentation sur les aspects matériels sera toujours fournie dans les sujets à traiter.

Configuration en entrée

Si on veut configurer une broche en sortie, on crée un objet logiciel Pin en précisant le numéro de la broche et son mode en sortie Pin.OUT :

1
2
3
4
from machine import Pin

pin_led = Pin(25, mode=Pin.OUT)
# Ceci est un commentaire, ici la broche 25 est configurée en sortie

Par défaut, à la création d’un objet logiciel, le niveau de tension en sortie est défini sur 0V.

Si on le souhaite, on peut même choisir la tension en sortie au moment de la création de l'objet logiciel représentatif de la broche dans le programme.

1
2
3
from machine import Pin

pin_led = Pin(25, mode=Pin.OUT, value=1) # 3.3V en sortie -> la led sera allumée

Configuration en sortie

Pour définir une broche en entrée, il suffit de modifier l'argument mode à Pin.IN lors de sa création.

1
2
3
from machine import Pin

pin_24 = Pin(24, mode=Pin.IN)

Utilisation de la résistance "de tirage"

Il est possible de spécifier le type d’entrée souhaitée.

On peut choisir entre une entrée avec une résistance de pull-up, une résistance de pull-down ou sans résistance de tirage.

Si ces termes ne sont pas familiers, je vous invite à consulter le fonctionnement et l’utilité des résistances de tirage (pullup, pulldown).

On utilise l’argument optionnel pull qui permet de choisir le type de résistance de tirage.

1
2
3
4
5
# Entrée avec une résistance de pulldown
pin_24 = Pin(24, mode=Pin.IN, pull=Pin.PULL_DOWN)

# Entrée avec une résistance de pullup (le + utilisé)
pin_23 = Pin(23, mode=Pin.IN, pull=Pin.PULL_UP)   

Lire ou imposer une tension en MicroPython

Imposer un niveau sur une sortie logique

MicroPython offre plusieurs fonctions pour contrôler la tension en sortie d'une broche :

  • .on() et .off()
  • .high() et .low()
  • .value(valeur)

Dans le cas de la fonction .value(valeur) valeur est un argument qui vaut 0 ou 1

Les noms de fonctions sont explicites :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
from machine import Pin

pin_led = Pin(16, mode=Pin.OUT)

# Impose une tension de 3.3V en sortie (état logique haut)
pin_led.on()
# ou
pin_led.high()
# ou
pin_led.value(1)

# Impose une tension de 0V en sortie (état logique bas)
pin_led.off()
# ou
pin_led.low()
# ou
pin_led.value(0)

Remarque

La fonction Pin.value() peut être utile si vous stockez la valeur dans une variable :

1
2
3
4
5
pin_led = Pin(16, mode=Pin.OUT)
output_state = 1
pin_led.value(output_state) # 3.3V en sortie
output_state = 0
pin_led.value(output_state) # 0V en sortie

Lecture d'une entrée logique

Pour déterminer l’état logique d’une broche d'entrée, c’est-à-dire s’il est haut (3.3V) ou bas (0V), on peut utiliser la fonction .value() sans préciser d'argument.

1
2
3
4
5
6
from machine import Pin

pin_15 = Pin(15, mode=Pin.IN, pull=Pin.PULL_UP)
etat = pin_15.value()

print(etat)

La variable etat est associée à 0 ou 1.

En effet, la fonction .value() renvoie 0 ou 1 selon la valeur de la tension (0V ou 3.3V) présente en entrée de la broche 15.

La fonction print() permet ici d'afficher la valeur de l'objet etat dans le terminal de Thonny IDE.

Notion de variable et d'affectation

Une variable correspond à l'association entre un nom et un objet logiciel.

Cette association est réalisée à l'aide de l'opérateur d'affectation =.

Exemples n°1 :

etat = pin_15.value()

La variable état est associée à l'objet logiciel renvoyé par la fonction .value() (entier de valeur 0 ou 1)

Exemples n°2 :

nombre = 87

La variable nombre est associée à l'objet logiciel : entier de valeur 87.

Application : Allumer la LED lorsqu’un bouton-poussoir est pressé

Objectif

On se propose ici d'allumer la LED lorsqu’un bouton-poussoir est pressé.

Pour cela on va utiliser une entrée logique avec une résistance pullup.

Voici le circuit électrique à connecter à la Pi Pico afin de faire fonctionner le programme MicroPython fourni ci-dessous.

Image title

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
from machine import Pin

pin_button = Pin(14, mode=Pin.IN, pull=Pin.PULL_UP)
pin_led = Pin(16, mode=Pin.OUT)

while True:
    etat = pin_button.value()
    if etat == 1:
        pin_led.on()
    else:
        pin_led.off()

Exercice 3.1

Réaliser le cablage.

Dessiner le schéma électrique associé.

Exécuter le programme.