Skip to content

Utilisation de MicroPython sur la Raspberry Pi Pico

Clignotement de la LED présente sur la Raspberry Pi Pico

Programme de clignotement de la LED

Comme vous venez de le constater faire clignoter la LED qui se trouve sur la Pi Pico est une opération très facile à accomplir.

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

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

while True:
    pin_led.on()
    time.sleep(1)
    pin_led.off()
    time.sleep(1)

Ce programme permet à la LED de clignoter avec un rythme régulier d’une fois par seconde.

Comme vu en SNT l'année dernière, l'interprétation du programme par MicroPython se fait du haut vers le bas :

  • de la ligne 1 à la ligne 6 ;
  • puis, de part la présence de la boucle infinie while True caractéristique des systèmes embarqués, de la ligne 7 à la ligne 10, puis de la ligne 7 à la ligne 10, etc... et cela tant que la carte reste alimentée.

Le code qui donne l’ordre à la LED de clignoter se trouve dans une boucle infinie pour la faire clignoter indéfiniment (du moins tant que la carte Pi Pico est alimentée).

Exécution du programme MicroPython sur votre Pico sans ordinateur

Exécution embarquée

En exécutant le programme via l'appui sur le bouton LECTURE, Thonny IDE transmet de manière directe le code à l’interpréteur MicroPython.

Lorsque vous mettez sous tension la carte Pico en absence d'ordinateur (à l'aide d'une batterie externe par exemple), le lancement du programme Python n’est pas automatiquement.

Pour permettre une exécution automatique du programme en absence d'ordinateur, il faut juste procéder à l’enregistrement du programme sur la Pi Pico sous le nom suivant main.py ainsi il se lancera automatiquement lors de la prochaine mise sous tension.

Explication détaillée d’un programme MicroPython

Explication d'un programme (également appelé script) MicroPython

La structure d’un script MicroPython est la suivante :

Image title

Importation des modules nécessaires

Pour permettre à chaque script MicroPython de bien fonctionner, il faut d’abord importer les modules nécessaires.

Dans notre exemple de script, le module machine contient la quasi-totalité des objets logiciels propres à MicroPython.

Notion d'objet logiciel

Hop, hop, hop, 🤔, arrêtons nous une minute !

MicroPython est un langage où tout élément matériel (par exemple la broche sur laquelle est connectée la LED) est assimilé à ce que l'on appelle un objet logiciel.

En MicroPython, un objet logiciel est simplement la représentation logicielle d'un élément matériel.

À titre d’exemple les broches entrées/sorties sont identifiées dans le programme comme des objets logiciels.

Ah ok, j'ai compris 😁.

Importation des modules nécessaires (suite)

Comme on le disais précédemment, pour permettre à chaque script MicroPython de bien fonctionner, il faut d’abord importer les modules nécessaires.

Dans notre exemple de script, le module machine contient la quasi-totalité des objets logiciels propres à MicroPython.

On importe le sous module Pin qui gère les broches d'entrée/sortie (les GPIO).

1
from machine import Pin

L’objet logiciel pin_led correspond ici à la broche qui commande la LED intégrée. Cette broche est en fait considérée comme une sortie électrique.

4
pin_led = Pin(25, mode=Pin.OUT)

L’objet pin_led créé, renferme en son sein des fonctions qui permettent la modification de son état:

  • .on() pour allumer la LED
  • et .off() pour l’éteindre.

Les fonctions

Dans la plupart des langages, on reconnaît la présence d'une fonction dans un programme lorsqu'un nom, par exemple off, est suivi de parenthèses ouvrante et fermante, par exemple off() (qu'il y ait ou non des arguments dans les parenthèses).

Aspect matériel

La programmation d'une carte à microcontrôleur nécessite de bien connaître les aspects matériels (le HARDWARE).

Par exemple, ici, le numéro de la broche qui est reliée sur la LED intégrée est le 25 pour la Raspberry Pi Pico.

Le script MicroPython, le SOFTWARE, doit être compatible avec le HARDWARE.

Importation des modules nécessaires (suite et fin)

Pour visualiser le clignotement, on rallonge d’une seconde le délai avec la fonction sleep() du module time.

2
import time
8
time.sleep(1)

Les fonctions (suite)

La ligne time.sleep(1) permet d'appeler la fonction sleep, du module time, avec un argument de valeur 1.

Evolution du programme de clignotement

Evolution

Avec la fonction .toggle() on obtient l’inversion de l’état d’une sortie : à l’exécution de la fonction .toggle(), la broche qui était à l’état bas (0V) se retrouve à l’état haut (3.3V), et vice versa.

Ainsi, le code nouveau (avec un clignotement accéléré) se résume à :

1
2
3
4
5
6
7
8
from machine import Pin
import time

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

while True:
    pin_led.toggle()
    time.sleep_ms(250)

Vous noterez, que la fonction time.sleep() a été remplacée par la fonctiontime.sleep_ms().

Beaucoup de fonctions

MicroPython renferme énormément de modules contenant chacun beaucoup de fonction, impossible de tout retenir !

En Sciences de l'ingénieur, une documentation sur les fonctions existantes ou possibles ou un extrait de programme sera toujours fourni dans les sujets à traiter.