diff --git a/ropy-29.blend b/ropy-29.blend
index 1b72aa0..faab754 100644
Binary files a/ropy-29.blend and b/ropy-29.blend differ
diff --git a/rp_config.xml b/rp_config.xml
index 64254cd..303665e 100644
--- a/rp_config.xml
+++ b/rp_config.xml
@@ -1,6 +1,6 @@
- 4.0
+ 1.0
False
0.0057830810546875
@@ -14,7 +14,7 @@
1
- 2
+ 1
False
@@ -22,4 +22,4 @@
False
False
-
\ No newline at end of file
+
diff --git a/rp_doc.py b/rp_doc.py
index 35426a8..dde1b25 100644
--- a/rp_doc.py
+++ b/rp_doc.py
@@ -80,8 +80,10 @@ card_description.update({"radar-card" : [rp_radar_title, rp_radar_text, rp_radar
# 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_jumeau(port, vitesse) \n -> Active la liaison série sur le port \n et à la vitesse (baud) spécifiés. \n
- Message envoyé (asynchrone) : \n avancer : a, reculer : r, droite : d, \n gauche g, marquer : m et forer : f \n\n\n """
+ rp_jumeau(port, vitesse) \n -> Active le jumeau réel par la liaison \n série (port et vitesse en baud) \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"
card_description.update({"twins-card" : [rp_twins_title, rp_twins_text, rp_twins_type]})
diff --git a/rp_lib.py b/rp_lib.py
index 954deb3..8afa1bc 100644
--- a/rp_lib.py
+++ b/rp_lib.py
@@ -20,9 +20,9 @@ import rp_map1 as rp_map # Map definition
# @authors: Philippe Roy
# @copyright: Copyright (C) 2020-2022 Philippe Roy
# @license: GNU GPL
-#
+#
# Bibliothèque des actions du robot
-#
+#
# Ropy est destiné à la découverte de la programmation procédurale et du language Python.
# A travers plusieurs challenges, donc de manière graduée, les élèves vont apprendre à manipuler les structures algorithmiques de base et à les coder en Python.
###############################################################################
@@ -206,8 +206,8 @@ def rp_avancer ():
print ("rp_avancer()")
scene.objects['Points']['step'] +=1
if scene.objects['Commands']['twins']:
- serial_msg = "a\n"
- serial_comm.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
+ serial_msg = "AV\n"
+ twins_serial.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
# Animation rapide
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()")
scene.objects['Points']['step'] +=1
if scene.objects['Commands']['twins']:
- serial_msg = "r\n"
- serial_comm.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
+ serial_msg = "RE\n"
+ twins_serial.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
# Animation rapide
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
step=math.pi/2 # Pas angulaire
if scene.objects['Commands']['twins']:
- serial_msg = "g\n"
- serial_comm.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
+ serial_msg = "GA\n"
+ twins_serial.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
# Animation rapide
if scene.objects['Commands']['speed'] >= 10:
@@ -445,8 +445,8 @@ def rp_droite ():
scene.objects['Points']['step'] +=1
step=math.pi/2 # Pas angulaire
if scene.objects['Commands']['twins']:
- serial_msg = "d\n"
- serial_comm.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
+ serial_msg = "DR\n"
+ twins_serial.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
# Rapide
if scene.objects['Commands']['speed'] >= 10:
@@ -488,13 +488,6 @@ def rp_marquer ():
if obj['stop']:
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
y = obj.worldPosition.y
z = obj.worldPosition.z
@@ -504,7 +497,15 @@ def rp_marquer ():
print ("Case déjà marquée !")
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
+ rp_tempo (0.1)
if scene.objects['Points']['upgrade_beacon']:
beacon_max= 200
else:
@@ -762,8 +763,8 @@ def rover_colision_montain (back):
# Jumeau numérique
if scene.objects['Commands']['twins']:
- serial_msg = "c\n"
- serial_comm.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
+ serial_msg = "CO\n"
+ twins_serial.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
# Animation
start = 1
@@ -822,8 +823,8 @@ def rover_colision_station (back):
# Jumeau numérique
if scene.objects['Commands']['twins']:
- serial_msg = "c\n"
- serial_comm.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
+ serial_msg = "CO\n"
+ twins_serial.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
# Animation
start = 1
@@ -930,7 +931,7 @@ def rover_goal ():
scene.objects['Points']['level']+=1
##
-# Forage
+# Forage
##
def rover_drill (x,y):
@@ -990,8 +991,8 @@ def rover_drill (x,y):
# Jumeau numérique
if scene.objects['Commands']['twins']:
- serial_msg = "f\n"
- serial_comm.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
+ serial_msg = "FO\n"
+ twins_serial.write(serial_msg.encode()) # Communication série : modele 3d -> carte communication ( arduino | micro:bit )
# Tuile
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)
def rp_jumeau(port, speed):
+ global twins_serial
scene.objects['Points-Twins'].setVisible(True,True)
scene.objects['Points-Twins-text'].setVisible(True,False)
diff --git a/twins/rp_maqueen-relay.py b/twins/rp_maqueen-relay.py
index 1fc503f..36e5562 100644
--- a/twins/rp_maqueen-relay.py
+++ b/twins/rp_maqueen-relay.py
@@ -1,5 +1,6 @@
from microbit import uart, sleep
from microbit import *
+import radio
###############################################################################
# rp_twins_maqueen-relay.py
@@ -15,8 +16,9 @@ from microbit import *
# Initialisation
###############################################################################
-led_image = Image("00000:00000:00900:00000:00000")
-display.show(led_image) # Témoin de fonctionnement
+attente_image = Image("00000:00000:00900:00000:00000")
+balise_image = Image("00300:03630:36963:03630:00300")
+display.show(attente_image) # Témoin de fonctionnement
# display.scroll("Maqueen manette")
radio.config(group=1)
radio.on()
@@ -29,10 +31,42 @@ uart.init(baudrate= 115200) # Initialisation du port série
while True:
+ display.show(attente_image) # Témoin de fonctionnement
+
while not uart.any(): # Attente d'un message
- pass
-
- display.scroll('ok : ') # Réception d'une message
- content = uart.readline()
- display.scroll(content[:-1]) # Affichage du message sans le '/n'
+ pass
+
+ # display.scroll('ok : ') # Réception d'une message
+ msg = uart.readline()
+ # 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)
diff --git a/twins/rp_maqueen-robot.py b/twins/rp_maqueen-robot.py
index 54133a7..a4bdbe2 100755
--- a/twins/rp_maqueen-robot.py
+++ b/twins/rp_maqueen-robot.py
@@ -11,8 +11,6 @@ import radio
# @authors: Philippe Roy
# @copyright: Copyright (C) 2022 Philippe Roy
# @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')
-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.on()