Sciences Numériques et Technologiques

Thème 6 : Informatique embarquée et Objets connectés

Initiation à l'utilisation de la carte micro:bit et au python

   

I - Mise en route

Quelques liens

Détails des fonctionnalités de la carte microbit (sur ostralo.net) : numerique.ostralo.net/microbit/

Simulateurs en ligne de la programmation de la carte microbit :

Fichier pdf qui résume le code Python présenté ci-dessous : ProgrammationCarteMicrobit.pdf

La première ligne de code indispensable

Le logiciel que l'on va utiliser pour programmer la carte est le logiciel Th

La carte se programme en python, mais il faut aussi importer le module microbit pour les fonctionnalités spécifiques.

 

Première ligne de code indispensable
import microbit

 

II - Jouer avec l'affichage

II.1 - Afficher un texte ou un nombre

Afficher du texte

L'affichage du texte se fait à l'aide de la fonction display.show() du module microbit.

microbit.display.show('texte')

Travail à faire :

Afficher un texte sur la carte.

Afficher un nombre

L'affichage d'un nombre se fait également à l'aide de la fonction display.show() du module microbit.

microbit.display.show(nombre)

Travail à faire :

Afficher un nombre sur la carte.

II.2 - Afficher une image préprogrammée

Afficher une image prédéfinie

Le module microbit propose une vingtaine d'images prédéfinies.

Matrice de 25 leds avec un coeur
microbit.Image.HEART
Matrice de 25 leds avec une flèche
microbit.Image.ARROW_E
Matrice de 25 leds avec un trait vertical en bas
microbit.Image.CLOCK6
Matrice de 25 leds avec une coche
microbit.Image.YES

L'affichage d'une image prédéfinie se fait à l'aide de la fonction display.show() du module microbit.

microbit.display.show(microbit.Image.nom_image)

Voici quelques noms d'images (à écrire en majuscules) : ANGRY, HOUSE, SAD, ASLEEP...

Travail à faire :

Afficher une image prédéfinie sur la carte.

II.3 - Choisir les leds que l'on allume

Éteindre toutes les leds
microbit.display.clear()
Allumer une led

Le controle de l'allumage de l'une des leds se fait à l'aide de la fonction display.set_pixel(x, y, val)x est la colonne (de 0 à 4), y la ligne (de 0 à 4) et val l'intensité (de 0 à 9).

microbit.display.set_pixel(x, y, val)

Travail à faire :

Afficher une image de votre création sur la carte.

III - Jouer avec le temps

III.1 - Faire une pause

Faire faire une pause au programme

Pour faire faire une pause au programme, il faut utiliser la fonction sleep en indiquant la durée de la pause souhaitée en millisecondes.

microbit.sleep(nb_millisecondes)

Travail à faire :

Faire en sorte qu'une led s'allume progressivement, puis s'éteigne progressivement.

III.2 - Répéter à l'infini

Boucle infinie
while True :
    # block d'instructions que l'on souhaite répéter

Travail à faire n° 1

Afficher alternativement deux images à intervalle de temps régulier.

Travail à faire n° 2

Faire clignoter 1 pixel.

III.3 - Utiliser les variables

Utiliser une variable

Les variables sont indispensables en programmation. Elles permettent de stocker des informations, et de les récupérer à un autre moment du programme.

nom_variable = valeur  # Stocke une valeur dans une variable

Une fois qu'une valeur est stockée dans une variable, le nom de la variable permet de récupérer la valeur qu'elle contient

  Exemple 1 :

x = 2  # Stocke la valeur 2 dans une variable appelée x
y = 0  # Stocke la valeur 0 dans une variable appelée y
som = x + y  # Stocke la somme de x et de y dans une variable appelée som

  Exemple 2 :

x = 2  # Stocke la valeur 2 dans une variable appelée x
x = x + 5  # Ajoute 5 à la variable x

Travail à faire :

Transformer la carte en une horloge à seconde. Autrement dit, la carte doit afficher 1, puis 2, puis 3, etc. On fera en sorte que les valeurs soient affichées 1/2 seconde puis que toutes les leds soient éteintes 1/2 seconde avant d'afficher la valeur suivante...

III.4 - Utiliser les conditions

L'instruction conditionnelle

La structure d'une instruction conditionnelle est la suivante :

if test:
    block d'instructions à exécuter si le test est vrai
else:
    block d'instructions si le test est faux

Le test nécessite l'utilisation d'un opérateur de comparaison comme : >, < ou ==.

Exemple :

a = 5
b = 8
if a > b:
    microbit.display.show(str(a) + ' est plus grand que ' + str(b))
else:
    microbit.display.show(str(a) + ' est plus petit ou égale à ' + str(b))

Travail à faire n° 1 :

Reprendre le travail du III.1 et simplifier le code.

Travail à faire n° 2 :

Programmer un chenillard : le résultat doit donner l'impression qu'une led se déplace horizontalement de la gauche vers la droite, et recommence ainsi...

IV - Jouer avec le hasard

Obtenir un nombre aléatoire

Pour obtenir un nombre aléatoire, il est nécessaire d'utiliser le module random et la fonction randint de ce module. Il faut donc ajouter la ligne suivante en début de programme :

from random import randint

La fonction randint(a, b) renvoie un nombre entier aléatoire entre a et b compris.

from random import randint  # Ligne à mettre en début de programme
nb = randint(min, max)  # stock un nombre entier aléatoire compris entre min et max dans nb

Travail à faire n° 1 :

Afficher un nombre aléatoire entre 1 et 6 puis l'éteindre, au rythme de la seconde.

Travail à faire n° 2 :

Allumer puis éteindre une led choisie aléatoirement par le programme chaque seconde.

V - Jouer avec les boutons

La carte microbit dispose de deux boutons notés A et B. Voici comment les programmer.

V.1 - Tester si l'un des boutons est appuyé

is_pressed

Pour tester si l'un des boutons est appuyé, il faut utiliser la méthode is_pressed() du bouton. Cette méthode renvoie True (vrai) ou False (faux), on peut donc l'utiliser dans une instruction conditionnelle.

Exemple avec le bouton A :

while True:
    if microbit.button_a.is_pressed():
        # block des instructions qui s'exécuteront si le bouton est appuyé
    else:
        # block des instructions qui s'exécuteront si le bouton n'est pas appuyé 

Travail à faire n° 1 :

Faire en sorte que l'image HAPPY soit affichée quand le bouton est appuyé et que l'image SAD le soit quand le bouton n'est pas appuyé.

Travail à faire n° 2 :

Faire en sorte que le bouton A est appuyé, la colonne de led de gauche s'allume et lorsque le bouton B est appuyé, la colonne de led de droite s'allume.

V.2 - Tester si l'un des boutons a été appuyé

was_pressed

La méthode was_pressed() permet de tester si le bouton a été appuyé depuis le dernier appel à cette fonction. Cette méthode renvoie True (vrai) ou False (faux), on peut donc l'utiliser dans une instruction conditionnelle.

Exemple avec le bouton A :

if microbit.button_a.was_pressed():
    # block des instructions qui s'exécuteront si le bouton a été appuyé
else:
    # block des instructions qui s'exécuteront si le bouton n'a pas été appuyé

Travail à faire n° 1 :

Faire un compteur de clic, autrement dit, faire en sorte que la carte augmente de 1 le nombre affiché lorsqu'on clique sur le bouton A et le diminue de 1 lorsqu'on clique sur le bouton B.

Travail à faire n° 2 :

Faire en sorte que chaque fois que l'on appuie sur le bouton A, l'image affichée passe de HAPPY à SAD puis à de nouveau à HAPPY et ainsi de suite.

VI - Jouer avec tout à la fois

Travail à faire n° 1 :

Faire en sorte qu'une led aléatoire s'allume à chaque clic sur un bouton.

Travail à faire n° 2 :

Transformer la carte en dé. Autrement dit, chaque fois que l'on appuie sur le bouton A, un nombre aléatoire entre 1 et 6 s'affiche.

Prolongement : on pourra remplacer le nombre par une image correspondant de la face du dé : ⚀, ⚁, ⚂, ⚃, ⚄ ou ⚅.

Travail à faire n° 3 :

Reprendre le chenillard, mais faire en sorte que les boutons permettent de changer le sens de défilement (Bouton A = défilement vers la gauche. Bouton B = défilement vers la droite).

Travail à faire n° 4 :

Allumer la led centrale et faire en sorte que le bouton A déplace la led d'une colonne vers la gauche et la bouton B d'une colonne vers la droite.