Aller au contenu

TP1 Micro:bit

devant back

On peut utiliser un simulateur de micro:bit en ligne pour tester les programmes avant de les "flasher" sur la carte. Mais, au lycée, pour programmer la carte micro:bit, on utilise le logiciel Mu installé sur l'ordinateur.

  • Ouvrir le logiciel Mu (pour le trouver : touche Windows et taper mu )

mu

  • Choisir BBC Micro:bit

Exercice 1

  1. Recopier le code qui suit dans l'éditeur du logiciel Mu, puis appuyez sur le bouton mu

    from microbit import *
    
    display.scroll("Bonjour")
    
    La première ligne de ce programme importe la bibliothèque de fonctions micro:bit.
    La deuxième ligne fait défiler un message sur la matrice de leds. Cela n'est exécuté qu'une fois.
    Pour exécuter à nouveau le programme, appuyez sur le bouton reset de la carte.

  2. Après avoir effacer le programme précédent, recopier le programme suivant dans l'éditeur de Mu puis le flasher sur la carte.
    Ce programme utilise une boucle while (tant que) pour faire défiler le message de manière répétée sur l'écran. Les boucles while se répètent tant que la condition spécifiée est vraie. Ici, nous avons dit que la condition est vraie : cela crée une boucle infinie. L'instruction sleep provoque la pause du micro:bit pendant le nombre indiqué en millisecondes.

    from microbit import *
    
    while True:
        display.scroll("Bonjour")
        sleep(5000)
    

  3. Après avoir effacer le programme précédent, recopier le programme suivant dans l'éditeur de Mu puis le flasher sur la carte.
    Ce programme utilise l'instruction break pour sortir de la boucle infinie lorsque le bouton A est enfoncé. Un visage joyeux est alors affiché sur la matrice de leds lorsqu'on sort de la boucle.

    from microbit import *
    while True:
        display.scroll("Bonjour")
        sleep(5000)
        if button_a.is_pressed():
            break
    display.show(Image.HAPPY)
    

Exercice 2

  1. La carte possède deux boutons. En lisant le code ci-dessous, prévoir ce que fait ce programme puis copier le code et le tester.

    from microbit import *
    
    while True:
        if button_a.is_pressed() and button_b.is_pressed():
            display.scroll("AB")
        elif button_a.is_pressed():
            display.scroll("A")
        elif button_b.is_pressed():
            display.scroll("B")
    

  2. L'instruction display.clear() permet d'éteindre les pixels de l'écran. Utiliser les instructions vues précédemment pour réaliser un badge de vote. Plus précisément :

    • L'appui sur le bouton [A] affiche l'image Image.YES
    • Un appui sur le bouton [B] affiche l'image Image.NO
    • Un appui simultané sur [A]+[B] efface l'écran.

Info

Vous trouverez les codes pour toutes les images disponibles ici

Exercice 3

On peut activer et désactiver les leds (pixels) de la matrice en utilisant leurs coordonnées (x, y). L'abscisse x correspond au numéro de la colonne : 0, 1, 2, 3 ou 4. L'ordonnée y correspond au numéro de la ligne : 0, 1, 2, 3 ou 4.

  1. Tester le code ci-dessous qui définit chacune des leds (pixels) de la première ligne ( avec y = 0) avec une luminosité maximum (9).

    from microbit import *
    
    for x in range(5):
        display.set_pixel(x, 0, 9)
        sleep(500)
    
    L'instruction sleep est utilisée ici pour que l'on puisse observer "l'allumage" successif des leds avec la boucle for.
    La méthode set_pixel est définie comme suit : display.set_pixel (x, y, b)
    Il y a 3 arguments. Les deux premiers arguments spécifient la colonne x et la ligne y. La dernière valeur est la luminosité du pixel et doit être un nombre compris entre 0 et 9.
    On rappelle que lors de l'exécution de la boucle for x in range(5): la variable x prend successivement les valeurs 0, 1, 2, 3 et 4.

  2. Adaptez le programme de sorte que la ligne médiane de pixels soit activée au lieu de la ligne supérieure.

  3. Modifiez le programme pour qu'il "éclaire" les pixels de la première colonne au lieu de la première ligne.
  4. En utilisant deux boucles for imbriquées, une pour la coordonnée x et une pour la coordonnée y, "allumer" chacun des pixels, un à la fois, ligne par ligne.
  5. Modifier le programme précédent pour "allumer" les pixels colonne par colonne.

Exercice 4

En réglant la luminosité d'un pixel sur 0, vous le désactivez. Reprendre le code de l'exercice précédent et ajouter à la suite les instructions nécessaires afin de désactiver les pixels dans l'ordre inverse de leur allumage.
Pour cela, vous aurez besoin d'une boucle pour compter en arrière : c'est l'instruction for x in range(4, -1, -1):
Lors de l'exécution de cette boucle, la variable x prend successivement les valeurs 4, 3, 2, 1 et 0.

Info

Plus généralement, lors de l'exécution de la boucle for x in range(a, b, c):, la variable x prend successivement les valeurs a, a+c, a+2c, ..., la dernière valeur est strictement plus petite que b.

Exercice 5

L'instruction display.show(...) est utilisée pour afficher un caractère.
Si on veut afficher une variable x qui contient une valeur entière, il faut la convertir en chaîne de caractère : display.show(str(x))

  1. Utiliser cette instruction pour que réaliser un compteur de 0 à 9, avec un écart d'une seconde entre chaque chiffre affiché. On utilisera une boucle for pour compter de 0 à 9.
  2. Réaliser ensuite un compte à rebours de 9 à 0.

Exercice 6

  1. Étudier le code suivant, prévoir ce qu'il fait puis le tester.

from microbit import *

num = 0
while True:
    if button_a.was_pressed():
        display.show(str(num))
        sleep(250)
        display.clear()
    sleep(50)
2. Modifier le programme précédent de manière à ce que le chiffre affiché s'incrémente de 1 chaque fois qu'on appuie sur le bouton A avant d'être affiché et si le nombre augmenté est égal (==) à 10, réinitialiser à 0 .
3. Écrire un programme qui utilise les deux boutons et faire en sorte que l'utilisateur puisse augmenter le nombre en appuyant sur le bouton A et le diminuer en appuyant sur le bouton B. Il faut que le nombre ne soit jamais inférieur à 0 et jamais supérieur à 9.