Voici quelques projets un peu plus avancés, réalisés uniquement avec la carte Micro:bit (v1 & v2) [Sans accessoires]:
Niveau de difficulté : 2/5
1. Horloge numérique
– Description : Créer une horloge numérique simple qui affiche l’heure et peut être ajustée avec les boutons A et B.
– Langage : MicroPython
Exemple de code :
« `python
from microbit import *
import timehours = 12
minutes = 0while True:
if button_a.is_pressed():
hours = (hours + 1) % 24
sleep(200)
if button_b.is_pressed():
minutes = (minutes + 1) % 60
sleep(200)
current_time = « {:02d}:{:02d} ».format(hours, minutes)
display.scroll(current_time)
time.sleep(60)
minutes += 1
if minutes == 60:
minutes = 0
hours = (hours + 1) % 24
« `
Détails :
- Le code initialise les heures et les minutes à 12:00.
- Les boutons A et B permettent d’ajuster respectivement les heures et les minutes.
- L’affichage de l’heure est mis à jour toutes les 60 secondes.
- L’utilisation de
time.sleep(60)
assure que l’horloge avance d’une minute chaque minute.
2. Détecteur de chutes
– Description : Utiliser l’accéléromètre pour détecter une chute ou une forte secousse et afficher un message d’alerte.
– Langage : MicroPython
Exemple de code :
« `python
from microbit import *while True:
acceleration = accelerometer.get_z()
if acceleration < -1000 or acceleration > 1000:
display.show(Image.NO)
sleep(1000)
else:
display.clear()
sleep(100)
« `
Détails :
- Le code utilise l’accéléromètre pour lire l’accélération sur l’axe Z.
- Si l’accélération dépasse un certain seuil (ici -1000 ou 1000), cela est interprété comme une chute ou une secousse forte, et un « NO » est affiché.
- La condition est vérifiée en continu avec une pause de 100 ms entre chaque vérification.
3. Boussole
– Description : Utiliser le magnétomètre intégré pour créer une boussole qui affiche la direction (N, S, E, W) sur l’écran LED.
– Langage : MicroPython
Exemple de code :
« `python
from microbit import *
import mathcompass.calibrate()
while True:
direction = compass.heading()
if direction < 45 or direction >= 315:
display.show(‘N’)
elif 45 <= direction < 135:
display.show(‘E’)
elif 135 <= direction < 225:
display.show(‘S’)
elif 225 <= direction < 315:
display.show(‘W’)
sleep(500)
« `
Détails :
- Le magnétomètre est calibré avec
compass.calibrate()
. - La direction (en degrés) est lue avec
compass.heading()
. - Selon l’angle, la direction (N, E, S, W) est affichée sur l’écran LED.
4. Jeu du Serpent
– Description : Créer un jeu de serpent simple où le joueur peut contrôler le serpent en utilisant les boutons A et B pour changer de direction.
– Langage : MicroPython
Exemple de code :
« `python
from microbit import *
import randomsnake = [(2, 2)]
direction = (0, 1)
food = (random.randint(0, 4), random.randint(0, 4))def draw():
display.clear()
for segment in snake:
display.set_pixel(segment[0], segment[1], 9)
display.set_pixel(food[0], food[1], 5)def move():
global food
new_head = ((snake[0][0] + direction[0]) % 5, (snake[0][1] + direction[1]) % 5)
if new_head in snake:
return False
snake.insert(0, new_head)
if new_head == food:
food = (random.randint(0, 4), random.randint(0, 4))
else:
snake.pop()
return Truewhile True:
if button_a.is_pressed():
direction = (-direction[1], direction[0])
if button_b.is_pressed():
direction = (direction[1], -direction[0])
if not move():
display.scroll(« Game Over! »)
break
draw()
sleep(500)
« `
Détails :
- Le serpent commence au centre de la matrice LED.
- Les boutons A et B changent respectivement la direction du serpent.
- Le serpent se déplace en ajoutant une nouvelle tête dans la direction actuelle et en supprimant la queue sauf s’il mange de la nourriture.
- Si le serpent se mord la queue, le jeu se termine avec un message « Game Over! ».
5. Affichage de texte en Morse
– Description : Convertir et afficher un message en code Morse sur la matrice LED.
– Langage : MicroPython
Exemple de code :
« `python
from microbit import *morse_code = {
‘A’: ‘.-‘, ‘B’: ‘-…’, ‘C’: ‘-.-.’, ‘D’: ‘-..’, ‘E’: ‘.’,
‘F’: ‘..-.’, ‘G’: ‘–.’, ‘H’: ‘….’, ‘I’: ‘..’, ‘J’: ‘.—‘,
‘K’: ‘-.-‘, ‘L’: ‘.-..’, ‘M’: ‘–‘, ‘N’: ‘-.’, ‘O’: ‘—‘,
‘P’: ‘.–.’, ‘Q’: ‘–.-‘, ‘R’: ‘.-.’, ‘S’: ‘…’, ‘T’: ‘-‘,
‘U’: ‘..-‘, ‘V’: ‘…-‘, ‘W’: ‘.–‘, ‘X’: ‘-..-‘, ‘Y’: ‘-.–‘,
‘Z’: ‘–..’, ‘1’: ‘.—-‘, ‘2’: ‘..—‘, ‘3’: ‘…–‘,
‘4’: ‘….-‘, ‘5’: ‘…..’, ‘6’: ‘-….’, ‘7’: ‘–…’,
‘8’: ‘—..’, ‘9’: ‘—-.’, ‘0’: ‘—–‘
}def morse_to_led(morse):
for symbol in morse:
if symbol == ‘.’:
display.show(Image.HEART)
sleep(200)
display.clear()
sleep(200)
elif symbol == ‘-‘:
display.show(Image.HEART)
sleep(600)
display.clear()
sleep(200)
sleep(200)message = « HELLO »
for char in message:
if char in morse_code:
morse_to_led(morse_code[char])
sleep(600)
« `
Détails :
- Un dictionnaire
morse_code
mappe chaque lettre et chiffre à son code Morse. - La fonction
morse_to_led
affiche chaque symbole Morse (point ou tiret) en allumant une LED pour une durée déterminée. - Le message « HELLO » est converti et affiché en Morse.
Ces projets plus avancés offrent une bonne combinaison d’apprentissage et de plaisir tout en utilisant uniquement la carte Micro:bit ; sans autre accessoires que la carte elle-même.