from microbit import uart, sleep from microbit import * import radio ############################################################################### # rp_twins_maqueen-relay.py # @title: Jumeau Maqueen : Programme de la carte microbit du relais # @project: Ropy (Blender-EduTech) # @lang: fr # @authors: Philippe Roy # @copyright: Copyright (C) 2022 Philippe Roy # @license: GNU GPL ############################################################################### ############################################################################### # Initialisation ############################################################################### attente_image = Image("00000:00000:00300:00000:00000") display.show(attente_image) # Témoin de fonctionnement balise_image = Image("33333:36663:36963:36663:33333") radio.config(group=1, queue=4, length=8) radio.on() uart.init(baudrate= 115200) # Initialisation du port série ############################################################################### # Écoute du port série en relayage vers la radio ############################################################################### temps_avancer=10 temps_tourner=10 temps_marquer=100 temps_objectif=100 temps_forer=100 temps_colision=100 while True: while not uart.any(): # Attente d'un message if button_a.is_pressed() or button_b.is_pressed(): # A propos display.scroll ("Ropy : Relais") display.show(attente_image) # Témoin de fonctionnement # pass display.show(' ') # Sinon bug ? msg = uart.readline() # Avancer : AV if msg[0] ==65 and msg[1] ==86 : # Code ASCII : 65 (A) puis 86 (V) display.show(Image.ARROW_N) radio.send("AV") sleep(temps_avancer) # Reculer : RE if msg[0] ==82 and msg[1] ==69 : # Code ASCII : 82 (R) puis 69 (E) display.show(Image.ARROW_S) radio.send("RE") sleep(temps_avancer) # Gauche : GA if msg[0] ==71 and msg[1] ==65 : # Code ASCII : 71 (G) puis 65 (A) display.show(Image.ARROW_W) radio.send("GA") sleep(temps_tourner) # Droite : DR if msg[0] ==68 and msg[1] ==82 : # Code ASCII : 68 (D) puis 82 (R) display.show(Image.ARROW_E) radio.send("DR") sleep(temps_tourner) # Marquer : MA if msg[0] ==77 and msg[1] ==65 : # Code ASCII : 77 (M) puis 65 (A) display.show(balise_image) radio.send("MA") sleep(temps_marquer) # Objectif atteint : OB if msg[0] ==79 and msg[1] ==66 : # Code ASCII : 79 (O) puis 66 (B) display.show(Image.HAPPY) radio.send("OB") sleep(temps_objectif) display.show(attente_image) # Témoin de fonctionnement # Forer : FO if msg[0] ==70 and msg[1] ==79 : # Code ASCII : 70 (F) puis 79 (O) display.show(Image.DIAMOND) radio.send("FO") sleep(temps_forer) # Colision : CO if msg[0] ==67 and msg[1] ==79 : # Code ASCII : 67 (C) puis 79 (O) display.show(Image.SKULL) radio.send("CO") sleep(temps_colision) # Configuration : CF if msg[0] ==67 and msg[1] ==70 : # Code ASCII : 67 (C) puis 70 (F) display.scroll ("CF") radio.send("CF") # Boucle d'écoute spécifique à la configuration while True: while not uart.any(): # Attente d'un message pass display.show(' ') msg = uart.readline() if msg[0] ==70 and msg[1] ==67 : # Code ASCII : 70 (F) puis 67 (C) -> fin de la configuration break # display.scroll (msg[:-1]) radio.send(str(msg[:-1])) # display.scroll ("FC") radio.send("FC") # Fin : FI if msg[0] ==70 and msg[1] ==73 : # Code ASCII : 70 (F) puis 73 (I) radio.send("FI") display.show(attente_image) # Témoin de fonctionnement sleep(400)