60 lines
2.0 KiB
Python

from microbit import uart, sleep
from microbit import *
###############################################################################
# 5-labyrinthe-microbit.py
# @title: Programme pour la carte micro:bit de gestion de la centrale inertielle
# @project: Blender-EduTech - Tutoriel 5 : Labyrinthe à bille - Interfacer avec une carte micro:bit
# @lang: fr
# @authors: Philippe Roy <philippe.roy@ac-grenoble.fr>
# @copyright: Copyright (C) 2023 Philippe Roy
# @license: GNU GPL
#
# Commandes déclenchées par UPBGE pour le scène du labyrinthe
#
###############################################################################
###############################################################################
# Initialisation
###############################################################################
attente_image = Image("00000:00000:00900:00000:00000")
display.show(attente_image) # Témoin de fonctionnement
uart.init(baudrate= 115200) # Initialisation du port série
###############################################################################
# Boucle principale
###############################################################################
msg_str=''
while True:
# Inclinaison de la carte -> UBGE
accel_x=accelerometer.get_x() # Roulis
accel_y=accelerometer.get_y() # Tangage
uart.write(str(accel_x)+","+str(accel_y)+"\n")
# UBGE -> micro:bit (lecture du message)
new_byte = (uart.read(1))
if new_byte == None:
continue
new_char = str(new_byte, 'ascii')
msg_str += new_char
# Affichage de la position de la bille
if ("\n" in msg_str):
display.clear()
if "91" in msg_str: # Chute
display.show(Image.ANGRY)
uart.write("start\n")
elif "92" in msg_str: # Victoire
display.show(Image.HAPPY)
uart.write("start\n")
else: # Position de la bille
display.set_pixel(int(msg_str[0]), int(msg_str[1]), 9)
msg_str = ''
sleep(100)