mirror of
https://forge.apps.education.fr/blender-edutech/blender-edutech-tutoriels.git
synced 2024-01-27 09:42:33 +01:00
58 lines
2.0 KiB
Python
58 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 declenchees par UPBGE pour le scene 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
|
|
###############################################################################
|
|
|
|
while True:
|
|
accel_x=accelerometer.get_x() # Roulis
|
|
accel_y=accelerometer.get_y() # Tangage
|
|
uart.write(str(accel_x)+","+str(accel_y)+"\n")
|
|
|
|
# Affichage de la l'inclinaison
|
|
if accel_x < -30: # Ouest
|
|
if accel_y <-30:
|
|
display.show(Image.ARROW_NW)
|
|
elif accel_y >30:
|
|
display.show(Image.ARROW_SW)
|
|
else:
|
|
display.show(Image.ARROW_W)
|
|
elif accel_x > 30: # Est
|
|
if accel_y <-30:
|
|
display.show(Image.ARROW_NE)
|
|
elif accel_y >30:
|
|
display.show(Image.ARROW_SE)
|
|
else:
|
|
display.show(Image.ARROW_E)
|
|
else: # Nord ou Sud
|
|
if accel_y < -30 :
|
|
display.show(Image.ARROW_N)
|
|
elif accel_y > 30 :
|
|
display.show(Image.ARROW_S)
|
|
else: # Au centre
|
|
display.show(attente_image)
|
|
sleep(100)
|