Affichage de la matrice LED

Fondamental

Il y a une matrice de 25 LED (diodes électroluminescentes) sur la face avant de la carte. Plusieurs commandes d'affichage sont disponibles en microPython :

  • display.show() : affiche le caractère ou l'image choisi(e) entre parenthèses ;

  • display.scroll(string, delay=400) : affiche une chaîne de caractères (string, du texte) en défilement avec une certaine vitesse (delay, plus le délai est grand, moins le texte défilera rapidement) ;

  • display.set_pixel(x, y, val) : allume le pixel de coordonnées x et y (de 0 à 4 en abscisse et ordonnée) d'une intensité val (entre 0 et 9) ;

  • sleep() : provoque la pause de la carte pendant un nombre défini de millisecondes choisi entre parenthèses

  • display.clear() : efface l'affichage en cours.

La matrice est composé de 5 colonnes (positions X de 0 à 4) et de 5 lignes (positions Y de 0 à 4). Il suffit d'indiquer la ou les diode(s) que l'on souhaite allumer et avec quelle intensité.

Le REPL permet un contact direct avec MicroPython installé sur la carte. C'est ce qui correspond à la console Python sur ordinateur ou la calculatrice Numworks. Pour lancer REPL, cliquez sur l'icône .

Conseil

En cliquant sur l'icône REPL, le programme en cours d'exécution sur la carte (main.py) est stoppé et vous pouvez taper des commandes qui seront immédiatement exécutées par MicroPython. C'est très commode de pouvoir interagir directement avec MicroPython en cours d'élaboration de programme.

Cela permet par exemple :

  • de tester une ligne de code ;

  • de se renseigner sur l'usage d'une commande ;

  • de connaître le contenu d'une librairie.

  • de connaître les cause d'un plantage du programme

  • etc....

La matrice LED

Allumer, éteindre l'écran

  • Les commandes display.on() et display.off() permettent d'allumer et d'éteindre l'écran. Éteindre l'écran peut être utile lorsqu'on veut récupérer les broches d'entrée sortie associées à la matrice de LED (broches 3,4,5,7,9,10).

  • les commandes display.is_on() et display.is_off() permettent de tester l'état de l'écran.

  • ne pas confondre ces commandes avec display.clear() qui se contente d'éteindre les pixels de l'écran.

Exemple

Taper successivement les lignes suivantes dans le REPL pour constater l'effet de chacune.

1
>>> display.show(1)
2
>>> display.off()
3
>>> display.on()

La première ligne permet d'afficher le caractère "1" sur la matrice LED.

Le seconde ligne éteint la matrice LED.

Enfin, la dernière ligne permet le rallumage de l'écran et remet ce dernier dans l'état ou il était.

Il n'a donc pas été effacé.

Afficher des messages

display.show() et display scrool()

Affiche un texte ou un nombre sur l'écran. La méthode show() montre caractère par caractère alors que la méthode scroll() fait défiler plus progressivement.

Tester dans le REPL différentes commandes afin de voir le rôle des paramètres optionnels wait et loop.

1
>>> display.show(23)
2
>>> display.scroll('Hello World!', loop=True)
3
>>> display.show('Hello World!', wait=False, loop=True)
4

Afficher / Lire des pixels

display.get_pixel() et display.set_pixel()
  • display.get_pixel(x, y) retourne l'illumination du pixel situé à la colonne x et la ligne y sous forme d'un entier de 0 (éteint) à 9 (complètement allumé).

  • display.set_pixel(x, y, value) allume le pixel situé à la colonne x et la ligne y avec une illumination value de 0 (éteint) à 9 (complètement allumé).

Exemple

Tester le programme suivant :

1
from microbit import *
2
3
for x in range(5):
4
    for y in range(5):
5
        display.set_pixel(x,y,(x+y)%9)

Afficher des images

Images prédéfinies

Tester l'instruction suivante :

1
display.show (Image.HAPPY)

Il y a d'autres images prédéfinies dans MicroPython sur microbit que vous pouvez tester. On peut les obtenir par la commande dir(Image) :

'HEART', 'HEART_SMALL', 'HAPPY', 'SMILE', 'SAD', 'CONFUSED', 'ANGRY', 'ASLEEP', 'SURPRISED', 'SILLY', 'FABULOUS', 'MEH', 'YES', 'NO', 'CLOCK12', 'CLOCK1', 'CLOCK2', 'CLOCK3', 'CLOCK4', 'CLOCK5', 'CLOCK6', 'CLOCK7', 'CLOCK8', 'CLOCK9', 'CLOCK10', 'CLOCK11', 'ARROW_N', 'ARROW_NE', 'ARROW_E', 'ARROW_SE', 'ARROW_S', 'ARROW_SW', 'ARROW_W', 'ARROW_NW', 'TRIANGLE', 'TRIANGLE_LEFT', 'CHESSBOARD', 'DIAMOND', 'DIAMOND_SMALL', 'SQUARE', 'SQUARE_SMALL', 'RABBIT', 'COW', 'MUSIC_CROTCHET', 'MUSIC_QUAVER', 'MUSIC_QUAVERS', 'PITCHFORK', 'XMAS', 'PACMAN', 'TARGET', 'ALL_CLOCKS', 'ALL_ARROWS', 'TSHIRT', 'ROLLERSKATE', 'DUCK', 'HOUSE', 'TORTOISE', 'BUTTERFLY', 'STICKFIGURE', 'GHOST', 'SWORD', 'GIRAFFE', 'SKULL', 'UMBRELLA', 'SNAKE'

Créer sa propre image

Tester dans REPL l'exemple suivant :

1
>>> monImage = Image("90009:06060:00300:06060:90009")
2
>>> display.show(monImage)

On peut aussi le présenter différemment :

1
>>> monImage = Image("90009:"
2
"06060:"
3
"00300:"
4
"06060:"
5
"06060:")
6
>>> display.show(monImage)
7

Chaque chiffre non nul représente le pixel allumé.

La valeur du chiffre représente l'intensité du pixel allumé.

Afficher des animations

On peut définir une liste (ou un tuple) d'images pour les afficher sous forme d'une animation : essayer dans le REPL

1
>>> display.show(Image.ALL_CLOCKS)
2
>>> display.show(Image.ALL_CLOCKS, delay=1000)
3
>>> display.show(Image.ALL_CLOCKS, delay=100)
4
>>> display.show([Image.SAD, Image.HAPPY], delay=1000, loop=True, wait=False)
5
Complément

Pour arrêter l'animation lorsqu'elle est jouée en tâche de fond, il suffit de faire un display.clear()