🛠 Mesurer le niveau sonore avec le micro MEMS
Objectifs
Utiliser le microphone MEMS Knowles de la V2 (broches internes MIC_IN P0.05 et RUN_MIC P0.20, avec LED d'activité) pour lire le niveau sonore et déclencher des réactions sur seuil. Échelle MicroPython : 0 à 255.
Matériel
- 1 carte micro:bit V2 (le micro est absent de la V1)
- 1 câble micro-USB pour le flash
- Source de son test : applaudissements, sifflet, application générateur de bruit
Code complet
from microbit import *
# Seuil LOUD sur l'échelle 0-255
microphone.set_threshold(SoundEvent.LOUD, 150)
barre = [Image("00000:00000:00000:00000:11111"),
Image("00000:00000:00000:11111:11111"),
Image("00000:00000:11111:11111:11111"),
Image("00000:11111:11111:11111:11111"),
Image("11111:11111:11111:11111:11111")]
while True:
niveau = microphone.current_volume # 0..255
idx = min(4, niveau // 52)
display.show(barre[idx])
if microphone.was_event(SoundEvent.LOUD):
display.show(Image.SURPRISED)
sleep(400)
if button_a.was_pressed: # calibrer le seuil
seuil = microphone.current_volume + 30
microphone.set_threshold(SoundEvent.LOUD, seuil)
display.scroll(str(seuil))
sleep(50)
current_volume donne le niveau instantané ; set_threshold + was_event évitent de poller en continu pour les événements « clap ». La LED d'activité près du micro s'allume dès que le micro est actif.
Vérification attendue
La barre LED monte progressivement avec le bruit, la carte fait « tête surprise » sur chaque applaudissement, et A remonte le seuil au-dessus du niveau ambiant mesuré à cet instant.
Erreurs fréquentes
- Seuil réglé trop bas : tout déclenche LOUD en permanence ; trop haut : plus rien ne passe.
- Attendre le même comportement sur V1 :
microphonen'existe pas, AttributeError. - Confondre
current_volume(instantané) et l'événement seuil (ponctuel, s'efface après lecture). - Masquer le micro avec les doigts pendant la mesure : le trou du boîtier est petit, le niveau chute.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
coeur.pyMicroPythonboutons.pyMicroPythonpodometre.pyMicroPythonlumiere.pyMicroPythonmusique.pyMicroPythonradio_ping.pyMicroPython