2022-11-04 16:30:35 +01:00
|
|
|
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
|
|
|
|
###############################################################################
|
|
|
|
|
|
|
|
# ###############################################################################
|
|
|
|
# Initialisation
|
|
|
|
# ###############################################################################
|
|
|
|
|
|
|
|
led_image = Image('00000:00000:00900:00000:00000')
|
2022-11-04 19:37:55 +01:00
|
|
|
display.show(led_image) # Témoin de fonctionnement
|
2022-11-04 16:30:35 +01:00
|
|
|
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)
|