0% ont trouvé ce document utile (0 vote)
28 vues9 pages

TP Python

Transféré par

Bienvenu BOUM
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
28 vues9 pages

TP Python

Transféré par

Bienvenu BOUM
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

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

Vous aimerez peut-être aussi