Micro:Bit – Intermédiaire : Mini-Projets

Facebook Twitter Instagram YouTube Twitch

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 time

hours = 12
minutes = 0

while 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 math

compass.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 random

snake = [(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 True

while 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.

Leave a Reply