Un système informatique embarqué collecte des informations du monde réel à l'aide de capteurs, les traite dans un microprocesseur puis agit sur le monde réel par le biais d'actionneurs (ici seulement la matrice de LED). Le traitement des informations est contrôlé par un programme qui peut interagir avec l'homme à travers une Interface Homme Machine (IHM).
Vidéo d'introduction : il est possible d'activer les sous-titres en français en cliquant sur la roue dentée des paramètres.
La carte micro:bit peut se programmer en langage Python grâce cette interface.
La carte aura été auparavant reliée à l'ordinateur via le cable USB et connectée en cliquant sur le bouton CONNECT
.
FLASH
.
.py
sur le PC dans votre répertoire de travail.
show
par scroll
. Transférer à nouveau le programme à la carte.
from microbit import *
display.show('hello SNT ', delay=300, loop=True)
Il est possible d'installer sur vos ordinateurs personnels MuEditor (guide d'installation)
La carte Micro:Bit présente sur sa face avant une matrice (un tableau) de 25 LEDS qui peuvent être allumées indépendamment les unes des autres. Ainsi il est possible d'afficher des dessins tout prêts ou de personnaliser l'affichage.
La ligne de code Python permettant d'afficher un symbole est :
display.show(Image.SMILE)
(pour afficher le smiley par exemple)
D'autres symboles sont disponibles sur cette page.
sleep()
permet de faire une pause. Le temps de pause en millisecondes (millièmes de secondes) s'insère entre les parenthèses.
Bien sûr, il est possible de créer sa propre image sur le micro:bit. C'est facile.
Chaque pixel LED sur l'affichage physique peut prendre une parmi dix valeurs. Si un pixel prend la valeur 0 (zéro) c'est qu'il est éteint. Littéralement, il a une luminosité de zéro. En revanche, s'il prend la valeur 9 il est à la luminosité maximale. Les valeurs de 1 à 8 représentent des niveaux de luminosité entre éteint (0) et « à fond » (9).
from microbit import *
bateau = Image("05050:"
"05050:"
"05050:"
"99999:"
"09990")
display.show(bateau)
(Une fois lancé, l'appareil devrait afficher un bateau à voile dont le mât est moins brillant que la coque).
Chaque ligne de l'affichage physique est représentée par une ligne de nombres se terminant par : et entourée de " guillemets doubles.
Chaque nombre indique une luminosité. Il y a cinq lignes de cinq nombres donc il est possible de spécifier la luminosité individuelle de chacune des cinq LED sur chacune des cinq lignes sur l'affichage physique.
C'est ainsi qu'on créé une image.
Remarque : Avec l'instruction display.set_pixel(x,y,l)
il est possible de régler la luminosité des pixels de l'affichage individuellement de 0 (désactivé) à 9 (luminosité maximale). x et y varient de 0 à 4.
Exemple : display.set_pixel(1, 4, 9)
allume la 2ème LED de la 5ème ligne
display.set_pixel(x,y,l)
et sleep(1000)
, faire clignoter le haut des mâts du bateau.
button_a.is_pressed()
renvoie True
si le bouton est effectivement appuyé ;
button_a.was_pressed()
renvoie True
si le bouton a été appuyé
button_a.get_pressed()
renvoie le nombre de fois que le bouton a été appuyé.
a
dans le nom par b
.
Proposer un programme qui affiche un smiley qui sourit 😊 lorsqu'on appuie sur le bouton A et un smiley triste 🙁 lorsqu'on appuie sur le bouton B.
Aide : Dans une une structure de boucle infinie (while True
), inclure une structure conditionnelle (if
appui bouton A -> action 😊 elif
appui bouton B -> action 🙁).
A partir des parties précédentes, réaliser un programme qui simulera un lancer de déà 6 faces. Le programme devra choisir un chiffre entre 1 et 6 au hasard (On utilisera la fonction random qu'il faudra importer via l'instruction import random
).
Un bouton servira à effectuer le lancer de dé tandis que l'autre permettra d'effacer l'écran.
Améliorations possibles :
En inversant la fonctionnalité des LEDs d'un écran pour devenir un point d'entrée, l'écran LED devient un capteur de lumière basique, permettant de détecter la luminosité ambiante.
La commande display.read_light_level()
retourne un entier compris entre 0 et 255 représentant le niveau de lumière.
Compléter le programme ci-contre pour qu'il affiche une image de lune si on baisse la luminosité (en recouvrant la carte avec sa main par exemple) et un soleil sinon.
Amélioration possible : On peut créer un programme qui affiche le niveau de luminosité et le tester avec la LED d'un téléphone portable ou une lampe-torche par exemple. Plus la luminosité sera élevée, plus il y aura de LEDs affichées sur la matrice de LED.
from microbit import *
soleil = Image("90909:"
"09990:"
"99999:"
"09990:"
"90909:")
lune = Image("00999:"
"09990:"
"09900:"
"09990:"
"00999:")
while True:
if display.read_light_level()>"Compléter ici":
display.show(soleil)
else:
display.show("Compléter ici")
sleep(10)
Le micro:bit n'a pas un capteur de température dédié. Au lieu de cela, la température fournie est en fait la température de la puce de silicium du processeur principal.
Comme le processeur chauffe peu en fonctionnement (c'est un processeur ARM à grande efficacité), sa température est une bonne approximation de la température ambiante.
L'instruction temperature()
renvoie la température de la carte micro:bit en degrés Celsius.
display.scroll()
Un accéléromètre mesure l'accélération de la carte micro:bit ; ce composant détecte quand la micro:bit est en mouvement. Il peut aussi détecter d'autres actions (gestes), par exemple quand elle est secouée, inclinée ou qu'elle tombe.
Les smartphones utilisent un accéléromètre pour savoir dans quel sens afficher les images sur son écran. Des manettes de jeux contiennent aussi des accéléromètres pour aider à tourner et à se déplacer dans les jeux.
La carte micro:bit est munie d'un accéléromètre. Il mesure le mouvement selon trois axes :
Dans l'exemple suivant à essayer, l'instruction accelerometer.get_x()
permet de détecter un mouvement de gauche à droite en renvoyant un nombre compris entre -1023 et 1023; 0 étant la position "d'équilibre"
from microbit import *
while True:
abscisse = accelerometer.get_x()
if abscisse > 500:
display.show(Image.ARROW_E)
elif abscisse < -500:
display.show(Image.ARROW_W)
else:
display.show("-")
La boussole détecte le champ magnétique de la Terre, nous permettant de savoir quelle direction la micro:bit indique. La boussole doit être étalonnée avant de pouvoir être utilisée. Pour cela, on utilise compass.calibrate()
qui exécute un petit jeu :
La fonction compass.heading()
donne le cap de la boussole sous la forme d'un entier compris entre 0 et 360, représentant l'angle en degrés, dans le sens des aiguilles d'une montre, avec le nord égal à 0.
from microbit import *
#Calibrage boussole
compass.calibrate()
#boucle
while True:
angle = compass.heading()
if 315 <= angle or angle <= 45:
display.show("N")
elif 45 < angle and angle <= 135:
display.show("E")
# compléter les autres cas ici
#attente d'une seconde
sleep(1000)
Votre programme devra faire interagir l'affichage avec la grandeur captée à votre convenance.
Écrire préalablement votre cahier des charges et le faire valider par l'enseignant.