mirror of
https://forge.apps.education.fr/blender-edutech/ropy.git
synced 2024-01-27 08:23:20 +01:00
Jumeau numérique Maqueen suite
This commit is contained in:
parent
cdba65ab3b
commit
eba792b148
BIN
ropy-29.blend
BIN
ropy-29.blend
Binary file not shown.
@ -1,6 +1,6 @@
|
|||||||
<data>
|
<data>
|
||||||
<config>
|
<config>
|
||||||
<speed>4.0</speed>
|
<speed>1.0</speed>
|
||||||
<sound>False</sound>
|
<sound>False</sound>
|
||||||
<cam>
|
<cam>
|
||||||
<worldPosition.x>0.0057830810546875</worldPosition.x>
|
<worldPosition.x>0.0057830810546875</worldPosition.x>
|
||||||
@ -14,7 +14,7 @@
|
|||||||
</config>
|
</config>
|
||||||
<mission>
|
<mission>
|
||||||
<current>1</current>
|
<current>1</current>
|
||||||
<level>2</level>
|
<level>1</level>
|
||||||
</mission>
|
</mission>
|
||||||
<upgrade>
|
<upgrade>
|
||||||
<battery>False</battery>
|
<battery>False</battery>
|
||||||
|
@ -80,8 +80,10 @@ card_description.update({"radar-card" : [rp_radar_title, rp_radar_text, rp_radar
|
|||||||
# Jumeau numérique
|
# Jumeau numérique
|
||||||
rp_twins_title="Jumeau numérique"
|
rp_twins_title="Jumeau numérique"
|
||||||
rp_twins_text=""" Via une liaison série, Ropy peut être \n le jumeau numérique d'un robot réel. \n
|
rp_twins_text=""" Via une liaison série, Ropy peut être \n le jumeau numérique d'un robot réel. \n
|
||||||
rp_jumeau(port, vitesse) \n -> Active la liaison série sur le port \n et à la vitesse (baud) spécifiés. \n
|
rp_jumeau(port, vitesse) \n -> Active le jumeau réel par la liaison \n série (port et vitesse en baud) \n
|
||||||
Message envoyé (asynchrone) : \n avancer : a, reculer : r, droite : d, \n gauche g, marquer : m et forer : f \n\n\n """
|
rp_serie_msg(texte) \n -> Envoi un message \n \ntexte=rp_serie_rcp() \n -> Reçoit un message \n\n\n """
|
||||||
|
|
||||||
|
# Message envoyé (asynchrone) : \n avancer : a, reculer : r, droite : d, \n gauche g, marquer : m et forer : f \n\n\n """
|
||||||
rp_twins_type="standard"
|
rp_twins_type="standard"
|
||||||
card_description.update({"twins-card" : [rp_twins_title, rp_twins_text, rp_twins_type]})
|
card_description.update({"twins-card" : [rp_twins_title, rp_twins_text, rp_twins_type]})
|
||||||
|
|
||||||
|
44
rp_lib.py
44
rp_lib.py
@ -206,8 +206,8 @@ def rp_avancer ():
|
|||||||
print ("rp_avancer()")
|
print ("rp_avancer()")
|
||||||
scene.objects['Points']['step'] +=1
|
scene.objects['Points']['step'] +=1
|
||||||
if scene.objects['Commands']['twins']:
|
if scene.objects['Commands']['twins']:
|
||||||
serial_msg = "a\n"
|
serial_msg = "AV\n"
|
||||||
serial_comm.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
|
twins_serial.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
|
||||||
|
|
||||||
# Animation rapide
|
# Animation rapide
|
||||||
if scene.objects['Commands']['speed'] >= 10 and scene.objects['Points']['step']> 2: # A tendance à planter sur les premiers mouvements en rapide + balisage
|
if scene.objects['Commands']['speed'] >= 10 and scene.objects['Points']['step']> 2: # A tendance à planter sur les premiers mouvements en rapide + balisage
|
||||||
@ -327,8 +327,8 @@ def rp_reculer ():
|
|||||||
print ("rp_reculer()")
|
print ("rp_reculer()")
|
||||||
scene.objects['Points']['step'] +=1
|
scene.objects['Points']['step'] +=1
|
||||||
if scene.objects['Commands']['twins']:
|
if scene.objects['Commands']['twins']:
|
||||||
serial_msg = "r\n"
|
serial_msg = "RE\n"
|
||||||
serial_comm.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
|
twins_serial.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
|
||||||
|
|
||||||
# Animation rapide
|
# Animation rapide
|
||||||
if scene.objects['Commands']['speed'] >= 10 and scene.objects['Points']['step']> 2: # A tendance à planter sur les premiers mouvements en rapide + balisage
|
if scene.objects['Commands']['speed'] >= 10 and scene.objects['Points']['step']> 2: # A tendance à planter sur les premiers mouvements en rapide + balisage
|
||||||
@ -396,8 +396,8 @@ def rp_gauche ():
|
|||||||
scene.objects['Points']['step'] +=1
|
scene.objects['Points']['step'] +=1
|
||||||
step=math.pi/2 # Pas angulaire
|
step=math.pi/2 # Pas angulaire
|
||||||
if scene.objects['Commands']['twins']:
|
if scene.objects['Commands']['twins']:
|
||||||
serial_msg = "g\n"
|
serial_msg = "GA\n"
|
||||||
serial_comm.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
|
twins_serial.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
|
||||||
|
|
||||||
# Animation rapide
|
# Animation rapide
|
||||||
if scene.objects['Commands']['speed'] >= 10:
|
if scene.objects['Commands']['speed'] >= 10:
|
||||||
@ -445,8 +445,8 @@ def rp_droite ():
|
|||||||
scene.objects['Points']['step'] +=1
|
scene.objects['Points']['step'] +=1
|
||||||
step=math.pi/2 # Pas angulaire
|
step=math.pi/2 # Pas angulaire
|
||||||
if scene.objects['Commands']['twins']:
|
if scene.objects['Commands']['twins']:
|
||||||
serial_msg = "d\n"
|
serial_msg = "DR\n"
|
||||||
serial_comm.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
|
twins_serial.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
|
||||||
|
|
||||||
# Rapide
|
# Rapide
|
||||||
if scene.objects['Commands']['speed'] >= 10:
|
if scene.objects['Commands']['speed'] >= 10:
|
||||||
@ -488,13 +488,6 @@ def rp_marquer ():
|
|||||||
if obj['stop']:
|
if obj['stop']:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# Points, console et jumeau numérique
|
|
||||||
if (debug_mvt):
|
|
||||||
print ("rp_marquer() -> balise #"+ str(len(scene.objects['Terrain']['map_tile_beacon'])))
|
|
||||||
if scene.objects['Commands']['twins']:
|
|
||||||
serial_msg = "m\n"
|
|
||||||
serial_comm.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
|
|
||||||
rp_tempo (0.1)
|
|
||||||
x = obj.worldPosition.x
|
x = obj.worldPosition.x
|
||||||
y = obj.worldPosition.y
|
y = obj.worldPosition.y
|
||||||
z = obj.worldPosition.z
|
z = obj.worldPosition.z
|
||||||
@ -504,7 +497,15 @@ def rp_marquer ():
|
|||||||
print ("Case déjà marquée !")
|
print ("Case déjà marquée !")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
# Points, console et jumeau numérique
|
||||||
|
if (debug_mvt):
|
||||||
|
print ("rp_marquer() -> balise #"+ str(len(scene.objects['Terrain']['map_tile_beacon'])))
|
||||||
|
if scene.objects['Commands']['twins']:
|
||||||
|
serial_msg = "MA\n"
|
||||||
|
twins_serial.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
|
||||||
|
|
||||||
# Posage
|
# Posage
|
||||||
|
rp_tempo (0.1)
|
||||||
if scene.objects['Points']['upgrade_beacon']:
|
if scene.objects['Points']['upgrade_beacon']:
|
||||||
beacon_max= 200
|
beacon_max= 200
|
||||||
else:
|
else:
|
||||||
@ -762,8 +763,8 @@ def rover_colision_montain (back):
|
|||||||
|
|
||||||
# Jumeau numérique
|
# Jumeau numérique
|
||||||
if scene.objects['Commands']['twins']:
|
if scene.objects['Commands']['twins']:
|
||||||
serial_msg = "c\n"
|
serial_msg = "CO\n"
|
||||||
serial_comm.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
|
twins_serial.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
|
||||||
|
|
||||||
# Animation
|
# Animation
|
||||||
start = 1
|
start = 1
|
||||||
@ -822,8 +823,8 @@ def rover_colision_station (back):
|
|||||||
|
|
||||||
# Jumeau numérique
|
# Jumeau numérique
|
||||||
if scene.objects['Commands']['twins']:
|
if scene.objects['Commands']['twins']:
|
||||||
serial_msg = "c\n"
|
serial_msg = "CO\n"
|
||||||
serial_comm.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
|
twins_serial.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
|
||||||
|
|
||||||
# Animation
|
# Animation
|
||||||
start = 1
|
start = 1
|
||||||
@ -990,8 +991,8 @@ def rover_drill (x,y):
|
|||||||
|
|
||||||
# Jumeau numérique
|
# Jumeau numérique
|
||||||
if scene.objects['Commands']['twins']:
|
if scene.objects['Commands']['twins']:
|
||||||
serial_msg = "f\n"
|
serial_msg = "FO\n"
|
||||||
serial_comm.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
|
twins_serial.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
|
||||||
|
|
||||||
# Tuile
|
# Tuile
|
||||||
for i in range (10):
|
for i in range (10):
|
||||||
@ -1092,6 +1093,7 @@ def rp_tempo (duration):
|
|||||||
# Paramétrage de la communication avec la carte de communication (Arduino, Micro:bit)
|
# Paramétrage de la communication avec la carte de communication (Arduino, Micro:bit)
|
||||||
|
|
||||||
def rp_jumeau(port, speed):
|
def rp_jumeau(port, speed):
|
||||||
|
global twins_serial
|
||||||
scene.objects['Points-Twins'].setVisible(True,True)
|
scene.objects['Points-Twins'].setVisible(True,True)
|
||||||
scene.objects['Points-Twins-text'].setVisible(True,False)
|
scene.objects['Points-Twins-text'].setVisible(True,False)
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
from microbit import uart, sleep
|
from microbit import uart, sleep
|
||||||
from microbit import *
|
from microbit import *
|
||||||
|
import radio
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# rp_twins_maqueen-relay.py
|
# rp_twins_maqueen-relay.py
|
||||||
@ -15,8 +16,9 @@ from microbit import *
|
|||||||
# Initialisation
|
# Initialisation
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
led_image = Image("00000:00000:00900:00000:00000")
|
attente_image = Image("00000:00000:00900:00000:00000")
|
||||||
display.show(led_image) # Témoin de fonctionnement
|
balise_image = Image("00300:03630:36963:03630:00300")
|
||||||
|
display.show(attente_image) # Témoin de fonctionnement
|
||||||
# display.scroll("Maqueen manette")
|
# display.scroll("Maqueen manette")
|
||||||
radio.config(group=1)
|
radio.config(group=1)
|
||||||
radio.on()
|
radio.on()
|
||||||
@ -29,10 +31,42 @@ uart.init(baudrate= 115200) # Initialisation du port série
|
|||||||
|
|
||||||
while True:
|
while True:
|
||||||
|
|
||||||
|
display.show(attente_image) # Témoin de fonctionnement
|
||||||
|
|
||||||
while not uart.any(): # Attente d'un message
|
while not uart.any(): # Attente d'un message
|
||||||
pass
|
pass
|
||||||
|
|
||||||
display.scroll('ok : ') # Réception d'une message
|
# display.scroll('ok : ') # Réception d'une message
|
||||||
content = uart.readline()
|
msg = uart.readline()
|
||||||
display.scroll(content[:-1]) # Affichage du message sans le '/n'
|
# display.scroll(msg[:-1]) # Affichage du message texte sans le '/n'
|
||||||
|
# display.scroll(str(msg[0])+" "+str(msg[1])) # Affichage du message en code ASCII
|
||||||
|
|
||||||
|
# Avancer : AV
|
||||||
|
if msg[0] ==65 and msg[1] ==86 : # 65 (A) puis 86 (V)
|
||||||
|
display.show(Image.ARROW_N)
|
||||||
|
|
||||||
|
# Reculer : RE
|
||||||
|
if msg[0] ==82 and msg[1] ==69 : # 82 (R) puis 69 (E)
|
||||||
|
display.show(Image.ARROW_S)
|
||||||
|
|
||||||
|
# Gauche : GA
|
||||||
|
if msg[0] ==71 and msg[1] ==65 : # 71 (G) puis 65 (A)
|
||||||
|
display.show(Image.ARROW_W)
|
||||||
|
|
||||||
|
# Droite : DR
|
||||||
|
if msg[0] ==68 and msg[1] ==69 : # 82 (D) puis 82 (R)
|
||||||
|
display.show(Image.ARROW_E)
|
||||||
|
|
||||||
|
# Marquer : MA
|
||||||
|
if msg[0] ==77 and msg[1] ==65 : # 77 (M) puis 65 (A)
|
||||||
|
display.show(balise_image)
|
||||||
|
|
||||||
|
# Forer : FO
|
||||||
|
if msg[0] ==70 and msg[1] ==79 : # 70 (F) puis 79 (O)
|
||||||
|
display.show(Image.DIAMOND)
|
||||||
|
|
||||||
|
# Colision : CO
|
||||||
|
if msg[0] ==67 and msg[1] ==79 : # 67 (C) puis 79 (O)
|
||||||
|
display.show(Image.SKULL)
|
||||||
|
|
||||||
sleep(400)
|
sleep(400)
|
||||||
|
@ -11,8 +11,6 @@ import radio
|
|||||||
# @authors: Philippe Roy <philippe.roy@ac-grenoble.fr>
|
# @authors: Philippe Roy <philippe.roy@ac-grenoble.fr>
|
||||||
# @copyright: Copyright (C) 2022 Philippe Roy
|
# @copyright: Copyright (C) 2022 Philippe Roy
|
||||||
# @license: GNU GPL
|
# @license: GNU GPL
|
||||||
#
|
|
||||||
# Programme d'execution des ordres de la manette pour le robot Maqueen#
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
# ###############################################################################
|
# ###############################################################################
|
||||||
@ -20,7 +18,7 @@ import radio
|
|||||||
# ###############################################################################
|
# ###############################################################################
|
||||||
|
|
||||||
led_image = Image('00000:00000:00900:00000:00000')
|
led_image = Image('00000:00000:00900:00000:00000')
|
||||||
display.show(led_image) # Témoin de fonctionnement
|
display.show(led_image) # Témoin de fonctionnement
|
||||||
radio.config(group=1, queue=1, length=8)
|
radio.config(group=1, queue=1, length=8)
|
||||||
radio.on()
|
radio.on()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user