Aller au contenu

Micro:bit

micro

Afficher

La matrice

La micro:bit dispose d'une matrice de 25 leds. L'intensité d'une led est un entier compris entre 0 et 9 : 0 pour éteinte et 9 pour la luminosité maximale.

Une led de la matrice est repéré par des coordonnées (x, y).

  • L'abscisse x correspond au numéro de la colonne : 0, 1, 2, 3 ou 4
  • L'ordonnée y correspond au numéro de la ligne : 0, 1, 2, 3 ou 4.
Instructions Effets
display.set_pixel(x, y, i) allume la led de coordonnées (x, y) avec l'intensité i
display.get_pixel(x, y) renvoie le niveau de luminosité du pixel de coordonnées (x, y)
display.clear() éteint les 25 leds
sleep(1000) fait une pause de 1000 millisecondes soit 2 secondes

Exemple

from microbit import *

for x in range(5):
    display.set_pixel(x, 0, 9)
    sleep(500)

Affichage

Instructions Effets
display.scroll("un message") fait défiler de droite à gauche les caractères du texte entre guillemets
display.show(Image.HEART) affiche l'image d'un cœur
display.show("un message") affiche un à un les caractères du texte entre guillemets

Exemple

from microbit import *

while True:
    display.scroll('Hello, World!')
    display.show(Image.HEART)
    sleep(2000)

Voici la référence pour les icônes images disponibles.

On peut définir ses propres images de la façon suivantes en indiquant l'intensité des leds.

Exemple

from microbit import *

mon_image = Image('00300:'
                   '03630:'
                   '36963:'
                   '03630:'
                   '00300')

display.show(mon_image)

Boutons

Instructions Effets
button_a.is_pressed() Vaut True si le bouton A est appuyé, False sinon.
button_a.was_pressed() Vaut True si le bouton A est appuyé, False sinon
button_a.get_presses() Renvoie le nombre d'appuis sur le bouton A et remet à zéro le compteur d'appuis

Remarque

button_a.is_pressed() permet de savoir si un bouton est pressé au moment où la méthode est invoquée et button_a.was_pressed() permet de savoir si un bouton a été pressé pendant que le programme était occupé à une autre tâche.

Exemple

from microbit import *

while True:
    if button_a.is_pressed():
        display.show(Image.HAPPY)
    if button_b.is_pressed():
        display.show(Image.SAD)

Accéléromètre

La carte micro:bit comporte un accéléromètre, désigné par accelerometer

Les gestes

Instructions Effets
accelerometer.current_gesture() Renvoie le nom du geste actuel
accelerometer.is_gesture("nom") Vaut True si "nom" correspond au geste actuel, False sinon.
accelerometer.was_gesture("nom") Vaut True si le geste "nom" a été activé depuis le dernier appel, False sinon.

Les différents gestes détectés sont :
geste

"shake" : secouer

Exemple

from microbit import *

while True:
    if accelerometer.was_gesture('shake'):
        display.show(Image.SILLY)
        sleep(2000)
    if accelerometer.was_gesture('face up'):
        display.show(Image.HAPPY)
    if accelerometer.was_gesture('left'):
        display.show('<')
    if accelerometer.was_gesture('right'):
        display.show('>')

Les données

L'accéléromètre permet de connaître l'orientation de la carte selon 3 axes :

  • x : l'inclinaison de gauche à droite
  • y : l'inclinaison d'avant en arrière
  • z : le mouvement haut et bas

acc

Instructions Effets
accelerometer.get_values() affiche un triplet (tuple) des 3 mesures selon x, y, et z.
accelerometer.get_x() renvoie une valeur d'inclinaison gauche - droite
accelerometer.get_y() renvoie une valeur d'inclinaison avant - arrière
accelerometer.get_z() renvoie la mesure de l'accélération selon l'axe z

Exemple

from microbit import *

while True:
    reading = accelerometer.get_x()
    if reading > 20:
        display.show(">")
    elif reading < -20:
        display.show("<")
    else:
        display.show("-")

Température

La carte micro:bit intègre un capteur de température. Il n'est pas très précis dans la mesure où il est soudé sur la carte elle-même, à proximité du processeur ; il est donc perturbé par l'échauffement provoqué par le fonctionnement de la carte. Le phénomène est encore amplifié lorsque la carte est insérée dans un étui de protection.

Instructions Effets
temperature() renvoie la valeur de la température

Exemple

from microbit import *

while True:
    if button_a.was_pressed():
        display.scroll(temperature())

Détecteur de Lumière

L'affichage LED peut également détecter la lumière, agissant comme une entrée de capteur ainsi que comme une sortie.

Instructions Effets
display.read_light_level() renvoie une valeur comprise entre 0 et 255 : plus la valeur est élevée, plus l'environnement est lumineux.

Exemple

from microbit import *

while True:
    if display.read_light_level() < 100:
        display.show(Image.HEART)
    else:
        display.clear()
    sleep(2000)

Compas

Votre micro:bit possède un capteur d'entrée pour mesurer les champs magnétiques, que vous pouvez utiliser comme boussole.

acc

Instructions Effets
compass.calibrate() calibre la boussole
compass.compass.headingheading() renvoie un nombre compris entre 0 et 359 degrés et renvoie -1003 si la boussole n'est pas prête

Exemple

from microbit import *

compass.calibrate()

while True:
    if button_a.was_pressed():
        display.scroll(str(compass.heading()))

Radio

La fonctionnalité radio permet d'échanger des messages avec une ou plusieurs cartes micro:bit.
Il faut au moins deux cartes et chacune comporte un programme (qui peut être commun si les rôles sont symétriques).

Il faut utiliser le module radio.

On peut configurer la radio en indiquent le numéro d'un groupe. Toutes les cartes dans un même groupes peuvent communiquer. Les numéros de groupe vont de 0 à 255.

Instructions Effet
radio.on() Active la fonctionnalité radio
radio.off() Désactive la fonctionnalité radio
radio.send(message) Envoie un message de type chaîne de caractères
radio.receive() Prend pour valeur la chaîne de caractères reçue
radio.config(group=3) permet de communiquer uniquement avec une carte du groupe 3 (par exemple)

Exemple 1

from microbit import *
import radio

radio.config(group=1)
radio.on()

while True:
    if button_a.was_pressed():
        radio.send("A")
        display.show(Image.HAPPY)
        sleep(2000)
        display.clear()
from microbit import *
import radio

radio.config(group=1)
radio.on()

while True:
    message = radio.receive()
    if message == "A":
        display.show(Image.HAPPY)
        sleep(2000)
        display.clear()

Exemple 2

from microbit import *
import radio

radio.config(group=2)
radio.on()

while True:
    temp = temperature()            
    radio.send(str(temp))
    display.scroll(temp)
    sleep(1000)
from microbit import *
import radio

radio.config(group=2)
radio.on()

while True:         
    message = radio.receive()
    if message != None:
        tmp  =  int(message)
        if tmp >10:
            display.show(Image.HAPPY)
            sleep(1000)
            display.clear()

Logo tactile

Le logo doré de la micro:bit V2 sur le devant fonctionne comme un capteur tactile.

Instructions Effets
pin_logo.is_touched() Vaut True si le logo est touché, False sinon.
compass.compass.headingheading() renvoie un nombre compris entre 0 et 359 degrés et renvoie -1003 si la boussole n'est pas prête

Exemple

from microbit import *

while True:
    if pin_logo.is_touched():
        display.show(Image.SURPRISED)

Son

Musique

Pour jouer une musique avec la micro:bit V2, il faut utiliser le module music.

Instructions Effets
music.play(music.PRELUDE) joue la passée en paramètre.
music.play(liste_notes) joue la musique composée de la liste de notes

Voici la référence pour les musiques disponibles.
Vous y trouverez aussi les instructions pour écrire une liste de notes.

Exemple

from microbit import *
import music


liste_notes = ["C4:4", "D4:4", "E4:4", "C4:4", "C4:4", "D4:4", "E4:4", "C4:4","E4:4", "F4:4", "G4:8", "E4:4", "F4:4", "G4:8"]


while True:
    if button_a.was_pressed():
        music.play(music.PRELUDE)
        sleep(1000)
        music.play(liste_notes)

Dire un phrase

Pour faire parler la micro:bit V2, il faut utiliser le module speech.

Instructions Effets
speech.say("Hello") dit le message (en anglais) écrit entre guillemets

Exemple

from microbit import *
import speech

speech.say('Hello world')

Sons expressifs

La micro:bit V2 peut jouer des sons expressifs comme des rires, des bâillements et vous saluer avec un "bonjour".
il faut utiliser le module audio.

Instructions Effets
audio.play(Sound.HAPPY) émet le son expressif indiqué

Les sons expressifs possibles sont : GIGGLE, HAPPY, HELLO, MYSTERIOUS, SAD, SLIDE, SOARING, SPRING, TWINKLE, YAWN.

Exemple

from microbit import *
import audio

while True:
    if button_a.is_pressed():
        display.show(Image.HAPPY)
        audio.play(Sound.HAPPY)
    if button_b.is_pressed():
        display.show(Image.SAD)
        audio.play(Sound.SAD)
    if pin_logo.is_touched():
        display.show(Image.SURPRISED)
        audio.play(Sound.SPRING)

Micro

La micro:bit V2 possède un microphone intégré qui peut détecter les événements forts et silencieux, et également mesurer la force d'un son.

Instructions Effets
microphone.current_event() vaut SoundEvent.LOUD ou SoundEvent.QUIET selon l'intensité du bruit
microphone.set_threshold(SoundEvent.QUIET, 150) définit le seuil pour les événements silencieux en utilisant des nombres de 0 à 255, 0 étant le plus silencieux et 255 le plus bruyant.
microphone.set_threshold(SoundEvent.LOUD, 200) définit le seuil pour les événements bruyants en utilisant des nombres de 0 à 255, 0 étant le plus silencieux et 255 le plus bruyant.
microphone.was_event(SoundEvent.QUIET) Vaut True si le bruit détecté a été silencieux, False sinon.
microphone.was_event(SoundEvent.LOUD) Vaut True si le bruit détecté a été bruyant , False sinon.
microphone.sound_level() renvoie une mesure (0 à 255) du volume des sons.

Exemple 1

from microbit import *
while True:
    if microphone.current_event() == SoundEvent.LOUD:
        display.show(Image.HEART)
        sleep(200)
    if microphone.current_event() == SoundEvent.QUIET:
        display.show(Image.HEART_SMALL)

Exemple 2

from microbit import *

microphone.set_threshold(SoundEvent.LOUD, 150)
start = 0


while True:
    if microphone.was_event(SoundEvent.LOUD):
        start = running_time()
        display.show(Image.TARGET)
    if microphone.was_event(SoundEvent.QUIET):
        if start > 0:
            time = running_time() - start
            start = 0
            display.clear()
            sleep(100)
            display.scroll(time / 1000)

Exemple 3

from microbit import *

lights = Image("11111:"
              "11111:"
              "11111:"
              "11111:"
              "11111")

while True:
    display.show(lights * microphone.sound_level())

D'après https://microbit.org/get-started/user-guide/python/.