ropy/twins/rp_maqueen-robot.py

114 lines
4.0 KiB
Python
Raw Normal View History

from microbit import *
from machine import *
import music
import radio
###############################################################################
# rp_maqueen-robot.py
# @title: Jumeau Maqueen : Programme de la carte microbit du robot
# @project: Ropy (Blender-EduTech)
# @lang: fr
# @authors: Philippe Roy <philippe.roy@ac-grenoble.fr>
# @copyright: Copyright (C) 2022 Philippe Roy
# @license: GNU GPL
#
# Programme d'execution des ordres de la manette pour le robot Maqueen#
###############################################################################
# ###############################################################################
# Initialisation
# ###############################################################################
led_image = Image('00000:00000:00900:00000:00000')
display.show(led_image) # Témoin de fonctionnement
radio.config(group=1, queue=1, length=8)
radio.on()
# ###############################################################################
# Boucle principale
# ###############################################################################
while True:
v_avancer = 50
v_tourner = 50
v_tourner_faible = 25
# Lecture de l'ordre
ordre=radio.receive()
# Avancer
if ordre=="AV":
display.show(Image.ARROW_N)
pin8.write_digital(1) # Led avant gauche
pin12.write_digital(1) # Led avant gauche
i2c.write(0x10, bytearray([0x00, 0x0, v_avancer])) # Moteur gauche
i2c.write(0x10, bytearray([0x02, 0x0, v_avancer])) # Moteur droit
# Reculer
if ordre=="RE":
display.show(Image.ARROW_S)
pin8.write_digital(1) # Led avant gauche
pin12.write_digital(1) # Led avant gauche
i2c.write(0x10, bytearray([0x00, 0x1, v_avancer])) # Moteur gauche
i2c.write(0x10, bytearray([0x02, 0x1, v_avancer])) # Moteur droit
# Gauche
if ordre=="GA":
display.show(Image.ARROW_W)
pin8.write_digital(1) # Led avant gauche
pin12.write_digital(0) # Led avant droit
i2c.write(0x10, bytearray([0x00, 0x0, 0])) # Moteur gauche
i2c.write(0x10, bytearray([0x02, 0x0, v_tourner])) # Moteur droit
# Avancer + gauche
if ordre=="AG":
display.show(Image.ARROW_W)
pin8.write_digital(1) # Led avant gauche
pin12.write_digital(0) # Led avant droit
i2c.write(0x10, bytearray([0x00, 0x0, v_tourner_faible])) # Moteur gauche
i2c.write(0x10, bytearray([0x02, 0x0, v_tourner])) # Moteur droit
# Reculer + gauche
if ordre=="RG":
display.show(Image.ARROW_W)
pin8.write_digital(1) # Led avant gauche
pin12.write_digital(0) # Led avant droit
i2c.write(0x10, bytearray([0x00, 0x1, v_tourner_faible])) # Moteur gauche
i2c.write(0x10, bytearray([0x02, 0x1, v_tourner])) # Moteur droit
# Droite
if ordre=="DR":
display.show(Image.ARROW_E)
pin8.write_digital(0) # Led avant gauche
pin12.write_digital(1) # Led avant droit
i2c.write(0x10, bytearray([0x00, 0x0, v_tourner])) # Moteur gauche
i2c.write(0x10, bytearray([0x02, 0x0, 0])) # Moteur droit
# Avancer + droite
if ordre=="AD":
display.show(Image.ARROW_W)
pin8.write_digital(1) # Led avant gauche
pin12.write_digital(0) # Led avant droit
i2c.write(0x10, bytearray([0x00, 0x0, v_tourner])) # Moteur gauche
i2c.write(0x10, bytearray([0x02, 0x0, v_tourner_faible])) # Moteur droit
# Reculer + droite
if ordre=="RD":
display.show(Image.ARROW_W)
pin8.write_digital(1) # Led avant gauche
pin12.write_digital(0) # Led avant droit
i2c.write(0x10, bytearray([0x00, 0x1, v_tourner])) # Moteur gauche
i2c.write(0x10, bytearray([0x02, 0x1, v_tourner_faible])) # Moteur droit
# Stop
if ordre=="ST":
display.show(led_image) # Témoin de fonctionnement
pin8.write_digital(0) # Led avant gauche
pin12.write_digital(0) # Led avant droit
i2c.write(0x10, bytearray([0x00, 0x0, 0]))
i2c.write(0x10, bytearray([0x02, 0x1, 0]))
# Cadencement
# sleep(10)