La carte micro:bit est un ordinateur à carte unique à processeur ARM conçu par la BBC pour l'éducation informatique au Royaume-Uni.
la carte micro::bit peut se programmer en utilisant plusieurs langages : javascript (blocs ou texte), scratch3, LISP, C++ avec l'environnement Arduino mais aussi MicroPython.
Nous nous intéresserons ici uniquement à la programmation de la carte sous MicroPython.
Pour commencer reliez votre carte micro:bit avec un câble USB à votre ordinateur.
Celui-ci va reconnaître votre carte comme étant une clé USB. La LED orange de votre carte est allumée. Puis sur le site https://python.microbit.org/
Cliquez sur Connect
Sélectionnez BBC micro:bit CMSIS-DAP associé puis cliquez sur Connexion.
Tout est prêt à fonctionner !
Voici le code par défaut :
from microbit import *
while True:
display.scroll('Hello, World!')
display.show(Image.HEART)
sleep(2000)
display.scroll
permet de faire défiler un texte, display.show
d’afficher une image et sleep
… de mettre en pause (un nombre de millisecondes)
Voici une liste des images intégrées : https://microbit-micropython.readthedocs.io/fr/latest/tutorials/images.html
Supprimez le texte et remplacez le cœur par une image de la liste.
Il est aussi possible de créer des images personnalisées :
display.set_pixel(x, y, n)
allume le pixel de coordonnées (x,y) avec intensité n (de 1-9), il est ainsi possible de changer la luminosité des 25 leds de la carte et de créer une image.
On peut aussi utiliser :
croix = Image("30003:"
"06060:"
"00900:"
"06060:"
"30003")
display.show(croix)
Copiez/collez ce code dans l’éditeur puis flashez le, que constatez vous ?
Répondez sur votre feuille.
Modifiez le code pour obtenir un carré dont les côtés n’auront pas la même luminosité.
Copiez/collez le code suivant dans l’éditeur puis flashez le :
liste = [Image.HEART,Image.HOUSE,Image.XMAS]
display.show(liste, loop=True, delay=1000)
sleep(2000)
À partir des éléments ci-dessus, construire une animation à partir d’au moins 5 images personnalisées.
Voici un exemple :
# Définition des images
c1 = Image("01010:11111:11111:01110:00100")
c2 = Image("02020:22222:22222:02220:00200")
c3 = Image("03030:33333:33333:03330:00300")
c4 = Image("04040:44444:44444:04440:00400")
c5 = Image("05050:55555:55555:05550:00500")
c6 = Image("06060:66666:66666:06660:00600")
c7 = Image("07070:77777:77777:07770:00700")
c8 = Image("08080:88888:88888:08880:00800")
c9 = Image("09090:99999:99999:09990:00900")
# Définition de l'animation
battementsCoeur = [c1, c2, c3, c4, c5, c6, c7, c8, c9, c8, c7, c5, c4, c3, c2]
# Boucle infinie
while True:
# Affichage de l'animation (100 millisecondes entre chaque image)
display.show(battementsCoeur, delay=100)
Des fonctions permettent de contrôler le bouton A (button_a
) et le bouton B (button_b
).
button_a.was_pressed()
renvoie True
si le bouton A a été pressé depuis le démarrage ou depuis le précédent appel de button_a.was_pressed()
et False
sinon.
Voici un code à compléter :
from microbit import *
#positionnement initial au centre
x = ...
y = ...
while True:
display.set_pixel(x,y,0) # on éteint le pixel
if button_a.was_pressed():
if x ... : # si le pixel n'est pas déjà au bord gauche
x = x ... # on le déplace d'une unité vers la gauche
if button_b.was_pressed():
if x ... : # si le pixel n'est pas déjà au bord droit
x = x ... # on le déplace d'une unité vers la droite
display.set_pixel(x,y,9) # on allume le pixel
sleep(20)
Le BBC micro:bit est munit d’un accéléromètre. Il mesure le mouvement selon trois axes :
while True:
lecture = accelerometer.get_x()
if lecture > 20:
display.show("D")
elif lecture < -20:
display.show("G")
else:
display.show("-")
Copiez/collez ce code dans l’éditeur puis flashez le.
Après avoir observé ce qu’il se passe et en utilisant les indications suivantes, complétez le code ci-dessous qui déplace un point lumineux selon l’inclinaison de la carte.
from microbit import *
x = 2
y = 2
while True:
display.set_pixel(x, y, 0)
acc_x = accelerometer.get_x()
if acc_x > ... :
x = 4
elif acc_x > 150:
x = ...
elif acc_x > -150:
x = ...
elif acc_x > -450:
x = 1
else:
x = ...
display.set_pixel(x, y, 5)
sleep(100)
Il est possible d’utiliser les mêmes propriétés pour l’inclinaison avant/arrière, le code devient :
from microbit import *
x = 2
y = 2
while True:
display.set_pixel(x, y, 0)
acc_x = accelerometer.get_x()
if acc_x > ... :
x = 4
elif acc_x > 150:
x = ...
elif acc_x > -150:
x = ...
elif acc_x > -450:
x = 1
else:
x = ...
acc_y = accelerometer.get_y()
if acc_y > ... :
y = 4
elif acc_y > 150:
y = ...
elif acc_y > -150:
y = ...
elif acc_y > -450:
y = 1
else:
y = ...
display.set_pixel(x, y, 5)
sleep(100)
L’instruction accelerometer.was_gesture("shake")
: renvoie True
si le carte est secouée.
En ajoutant from random import randint
au début du programme. L’instruction nb = randint(1, 6)
donne un nombre entier aléatoire entre 1 et 6 inclus. Créez un programme qui simule un lancer de dé lorsque la carte est secouée.
Recréez les battements du coeur en utilisant des boucles.