Activités de prise en main de la micro:bit

Nous allons voir ici des petits exercices permettant de se familiariser avec la carte micro:bit. Tous ces exercices pourront être faits avec la carte seule mais aussi avec l'émulateur en ligne

Activité 1

Analyse

Analysez ce code. Que fait-i l ?

1
from microbit import *
2
3
while True:
4
    display.show("1")
5
    sleep(500)
6
    display.show(" ")
7
    sleep(500)

Faîtes-le fonctionner sur la carte ou le simulateur en ligne.

Exercice 1 :

modifiez le programme ci-dessus afin qu'il compte en boucle de 0 jusqu'à 9

Indication : on pourra utiliser la commande str(i) qui transforme le nombre i en texte. Ex : str(5) renvoie "5"

Activité 2 : jouer avec les pixels

Analyse

Analysez ce code. Que fait-i l ?

1
from microbit import *
2
3
for x in range(5):
4
    display.set_pixel(x,0,9)
5
    sleep(500)

Explications : la fonction set_pixel allume un point sur l'écran. Elle prend 3 paramètres :

  • les deux premiers sont l'abscisse et l'ordonnée du point (le point de coordonnées 0,0 étant en haut à gauche de l'écran)

  • le dernier paramètre est la luminosité du point entre 0 et 9  : 0 signifie que le point est éteint et 9 est la luminosité maximale.

Faîtes-le fonctionner sur la carte ou le simulateur en ligne.

Exercice 2 :

Modifiez ce programme afin qu'il allume la colonne centrale

Exercice 3 :

Modifiez ce programme afin qu'il allume successivement tous les pixels de l'écran.

Indication : On pourra utiliser 2 boucles for imbriquées l'une dans l'autre. Pensez à changer le nom de la variable de la seconde boucle !

Exercice 4 :

Modifiez le programme précédent afin qu'il allume tous les pixels colonne par colonne, donc en 5 étapes.

Exercice 5 : le ciel étoilé

Modifiez ce programme afin d'obtenir un affichage avec des pixels dont l'illumination est aléatoire.

Indice : pour obtenir un nombre aléatoire entre 0 et 9 :

  • importez la fonction randint depuis la librairie random : from random import randint

  • utilisez randint(0,9) pour choisir un nombre aléatoire entre 0 et 9

ComplémentFaire scintiller les étoiles

En ajoutant une ligne de code au programme précédent, faîtes scintiller les étoiles !

Exercice 6

Analysez la fonction suivante :

1
def carre(l, color):
2
    for x in range(5-l,l):
3
        for y in range(5-l,l):
4
            display.set_pixel(x,y,color)

Dessinez sur votre feuille (1 carreau / pixel) l'écran de la carte lorsque l'on invoque

  • carre(3,9)

  • carre(4,9)

  • carre(5,9)

Vous avez donc 3 écrans à représenter.

Une fois le travail réalisé sur papier, vérifiez-le à l'aide d'un programme sur simulateur ou sur la carte.

Exercice 7 :

En utilisant la fonction carre() ci-dessus, écrire un programme le plus concis possible réalisant l'animation ci-contre.

Activité 3 : jouer avec les boutons

Exercice 8 :

Étudiez le code suivant :

1
from microbit import *
2
3
compteur = 0
4
while True:
5
    if button_a.was_pressed():
6
        display.show(str(compteur))
7
        sleep(1000)
8
        display.clear()

Que fait-il ? vérifiez votre réponse en le testant sur la carte ou le simulateur en ligne.

Exercice 9 :

Modifiez le programme ci-dessus pour

  • que le nombre augmente de 1 à chaque appui sur le bouton A.

  • que le nombre revienne à 0 lorsqu'on appuie sur le bouton B.

  • que le nombre reste affiché en permanence

Exercice 10 :

Étudiez le code suivant :

1
from microbit import *
2
3
x = 0
4
y = 0
5
6
while True:
7
    display.set_pixel(x,y,0)
8
    if button_a.was_pressed():
9
        x = x - 1
10
    if button_b.was_pressed():
11
        x = x + 1
12
    x = max(0, min(x, 4))
13
    display.set_pixel(x,y,9)
14
    sleep(20)

Que fait-il ? vérifiez votre réponse en le testant sur la carte ou le simulateur en ligne.

Expliquez le rôle de la ligne x = max(0, min(x, 4))

Exercice 11 :

Adaptez le programme ci-dessus afin que le point puisse se déplacer verticalement. On va pour cela utiliser l'accéléromètre de la carte :

  • Pour récupérer l'information d'orientation de la carte selon l'axe y, utilisez la ligne dy = accelerometer.get_y()

  • Si la variable dy est plus grande que 600, le point sera sur la 5eme ligne

  • Si la variable dy est plus grande que 300, le point sera sur la 4eme ligne

  • Si la variable dy est plus petit que -600, le point sera sur la 1ère ligne

  • Si la variable dy est plus grande que -300, le point sera sur la 2ème ligne

  • sinon, la carte est à peu près horizontale et le point sera su la ligne centrale.

RemarqueTester le code avec le simulateur

Vous pouvez simuler l'orientation de la carte microbit avec le simulateur en allant dans l'onglet Accelerometer puis en déplaçant le curseur y. Si vote exercice est correctement réalisé, vous devriez alors voir le point rouge se déplacer verticalement.

Exercice 12 :

Modifiez le programme précédent afin de déplacer le pixel exclusivement avec l'accéléromètre. Selon que l'on penche la carte de droite à gauche, ou d'avant en arrière, le point se déplace sur la matrice LED sans avoir recours aux boutons A et B qui deviennent obsolètes.

Activité 4 : Afficher des images

Exercice 13 :

Observez le code suivant. Il réalise une animation.

1
from microbit import *
2
3
imgs = [
4
    Image('90000:00000:00000:00000:00000:'),
5
    Image('90000:09000:00000:00000:00000:'),
6
    Image('90000:09000:00900:00000:00000:'),
7
    Image('90000:09000:00900:00090:00000:'),
8
    Image('90000:09000:00900:00090:00009:')
9
]
10
display.show(imgs, delay=500,loop=True)
11

Expliquez comment sont codées les images ?

Exercice 14 : Réalisez vous même votre propre animation

Recréez l'animation ci-contre sur votre carte. Vous remarquerez que les pixels ne sont pas toujours allumés à pleine intensité !

Exercice 15 :

Observez le fonctionnement du code suivant :

1
from microbit import *
2
from random import choice
3
4
mesImages = [Image('00000:00000:00900:00000:00000:'),
5
        Image('00009:00000:00000:00000:90000:'),
6
        Image('00009:00000:00900:00000:90000:'),
7
        Image('90009:00000:00000:00000:90009:'),
8
        Image('90009:00000:00900:00000:90009:'),
9
        Image('90009:00000:90009:00000:90009:')]
10
rolled = choice(mesImages)
11
display.show(rolled)
12

Remarquez l'emploi de la fonction choice() que l'on a importé de la librairie random. Elle permet d'extraire une image au hasard depuis la liste mesImages.

Modifiez ce programme afin qu'un appui sur le bouton A face rouler le dé.

Exercice 16 : Pierre feuille ciseaux

En utilisant la technique de l'exercice précédant, réalisez un jeu de Pierre-Feuille-Ciseaux. Un appui sur le bouton A affichera une de ces 3 figures au hasard. Vous créerez les images en utilisant la fonction Image() comme dans l’exercice précédent.