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)

Exercice 007

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

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)

Modifier le programme pour calculer et afficher la valeur de l’accélération

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")

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") 

https://python.microbit.org/v/3/reference/temperature

from microbit import *
while True:
    tpre=temperature()
    display.scroll(tpre,delay=300,wait=True)

Modifiez le programme en remplaçant le texte défilant par un smiley dépendant d’un seuil fixé .


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)

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.

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)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *