TP Python - Programmation de la carte micro:bit BBC
Niveau : 1ère Bac Pro CIEL
Durée estimée : 3 heures
📋 Table des matières
1. Objectifs pédagogiques
2. Compétences visées
3. Matériel nécessaire
4. Exercices
5. Évaluation
🎯 Objectifs pédagogiques
Comprendre le fonctionnement de la carte micro:bit
Maîtriser la programmation des entrées/sorties
Développer des algorithmes avec capteurs et actionneurs
Appliquer les structures de contrôle en Python
Créer des projets interactifs simples
💡 Compétences visées
Compétences techniques :
Programmation en MicroPython
Gestion des LED matricielles
Utilisation des boutons poussoirs
Exploitation de l'accéléromètre
Débogage et test de programmes
Compétences transversales :
Résolution de problèmes
Travail en autonomie
Rigueur algorithmique
Créativité
🔧 Matériel nécessaire
1
Carte micro:bit BBC
Câble USB
Ordinateur avec :
o Éditeur Mu Editor ou VS Code avec extension micro:bit
o Python 3.x installé
🚀 Exercices
Exercice 1 : Découverte de l'environnement
Objectif : Première prise en main de la carte micro:bit
python
# Exercice 1 - Hello World
from microbit import *
# Afficher un message de bienvenue
display.scroll("BONJOUR MICRO:BIT!", delay=80)
# Afficher un smiley
display.show(Image.HAPPY)
sleep(2000)
display.clear()
Questions :
1. Que fait la fonction display.scroll() ?
2. Comment changer la vitesse de défilement ?
3. Quelles autres images prédéfinies sont disponibles ?
Exercice 2 : Contrôle des LED individuelles
Objectif : Maîtriser l'affichage pixel par pixel
python
# Exercice 2 - Contrôle des LED
from microbit import *
def exercice2():
2
# Allumer la LED centrale
display.set_pixel(2, 2, 9)
sleep(1000)
# Créer une croix
for i in range(5):
display.set_pixel(i, i, 5)
display.set_pixel(4-i, i, 5)
sleep(2000)
display.clear()
# Animation de points qui se déplacent
for x in range(5):
for y in range(5):
display.set_pixel(x, y, 9)
sleep(200)
display.set_pixel(x, y, 0)
exercice2()
À faire :
Créer un carré qui clignote 3 fois
Réaliser une animation de votre choix
Exercice 3 : Gestion des boutons poussoirs
Objectif : Programmer les interactions avec les boutons A et B
python
# Exercice 3 - Les boutons poussoirs
from microbit import *
compteur_A = 0
compteur_B = 0
3
def exercice3():
global compteur_A, compteur_B
while True:
# Gestion du bouton A
if button_a.is_pressed():
compteur_A += 1
display.scroll("A:" + str(compteur_A))
sleep(500)
# Gestion du bouton B
if button_b.is_pressed():
compteur_B += 1
display.scroll("B:" + str(compteur_B))
sleep(500)
# Boutons A+B simultanément
if button_a.is_pressed() and button_b.is_pressed():
display.show(Image.SURPRISED)
sleep(1000)
display.clear()
break
exercice3()
Défi : Créer un compteur qui s'incrémente avec A et se décrémente avec B
Exercice 4 : Détection de l'accéléromètre - Inclinaison
Objectif : Utiliser l'accéléromètre pour détecter l'orientation
python
# Exercice 4 - Détection d'inclinaison
from microbit import *
4
def exercice4():
while True:
# Lecture des valeurs de l'accéléromètre
x = accelerometer.get_x()
y = accelerometer.get_y()
z = accelerometer.get_z()
# Affichage selon l'inclinaison
if x > 500:
display.show(Image.ARROW_E)
elif x < -500:
display.show(Image.ARROW_W)
elif y > 500:
display.show(Image.ARROW_S)
elif y < -500:
display.show(Image.ARROW_N)
else:
display.show(Image.DIAMOND)
# Arrêt avec les deux boutons
if button_a.is_pressed() and button_b.is_pressed():
break
exercice4()
Question : Comment pourriez-vous créer un niveau à bulle numérique ?
Exercice 5 : Jeu de réaction avec accéléromètre
Objectif : Créer un jeu utilisant les mouvements
python
# Exercice 5 - Jeu de réaction
from microbit import *
5
import random
def jeu_reaction():
display.scroll("PREPAREZ-VOUS!")
sleep(2000)
# Attente aléatoire avant le signal
attente = random.randint(2000, 5000)
sleep(attente)
# Signal de départ
display.show(Image.TARGET)
temps_debut = running_time()
# Attente du mouvement
while True:
# Détection d'un mouvement brusque
if abs(accelerometer.get_x()) > 1500 or abs(accelerometer.get_y()) > 1500:
temps_reaction = running_time() - temps_debut
display.scroll(str(temps_reaction) + " ms")
break
# Timeout après 5 secondes
if running_time() - temps_debut > 5000:
display.show(Image.NO)
break
sleep(2000)
jeu_reaction()
Amélioration : Ajouter un système de score et plusieurs niveaux
6
Exercice 6 : Compte à rebours gestuel
Objectif : Combiner accéléromètre et affichage
python
# Exercice 6 - Compte à rebours gestuel
from microbit import *
def compte_rebours_gestuel():
display.scroll("SECOUEZ POUR DEMARRER")
# Attente du geste de secousse
while True:
if accelerometer.is_gesture("shake"):
break
# Compte à rebours de 5 à 1
for i in range(5, 0, -1):
display.show(str(i))
sleep(1000)
# Explosion finale
display.show(Image.SKULL)
sleep(2000)
display.clear()
compte_rebours_gestuel()
À développer : Ajouter différents gestes (face up, face down, etc.)
Exercice 7 : Projet final - Détecteur de mouvement
Objectif : Synthétiser toutes les compétences acquises
python
# Exercice 7 - Détecteur de mouvement
from microbit import *
7
def detecteur_mouvement():
# Calibrage de la position initiale
display.show(Image.YES)
sleep(2000)
x_ref = accelerometer.get_x()
y_ref = accelerometer.get_y()
z_ref = accelerometer.get_z()
display.scroll("ACTIVE")
alarme_activee = False
while True:
# Détection de mouvement significatif
if (abs(accelerometer.get_x() - x_ref) > 300 or
abs(accelerometer.get_y() - y_ref) > 300 or
abs(accelerometer.get_z() - z_ref) > 300):
if not alarme_activee:
# Déclenchement de l'alarme
alarme_activee = True
for _ in range(10):
display.show(Image.ANGRY)
sleep(200)
display.clear()
sleep(200)
display.scroll("MOUVEMENT DETECTE!")
# Réarmement avec le bouton A
if button_a.is_pressed():
8
alarme_activee = False
x_ref = accelerometer.get_x()
y_ref = accelerometer.get_y()
z_ref = accelerometer.get_z()
display.show(Image.YES)
sleep(1000)
display.clear()
# Arrêt avec le bouton B
if button_b.is_pressed():
break
detecteur_mouvement()