1) Boutons A , B et logo tactile
Chacun des boutons A et B est relié (pin 5 et pin 11) au microcontrôleur de la carte microbit.
Il s’agit de micro interrupteurs qui permettent d’interagir avec le programme .
Testez le code ci-dessous
from microbit import * while True: if button_a.was_pressed(): display.show(Image.HAPPY) elif button_b.was_pressed(): display.show(Image.SAD)
sur la microbit V2 il y a aussi une touche tactile (le logo) qui ajoute une interaction supplémentaire avec la carte.
from microbit import * while True: if button_a.was_pressed(): display.show(Image.HAPPY) elif button_b.was_pressed(): display.show(Image.SAD) elif pin_logo.is_touched(): display.show(Image.YES)
Après avoir testé le programme ci-dessus et consulté la documentation sur les boutons,réalisez la simulation d’un coeur battant de fréquence variable.
- on ajoute 0.05s à la péride si un appui sur le bouton B est detecté
- on retranche 0.05s à la péride si un appui sur le bouton A est detecté
- On affiche la période en s et la fréquence en Hz puis en bpm
Corrigé Exercice 007
from microbit import * periode=1000 while True: if button_a.was_pressed(): periode=periode-50 elif button_b.was_pressed(): periode=periode+50 display.show(Image.HEART) sleep(periode//2) display.show(Image.HEART_SMALL) sleep(periode//2) T=periode/1000 f=1/T n=int(60*f) print("T= ",T,"s") print("f= ",f,"Hz") print("n= ",n,"bpm") print()
On peut améliorer le programme pour mieux gérer les appuis successifs en utilisant la fonction get_presses()
from microbit import * periode=1000 while True: periode=periode-50*button_a.get_presses()+50*button_b.get_presses() display.show(Image.HEART) sleep(periode) display.show(Image.HEART_SMALL) sleep(periode) # affichage de la période dans la console print(periode)
2) accéléromètre
https://python.microbit.org/v/3/reference/accelerometer
L’accéléromètre de la carte micro:bit mesure l’accélération selon les trois axes x, y et z, avec des valeurs en milli-g.
Pour obtenir à l’aide d’un script python les valeurs mesurées, on peut utiliser les fonctions:
accelerometer.get_x(), accelerometer.get_y() et accelerometer.get_z().
Par exemple, pour afficher les composantes de l’accélération on pourra utiliser le code ci-dessous :
from microbit import * while True: #mesures ax = accelerometer.get_x() ay = accelerometer.get_y() az = accelerometer.get_z() #affichage des mesures print("ax = ",ax) print("ay = ",ay) print("az = ",az) #saut de ligne print("\n") #pause entre les mesures en ms sleep(2000)
Exercice 008
Modifier le programme pour calculer et afficher la valeur de l’accélération
Corrigé Exercice 008
from microbit import * import math as m while True: ax = accelerometer.get_x() ay = accelerometer.get_y() az = accelerometer.get_z() a=m.sqrt(ax**2+ay**2+az**2) print("a = ",a) sleep(2000)
Si la valeur est affichée en milli-g alors on devrait obtrenir 1000
Afin d’étalonner l’accéléromètre nous allons :
- effectuer 1000 mesures
- afficher la moyenne
- afficher l’écart type
- calculer le coefficient k pour passer de milli-g à ms-2
- afficher la valeur moyenne de g en ms-2
from microbit import * import math as m liste_a=[] for i in range(1000): ax = accelerometer.get_x() ay = accelerometer.get_y() az = accelerometer.get_z() a=m.sqrt(ax**2+ay**2+az**2) liste_a.append(a) sleep(10) moy_a = sum(liste_a) / 1000 sum_ect_moy_a=sum((value - moy_a)**2 for value in liste_a) ect = (sum_ect_moy_a / 999)**.5 k=9.81/moy_a print("moy_a = ",moy_a) print("ect = ",ect) print("a= ",moy_a*k,"ms-2") print("\n")
programme final : étalonnage+ mesures
rom microbit import * import math as m liste_a=[] for i in range(100): ax = accelerometer.get_x() ay = accelerometer.get_y() az = accelerometer.get_z() a=m.sqrt(ax**2+ay**2+az**2) liste_a.append(a) sleep(10) moy_a = sum(liste_a) / 100 sum_ect_moy_a=sum((value - moy_a)**2 for value in liste_a) ect = (sum_ect_moy_a / 99)**.5 k=9.81/moy_a print("moy_a = ",moy_a) print("ect = ",ect) print("a= ",moy_a*k,"ms-2") print("\n")
3 ) Capteur de température
https://python.microbit.org/v/3/reference/temperature
from microbit import * while True: tpre=temperature() display.scroll(tpre,delay=300,wait=True)
Exercice 009
Modifiez le programme en remplaçant le texte défilant par un smiley dépendant d’un seuil fixé .
Corrigé Exercice 009
4 ) Capteur de lumière
La matrice de leds peut être utilisée en capteur de lumière.
https://python.microbit.org/v/3/reference/light-level
On affiche la luminosité dans la console.
from microbit import * while True: lum=display.read_light_level() print(lum) sleep(100)
Exercice 010
Le niveau de luminosité mesuré est une grandeur analogique convertie en valeur numérique codée sur 8 bit. Elle peut donc prendre des valeurs comprises entre 0 et 255. En exploitant les mesures précédentes écrire un programme qui permet d’afficher l’image « HAPPY » si la lumière ambiante est suffisante et « SAD » dans le cas contraire.
Corrigé Exercice 010
from microbit import * seuil=50 while True: lum=display.read_light_level() if lum>seuil: display.show(Image.HAPPY) else: display.show(Image.SAD) sleep(10)