Pendant le TP, on va utiliser des fonctions MicroPython pour contrôler et lire les informations depuis les périphériques du dispositif Micro:bit.
En continuation, on va pressente les fonctions principales associe pour chaque périphérique intégrée et quelques exemples pour les utiliser.
Pour utiliser les fonctions d’interaction avec les périphériques on doit importer la bibliothèque microbit.
Exemple:
from microbit import *
Le dispositif a une matrice de LEDs qui peut être contrôle individuellement ou tous ensemble pour pouvoir faire des dessins dur l'écran. Chaque LED de la matrice est caractérisé par deux coordonne qui représente la ligne et la colonne ou il se trouve.
En utilisant l'objet display, on peut appelle les fonctions suivantes:
x
, y
(0 - le LED est complètement éteint, 9 - le LED est complètement éclairé);x
, y
à la valeur wave
dans la plage 0-9;Dans l'exemple ci-dessous, on va faire vaciller le LED du centre de la matrice une fois par seconde.
from microbit import * while True: display.set_pixel (2, 2, 9) sleep (1000) #sleep for 1000 milliseconds display.set_pixel (2, 2, 0) sleep (1000)
Dans le schéma du microcontrôleur présenté ci-dessus, on peut voir que le micro:bit a trois boutons.
Le bouton au dos est pour reset. Si, ce bouton est appuie pour cinq secondes, le microcontrôleur arrêtera d’exécuter le programme chargé. En même temps, si le bouton de reset est pressé brièvement, le programme qui fait flash sur la carte sera réinitialisé.
Sur le devant du dispositif il y a deux butons A et B, qui peut-être accéder dans le code avec buton_a et button_b. Ces boutons ont une méthode is_pressed(), qui va retourne True si le bouton est appuyé, si non la méthode va retourne False.
Dans cet exemple on va utilise le conditionnel “if”.
Le programme suivant va afficher sur l'écran du micro:bit la lettre “A” si le bouton A etre appuie, repsectivment la lettre “B” si le buton B va atre appuye. Si aucun button va etre appuye, sur l'ecran on va avoir une image avec un émoticône confuse.
Le programme suivant va afficher sur l'écran du micro:bit la lettre “A” si le bouton A été appuyé, respectivement la lettre “B” si le bouton B été appuyé. Si aucun bouton sera appuyé, sur l'écran on va avoir une image avec une émoticône confuse.
from microbit import display, button_a, button_b, Image while True: #infinite looop if button_a.is_pressed(): #check if the button A is pressed display.scroll("A") elif button_b.is_pressed(): #check if the button B is pressed display.scroll("B") else: display.show(Image.CONFUSED)
Micro:bit est capable de reconnaître des gestes comme l'inclination ou la secousse. Au dos du microcontrôleur, en bas, il a un chip petit, qui représenter l'accéléromètre, il s' appelle "Compass and Accelerometer”. Cela peut mesurer l'accélération dans toutes les trois dimensions, comme l'accélération gauche-droite, l'accélération avant-arrière et l'accélération haut-bas.
Qu'est-ce qu'un accéléromètre? Un accéléromètre a le but de mesurer et analyser des accélérations linaires et angulaires, par exemple, les voitures modernes utilisent un accéléromètre qui détecte un accident pour déployer des airbags.
Fontions pour lire les valuers du accéléromètre sont:
up
, down
, left
, right
, face up
, face down
, freefall
, 3g
, 6g
, 8g
, shake
Dans cet exemple on va utilise l'accéléromètre en affichant sur l'écran du micro:bit une carre s’il est incline vers gauche, un triangle s’il est incline vers droite et un diamant s’il il est mis face haut.
from microbit import display, accelerometer, Image while True: if accelerometer.current_gesture() == "left": display.show(Image.SQUARE) elif accelerometer.current_gesture() == "right": display.show(Image.TRIANGLE) elif accelerometer.current_gesture() == "face up": display.show(Image.DIAMOND) else: display.clear()
Le capteur pour la boussole détecte les champs magnétiques de la Terre et est mis, aussi, au dos du micro:bit, comme l’accéléromètre. Cela est utilise pour détecter si un aimant est autotour de dispositif ou pour navigation, il peut montre les directions Nord, Sud, Est et Ouest.
Fonctions utiles pour lire les valeurs de la boussole:
Dans cet exemple on va voir comme le micro:bit peut-être utilise comme une boussole.
from microbit import display, compass compass.calibrate() while True: degrees = compass.heading() if degrees < 45 or degrees > 315: display.show('N') elif degrees < 135: display.show("E") elif degrees < 225: display.show("S") elif degrees < 315: display.show("W") else: display.show(' ')
Micro:bit a un capteur tactile mis sur logo, qui est utilise comme input. Il peut interagir avec l'utilisateur comme en utilisant bouton.
Dans cet exemple on vérifie si le senseur est touche, dans ce cas on va afficher le message “Hello”, si non, l’écran ne s’allumera pas.
from microbit import display, pin_logo while True: if pin_logo.is_touched(): display.scroll("Hello") else: display.clear() #display stays empty
Le capteur de température enregistre avec une approximation la température autour de micro:bit. Le capteur de lumière peut enregistrer le niveau de lumière par les LED.
Fonctions utiles:
Dans l'exemple suivant on va afficher la température si le bouton A été appuyé. Si le micro:bit va enregistre la lumière fort sur l'écran va apparaitre une image du diamant. Pour tester le capteur de lumière, dans cet exemple vous pouvez prendre votre portable, allume la lampe de poche et mettre sa lumière vers le dispositif.
from microbit import * while True: if button_a.was_pressed(): display.scroll(temperature()) #display the temperature elif display.read_light_level() > 100: #check the light level display.show(Image.DIAMOND) else: display.clear()
BBC micro:bit V2 a le microphone fixé à l'arrière et à la face, vous pouvez voir l'indicateur, qui s'allume lors de lui accès. Cela peut mesurer le niveau du son autotour de dispositif et il peut détecter les son haut ou plus bas. Aussi à l'arrière il y a sur PCB un un haut-parleur(speaker) magnétique d’où provient le son comme output.
Cet exemple va simule une bougie. Après l’importation des bibliothèques, est déclaré un compteur nommé lit, qui a initialement la valeur True. Après, on vérifie s’il y a été enregistré un son fort en utilisant la méthodewas_event(), qui efface également l’historique des événements sonores avant de retour. Si la méthode va retourne True on va change la valeur du compteur lut. Dans le cas où la bougie est allumée une image simulant une bougie apparaîtra sur l’écran et qui va faire la flamme scintille à une position aléatoire de 1 à 3.
Pour créer une image il y a nécessaire de donner des valeurs pour chaque pixel de l'écran. La valeur 0 signifie que la LED est éteindre. Les valeurs 1 et 9(la valeur maximum) montre le niveau de luminosité du pixel. Pour représenter une ligne les valeurs sont entre ”” et elle se finit avec : . Dans cet exemple , on peut voir que chaque ligne du Image() représente la position des LED sur l'écran physique du micro:bit. Par conséquent, en analysant la première ligne, qui suggère la flamme, toutes les LED sont éteintes sauf celle en position 3, qui a le pixel réglé sur la luminosité maximale. Les autres lignes sont similaires pour former le reste de la bougie, les positions 1 et 5, le pixel est réglé sur 0 et le reste sur 9.
Pour créer le effet scintillement on utilise la méthode set_pixel(), qui a comme paramètres la ligne, la colonne et la valeur du pixel.
from microbit import display, microphone, SoundEvent, Image, sleep import random lit = True while True: if microphone.was_event(SoundEvent.LOUD): #check if a loud sound was lit = not lit sleep(500) if lit: display.show(Image( #candle image "00900:" "09990:" "09990:" "09990:" "09990")) sleep(150) flicker = random.randint(1, 3) if flicker != 2: display.set_pixel(2,0,0) display.set_pixel(flicker,0,9) sleep(150) else: display.clear()