TP1 Micro:bit
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 )
- Choisir BBC Micro:bit
Exercice 1
-
Recopier le code qui suit dans l'éditeur du logiciel Mu, puis appuyez sur le bouton
La première ligne de ce programme importe la bibliothèque de fonctions micro:bit.from microbit import * display.scroll("Bonjour")
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. -
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 bouclewhile
(tant que) pour faire défiler le message de manière répétée sur l'écran. Les boucleswhile
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'instructionsleep
provoque la pause du micro:bit pendant le nombre indiqué en millisecondes.from microbit import * while True: display.scroll("Bonjour") sleep(5000)
-
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'instructionbreak
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
-
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")
-
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.
- L'appui sur le bouton [A] affiche l'image
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.
-
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).
L'instructionfrom microbit import * for x in range(5): display.set_pixel(x, 0, 9) sleep(500)
sleep
est utilisée ici pour que l'on puisse observer "l'allumage" successif des leds avec la bouclefor
.
La méthodeset_pixel
est définie comme suit :display.set_pixel (x, y, b)
Il y a 3 arguments. Les deux premiers arguments spécifient la colonnex
et la ligney
. 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 bouclefor x in range(5):
la variablex
prend successivement les valeurs 0, 1, 2, 3 et 4. -
Adaptez le programme de sorte que la ligne médiane de pixels soit activée au lieu de la ligne supérieure.
- Modifiez le programme pour qu'il "éclaire" les pixels de la première colonne au lieu de la première ligne.
- 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. - 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))
- 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. - Réaliser ensuite un compte à rebours de 9 à 0.
Exercice 6
- É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)
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.