Labo - Micro:bit#

Introduction#

Le BBC micro:bit est un microcontrôleur développé par la BBC pour encourager la programmation dans les écoles en Angleterre. Il s'agit d'un mini-ordinateur programmable notamment en Python. En raison de son prix attractif (~15 CHF), son utilisation est très répandue.

Composants du micro:bit#

Le micro:bit contient tous les composants essentiels d'un ordinateur, à savoir

  • CPU (Central Processing Unit), ou processeur qui est le "cerveau" pouvant être programmé en Python ou dans un autre langage de programmation. C'est lui qui exécute les programmes et pilote tous les autres composants.

  • RAM (Random Access Memory) ou mémoire vive qui permet de stocker les programmes exécutés ainsi que les données traitées par le programme.

  • La carte-mère qui interconnecte tous les composants entre eux (c'est le système nerveux en quelque sorte).

Composants du micro:bit

Important

Faites attention aux points suivants lorsque vous utilisez le micro:bit:

  • Le connecteur micro-USB utilisé pour programmer le micro:bit est fragile. Ne forcez jamais le câble et manipulez-le en douceur pour connecter déconnecter le câble.

  • Évitez de toucher les connecteurs (Edge Connectors) et les connecteurs à l'arrière. Il arrive parfois qu'on soit chargé en électricité statique (très fort voltage), ce qui peut totalement détruire le micro:bit.

  • Manipulez de préférence le micro:bit en le tenant par la tranche.

Exécuter un programme#

Voici la procédure pour exécuter un programme sur le micro:bit:

  1. Connectez le micro:bit au port USB de l'ordinateur
    Faites attention à ne pas abîmer le connecter micro USB du micro:bit, car il est très fragile. Ne portez pas le microbit par le câble.

  2. Connectez l'éditeur au micro:bit
    Cliquez sur l'icône Tools et sélectionnez Connect. Dans la boite de dialogue qui s'est ouverte, sélectionnez l'élément proposé et appuyez sur Connexion.

  3. Exécutez le programme sur le micro:bit
    Appuyez sur le bouton Run.

Exercice 1#

Le programme suivant affiche un sourire sur la matrice LED 5x5 du micro:bit.
Exécutez-le sur le micro:bit.

from microbit import *

smile = Image("00000:09090:00900:90009:09990")
display.show(smile)

Affichage de texte#

Exercice 2#

  1. Exécutez le programme suivant et répondez aux questions:

    • Que fait ce programme?

    • Que fait display.scroll("Salut!")?

    • Que fait sleep(2000)?

  2. Modifiez le programme pour qu'il affiche 4 fois "J'aime l'informatique!".

from microbit import *

display.scroll("Salut!")
sleep(2000)
display.scroll("Comment vas-tu?")

Affichage d'image#

Image matricielle#

Une image matricielle ou bitmap est une image composée de pixels de couleur. Dans le cas du micro:bit, chaque pixel est représenté par une LED qui peut être allumée ou éteinte, ce qui correspond à un dessin en noir et blanc.

Image matricielle

Il est donc possible de créer ses propres images ainsi:

img = Image("09090:"
            "99999:"
            "99999:"
            "09990:"
            "00900")

Le module microbit contient de nombreuses images intégrées, telles que Image.HEART, Image.HEART_SMALL, Image.HAPPY, Image.SAD, Image.PACMAN, Image.GHOST, Image.SKULL, etc.

Exercice 3#

  1. Sans l'exécuter, que fait le programme suivant?

    from microbit import *
    
    img = Image("00000:"
                "09990:"
                "09090:"
                "09990:"
                "00000")
    
    display.show(img)
    
  2. Exécutez le programme sur le micro:bit pour vérifier votre réponse.

  3. Modifiez le programme ci-dessus pour afficher une croix sur le microbit.

Exercice 4#

  1. Écrivez un programme qui affiche l'image de pacman, attend 2 secondes et ensuite affiche l'image d'un fantôme.

  2. Modifiez le programme de la partie 1 pour qu'il change d'images toute les secondes en continu.

from microbit import *

# écrivez le programme ici

Utilisation des boutons A et B#

Le micro:bit contient deux boutons A et B sur sa face avant. Lorsqu'un bouton est appuyé, une action se produira dans votre programme.

La fonction was_pressed() retourne la value True si le bouton a été enfoncé depuis le début du programme ou depuis le dernier appel de cette fonction.

Exemple 1#

from microbit import *

while True:
  if button_a.was_pressed():
    print("Le bouton A a été appuyé.")
  elif button_b.was_pressed():
    print("Le bouton B a été appuyé.")
  else:
    print("Aucun bouton n'a été appuyé.")
  sleep(1000)

Exercice 5#

Écrivez un programme qui affiche une image lorsque le bouton A est appuyé et affiche une autre image lorsque c'est le bouton B.

from microbit import *

# écrivez le programme ici

Exercice 6#

Testez les deux programmes suivants.

  • Quelles différences y a-t-il entre les deux programmes?

  • Que fait la fonction is_pressed()?

from microbit import *

while True:
    if button_a.was_pressed():
        display.show(Image.HAPPY)
    else:
        display.show(Image.SAD)
    sleep(200)
from microbit import *

while True:
    if button_a.is_pressed():
        display.show(Image.HAPPY)
    else:
        display.show(Image.SAD)
    sleep(200)

Changement d'état d'un pixel#

Un pixel est un point dans une image. Sur le micro:bit un pixel est représenté par une LED qui a une coordonnée x et y. La coordonnée (0, 0) se trouve en haut à gauche de l'image.

leds du microbit

La fonction display.set_pixel(x, y, intensite) permet d'appliquer la valeur de l'intensité à la LED de coordonnée (x, y). L'intensité est un nombre entre 0 et 9 où 0 signifie que la LED est éteinte et 9 la luminosité maximale.

Exercice 7#

Écrivez un programme qui allume la LED du milieu de l'image avec la valeur maximale et les LED des quatre coins avec une valeur intermédiaire.

from microbit import *

# écrivez le programme ici

Exercice 8#

  1. Écrivez un programme qui affiche un décompte: 9, 8, ... et lorsque le compteur est arrivé à 0, affichez "BOOM" suivi de l'image d'un crâne. (Image.SKULL).

  2. Ajoutez un son après l'affichage du crâne.

    Astuce

    Le micro:bit permet d'ajouter des sons. Voir le site officiel microbit.org pour les détails.

from microbit import *

# écrivez le programme ici

Exercice 9#

Écrivez un programme qui:

  • allume le pixel du centre de l'écran,

  • si l'utilisateur appuie sur le bouton A, le pixel se déplace à gauche,

  • si l'utilisateur appuie sur le bouton B, le pixel se déplace à droite,

  • si le pixel est au bord de l'écran, il ne se passe rien.

Astuce

La fonction display.clear() permet d'effacer tout l'écran, c'est-à-dire éteindre toutes les LED.

from microbit import *

# écrivez le programme ici

Exercice 10#

  1. Écrivez un programme qui simule un lancer de dé, c'est-à-dire que lorsque vous secouez le micro:bit, un nombre aléatoire entre 1 et 6 doit s'afficher.

  2. Modifiez le programme de la partie 1 pour qu'il affiche la valeur obtenue comme sur un dé: ⚀ ⚁ ⚂ ⚃ ⚄ et ⚅.

Astuce

Le micro:bit contient un accéléromètre qui permet de connaître sa position, ainsi que ses mouvements. La fonction accelerometer.was_gesture('shake') renvoie True si le micro:bit a été secoué.

from microbit import *

# écrivez le programme ici

Exercice 11#

Écrivez un programme qui mesure votre temps de réaction en secondes.

  1. Des images d'animaux défilent aléatoirement sur l'écran. (Image.RABBIT, Image.COW, Image.TORTOISE, Image.DUCK, Image.SNAKE, Image.BUTTERFLY, Image.GIRAFFE)

  2. Lorsqu'une flèche vers la droite Image.ARROW_E apparaît, il faut appuyer le plus rapidement possible sur le bouton B. Le temps de réaction sera calculé et affiché.

  3. Ajoutez une difficulté supplémentaire:
    Lorsqu'une flèche vers la gauche Image.ARROW_W apparaît, il faut appuyer sur le bouton A.

Astuce

La fonction running_time() renvoie le nombre de millisecondes depuis le démarrage du micro:bit.

from microbit import *

# écrivez le programme ici