Bugfix : variante, configuration de broche et documentation

This commit is contained in:
Philippe Roy 2023-02-14 00:06:50 +01:00
parent 39bb9c1f98
commit f85393bd28
8 changed files with 45 additions and 45 deletions

View File

@ -46,7 +46,7 @@ L'environnement de développement est basé sur : la plateforme de modélisation
Les fichiers sources sont dans le groupe Blender-Edutech de la forge de l'AEIF : https://forge.aeif.fr/blender-edutech/jumeau-numerique .
Les bibliothèques suivantes ne sont pas incluses par défaut dans l'environnement UPBGE :
- [**Pylint**](https://pylint.pycqa.org) : vérificateur du code Python
- [**Pylint**](https://pylint.pycqa.org) : vérificateur de code Python
- [**pySerial**](https://pyserial.readthedocs.io) : communication sur le port série
- [**pyFirmata**](https://pyfirmata.readthedocs.io) : protocole Firmata (protocole générique de communication entre un logiciel et un microcontrôleur)
- [**Matplotlib**](https://matplotlib.org) : grapheur (visualisation de données)

View File

@ -162,10 +162,10 @@ def mot (cont):
# Modele 3D -> Arduino
if scene.objects['System']['twins'] and obj['prior_real']:
if scene.objects['Moteur']['pin_m'] is not None:
if scene.objects['Moteur']['pin_d'] is not None:
scene.objects['Moteur']['pin_d'].write(0)
scene.objects['Moteur']['pin_m'].write(1)
if scene.objects['Moteur']['pin_up'] is not None:
if scene.objects['Moteur']['pin_down'] is not None:
scene.objects['Moteur']['pin_down'].write(0)
scene.objects['Moteur']['pin_up'].write(1)
# Descendre
# else: # Pas de priorité
@ -187,10 +187,10 @@ def mot (cont):
# Modele 3D -> Arduino
if scene.objects['System']['twins'] and obj['prior_real']:
if scene.objects['Moteur']['pin_d'] is not None:
if scene.objects['Moteur']['pin_m'] is not None:
scene.objects['Moteur']['pin_m'].write(0)
scene.objects['Moteur']['pin_d'].write(1)
if scene.objects['Moteur']['pin_down'] is not None:
if scene.objects['Moteur']['pin_up'] is not None:
scene.objects['Moteur']['pin_up'].write(0)
scene.objects['Moteur']['pin_down'].write(1)
# Arrêter
if obj['up']== False and obj['down'] == False :
@ -203,10 +203,10 @@ def mot (cont):
# Modele 3D -> Arduino
if scene.objects['System']['twins'] and obj['prior_real']:
if scene.objects['Moteur']['pin_d'] is not None:
if scene.objects['Moteur']['pin_m'] is not None:
scene.objects['Moteur']['pin_m'].write(0)
scene.objects['Moteur']['pin_d'].write(0)
if scene.objects['Moteur']['pin_down'] is not None:
if scene.objects['Moteur']['pin_up'] is not None:
scene.objects['Moteur']['pin_up'].write(0)
scene.objects['Moteur']['pin_down'].write(0)
###############################################################################

View File

@ -122,7 +122,7 @@ def plot_draw(plt, var, xdata, ydata, plot_config):
if plot_config_get(plot_config, var, 'type') =='d':
plt.plot(xdata, ydata, label=var, drawstyle='steps-post', color=plot_config_get(plot_config, var, 'color'), linewidth=plot_config_get(plot_config, var, 'linewidth'),
linestyle=plot_config_get(plot_config, var, 'linestyle'), marker=plot_config_get(plot_config, var, 'marker'))
plt.set_ylim(0,1) # niveau 0 et niveau 1
plt.set_ylim(0,1.1) # niveau 0 et niveau 1
# Courbe d'une variable numérique (discret)
if plot_config_get(plot_config, var, 'type') =='n':

Binary file not shown.

View File

@ -210,10 +210,10 @@ def mot (cont):
# Modele 3D -> Arduino
if scene.objects['System']['twins'] and obj['prior_real']:
if scene.objects['Moteur']['pin_m'] is not None:
if scene.objects['Moteur']['pin_d'] is not None:
scene.objects['Moteur']['pin_d'].write(0)
scene.objects['Moteur']['pin_m'].write(1)
if scene.objects['Moteur']['pin_up'] is not None:
if scene.objects['Moteur']['pin_down'] is not None:
scene.objects['Moteur']['pin_down'].write(0)
scene.objects['Moteur']['pin_up'].write(1)
# Descendre
if obj['down']:
@ -305,10 +305,10 @@ def mot (cont):
# Modele 3D -> Arduino
if scene.objects['System']['twins'] and obj['prior_real']:
if scene.objects['Moteur']['pin_d'] is not None:
if scene.objects['Moteur']['pin_m'] is not None:
scene.objects['Moteur']['pin_m'].write(0)
scene.objects['Moteur']['pin_d'].write(1)
if scene.objects['Moteur']['pin_down'] is not None:
if scene.objects['Moteur']['pin_up'] is not None:
scene.objects['Moteur']['pin_up'].write(0)
scene.objects['Moteur']['pin_down'].write(1)
# Arrêt
if obj['up'] == False and obj['down'] == False:
@ -340,10 +340,10 @@ def mot (cont):
# Modele 3D -> Arduino
if scene.objects['System']['twins'] and obj['prior_real']:
if scene.objects['Moteur']['pin_d'] is not None:
if scene.objects['Moteur']['pin_m'] is not None:
scene.objects['Moteur']['pin_m'].write(0)
scene.objects['Moteur']['pin_d'].write(0)
if scene.objects['Moteur']['pin_down'] is not None:
if scene.objects['Moteur']['pin_up'] is not None:
scene.objects['Moteur']['pin_up'].write(0)
scene.objects['Moteur']['pin_down'].write(0)
###############################################################################
# Capteurs fin de course
@ -431,7 +431,6 @@ def system_init ():
##
# Réinitialisation du système
##
def system_reset ():
# Mise en place de la variante

View File

@ -37,7 +37,7 @@ brochage={
'bp_m' : [],'bp_a' : [],'bp_d' : [],
'fdc_h' : [],'fdc_b' : [],
'mot_m' : [],'mot_d' : [],
'bp_auto' : [],'voy_auto' : [],'lum' : []}
'bp_auto' : [],'bg_auto' : [], 'voy_auto' : [],'lum' : []}
###############################################################################
# Fonctions

View File

@ -38,15 +38,15 @@ card_pin_text=""" Le brochage est un dictionnaire qui permet \n d'associer les o
- broche : numéro de la broche de carte,
- mode : i (entrée), o (sortie) ou p (pwm).
Par exemple : brochage = { 'bp_m':['d',2,'i'] }.\n
Les objets numériques du jumeau sont : \n 'bp_m', 'bp_a', 'bp_d', 'mot_m', 'mot_d', \n 'fdc_h', 'fdc_b', 'bp_auto', 'voy_auto' et 'lum'."""
Les objets numériques sont : 'bp_m', 'bp_a', \n 'bp_d', 'mot_m', 'mot_d', 'fdc_h', 'fdc_b', \n 'bp_auto', 'bg_auto', 'voy_auto' et 'lum'."""
card_pin_url=[]
system_card_description.update({"pin-card" : [card_pin_title, card_pin_text, card_pin_url]})
# Données
card_data_title="Accès aux données"
card_data_text=""" get(variable) \n -> Retourne la valeur de la variable à \n l'instant t. Par exemple : val = get('bp_m').\n
Entrées/sorties : 'bp_m', 'bp_a', 'bp_d', \n 'mot_m', 'mot_d', 'fdc_h', 'fdc_b', 'bp_auto', \n 'voy_auto', 'lum'.\n
Variables réels (si il y a jumelage) : 'bp_m_r', \n 'bp_a_r', 'bp_d_r', 'fdc_h_r', 'fdc_b_r', \n 'bp_auto_r', 'lum_r'.\n
Entrées/sorties : 'bp_m', 'bp_a', 'bp_d', \n 'mot_m', 'mot_d', 'fdc_h', 'fdc_b', 'bp_auto', \n 'bg_auto', 'voy_auto', 'lum'.\n
Variables réels (si il y a jumelage) : 'bp_m_r', \n 'bp_a_r', 'bp_d_r', 'fdc_h_r', 'fdc_b_r', \n 'bp_auto_r', 'bg_auto_r', 'lum_r'.\n
Autres : 't' (temps), 'mot_angle', 'mot_vitesse'."""
card_data_url=[]
system_card_description.update({"data-card" : [card_data_title, card_data_text, card_data_url]})
@ -70,7 +70,7 @@ card_movement_text=""" mot_m(True | False) \n -> Monter le volet (moteur sens tr
mot_d(True | False) \n -> Descendre le volet (sens horaire). \n
fdc_h() \n -> Capteur fin de course volet en haut.
fdc_b() \n -> Capteur fin de course volet en bas.\n
mot_digitset(vitesse) -> Change la vitesse \n du moteur numérique en rad/s. Si 'vitesse' \n est ommis, elle sera réinitialisée."""
mot_vitesse(vitesse) -> Change la vitesse \n du moteur numérique en rad/s. Si 'vitesse' \n est ommis, elle sera réinitialisée."""
card_movement_url=[]
system_card_description.update({"movement-card" : [card_movement_title, card_movement_text, card_movement_url]})
@ -82,11 +82,12 @@ system_card_description.update({"sensor-card" : [card_sensor_title, card_sensor_
# Pupitre
card_board_title="Pupitre"
card_board_text= """ bp_m() \n -> Bouton poussoir monter le volet.\n Retourne True si le bouton est pressé.\n
bp_a() -> Bouton arrêt du volet.\n
card_board_text= """ bp_m() -> Bouton monter le volet.
bp_a() -> Bouton arrêter le volet.
bp_d() -> Bouton descendre le volet.\n
bp_auto() -> Bouton mode automatique.\n
voy_auto(True | False) \n -> Activer le voyant témoin du mode\n automatique."""
bp_auto() -> Bouton poussoir d'activation \n du mode automatique.\n
bg_auto() -> Bouton à glissière pour changer \n de mode (manuel/automatique).\n
voy_auto(True | False) \n -> Allumer le voyant témoin du mode\n automatique."""
card_board_url=[]
system_card_description.update({"board-card" : [card_board_title, card_board_text, card_board_url]})

View File

@ -169,15 +169,15 @@ def variant(variant_num):
if variant_num != scene.objects['System']['variant']:
print ("Variante de la maquette numérique:", variant_num)
scene.objects['System']['variant']=variant_num
variant_dict = {'Bp auto':[1], 'Bg auto':[2], 'Bg auto-on':[2]}
variant_list = list(variant_dict)
for name in variant_list:
if variant_num in variant_dict[name]:
scene.objects[name].setVisible(True,True)
scene.objects[name].restorePhysics()
else:
scene.objects[name].setVisible(False,True)
scene.objects[name].suspendPhysics()
variant_dict = {'Bp auto':[1], 'Bg auto':[2], 'Bg auto-on':[2]}
variant_list = list(variant_dict)
for name in variant_list:
if variant_num in variant_dict[name]:
scene.objects[name].setVisible(True,True)
scene.objects[name].restorePhysics()
else:
scene.objects[name].setVisible(False,True)
scene.objects[name].suspendPhysics()
##
# Arrêt