mirror of
https://forge.apps.education.fr/blender-edutech/ropy.git
synced 2024-01-27 08:23:20 +01:00
114 lines
4.0 KiB
Python
Executable File
114 lines
4.0 KiB
Python
Executable File
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)
|