mirror of
https://forge.apps.education.fr/blender-edutech/jumeaux-numeriques.git
synced 2024-01-27 06:56:18 +01:00
Ajout de la variante 2 pour le volet roulant
This commit is contained in:
parent
01e37f5ce7
commit
0c6e1a3cf3
88
twin.py
88
twin.py
@ -53,7 +53,6 @@ color_blue_dark = (0.004, 0.054, 0.296, 1) # Couleur Blue (Actionneur type moteu
|
||||
color_grey = (0.285, 0.285, 0.285, 1) # Couleur Blue (Actionneur type moteur)
|
||||
color_led_yellow = (0.799, 0.617, 0.021, 1) # Couleur Led Jaune
|
||||
|
||||
|
||||
# Constantes
|
||||
JUST_ACTIVATED = bge.logic.KX_INPUT_JUST_ACTIVATED
|
||||
JUST_RELEASED = bge.logic.KX_INPUT_JUST_RELEASED
|
||||
@ -159,8 +158,14 @@ def cmd_init():
|
||||
scene.objects['Script-text']['Text']=scene.objects['System']['script']
|
||||
scene.objects['Twins-text']['Text']="Connection fermée."
|
||||
|
||||
# Mise en place de la variante
|
||||
# scene.objects['System']['variant'] = int(twin_config[0][2].text)
|
||||
# scene.active_camera = scene.objects["Camera"]
|
||||
# scene.objects['Sun'].setVisible(True,True)
|
||||
# scene.addOverlayCollection(scene.cameras['Camera-Hud'], bpy.data.collections['Hud'])
|
||||
|
||||
# Windows
|
||||
windows=("Doc", "Doc_chap-general", "Doc_chap-system", "Doc_chap-python", "About")
|
||||
windows=("Doc", "Doc_chap-general", "Doc_chap-system", "Doc_chap-python", "About", "Credits")
|
||||
for window in windows:
|
||||
scene.objects[window].setVisible(False,True)
|
||||
|
||||
@ -311,10 +316,10 @@ def manip_init():
|
||||
scene.objects['Sun'].setVisible(True,True)
|
||||
scene.addOverlayCollection(scene.cameras['Camera-Hud'], bpy.data.collections['Hud'])
|
||||
|
||||
# Fenêtres
|
||||
scene.objects['About'].setVisible(False,True)
|
||||
scene.objects['Credits'].setVisible(False,True)
|
||||
scene.objects['Doc'].setVisible(False,True)
|
||||
# # Fenêtres
|
||||
# scene.objects['About'].setVisible(False,True)
|
||||
# scene.objects['Credits'].setVisible(False,True)
|
||||
# scene.objects['Doc'].setVisible(False,True)
|
||||
|
||||
# Mémorisation de la position de la caméra
|
||||
scene.objects['Camera']['init_lx']=scene.objects['Camera'].worldPosition.x
|
||||
@ -479,7 +484,7 @@ def file_open():
|
||||
else: # Qt5 ne s'installe pas bien sur Windows -> wxPython
|
||||
scene.objects['System']['file_proc'] = subprocess.Popen([sys.executable, os.path.join(os.getcwd(), "twin_file_wx.py")], stdout=subprocess.PIPE, encoding = 'utf8')
|
||||
|
||||
# Récupérer le nom du fchier
|
||||
# Récupérer le nom du fchier
|
||||
stout = scene.objects['System']['file_proc'].communicate()
|
||||
if stout[0][:-1] != 'None' and len(stout[0][:-1])>0 :
|
||||
scene.objects['System']['script'] = stout[0][:-1]
|
||||
@ -595,7 +600,7 @@ def cycle_hl(cont):
|
||||
if cont.sensors['MO'].status == JUST_ACTIVATED:
|
||||
obj['mo'] = True
|
||||
|
||||
# Composant avec un goupe de couleur (type actionneur)
|
||||
# Composant avec un groupe de couleur
|
||||
if "color_group" in obj.getPropertyNames():
|
||||
for obj_name in obj['color_group']:
|
||||
scene.objects[obj_name].color = color_hl
|
||||
@ -618,7 +623,7 @@ def cycle_hl(cont):
|
||||
obj.color = color_passive
|
||||
return
|
||||
|
||||
# Composant avec un goupe de couleur (type actionneur)
|
||||
# Composant avec un groupe de couleur
|
||||
if "color_group" in obj.getPropertyNames():
|
||||
for obj_name in obj['color_group']:
|
||||
cycle_actuator_color(obj_name)
|
||||
@ -657,6 +662,50 @@ def cycle_click(cont):
|
||||
else:
|
||||
obj.color = color_active
|
||||
|
||||
|
||||
##
|
||||
# Click sur les éléments comutables du système (activation numérique)
|
||||
##
|
||||
|
||||
def cycle_switch(cont):
|
||||
obj = cont.owner
|
||||
obj_on=scene.objects[obj.name+"-on"]
|
||||
if scene.objects['System']['run'] ==False:
|
||||
return
|
||||
|
||||
# Passif
|
||||
if "active" in obj.getPropertyNames():
|
||||
if obj['active'] == False:
|
||||
obj.color = color_passive
|
||||
return
|
||||
|
||||
# Activation
|
||||
if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['System']['manip_mode']==0 and obj['prior']:
|
||||
|
||||
if obj['activated']: # On -> Off
|
||||
obj.color = color_hl
|
||||
obj['activated'] = False
|
||||
obj['click'] = True
|
||||
obj.setVisible(True,False)
|
||||
obj_on.setVisible(False,False)
|
||||
else: # Off -> On
|
||||
obj_on.color = color_activated
|
||||
obj['activated'] = True
|
||||
obj['click'] = True
|
||||
obj_on.setVisible(True,False)
|
||||
obj.setVisible(False,False)
|
||||
|
||||
# Désactivation
|
||||
if cont.sensors['Click'].status == JUST_RELEASED and obj['prior']:
|
||||
obj['click'] = False
|
||||
if cont.sensors['MO'].positive:
|
||||
obj.color = color_hl
|
||||
else:
|
||||
if obj['activated']:
|
||||
obj_on.color = color_activated
|
||||
else:
|
||||
obj.color = color_active
|
||||
|
||||
##
|
||||
# Couleurs sur les éléments sensibles du système
|
||||
##
|
||||
@ -703,7 +752,7 @@ def cycle_actuator_color(name):
|
||||
obj.color = color_led_yellow
|
||||
|
||||
##
|
||||
# Comportement standard des boutons
|
||||
# Comportement standard des boutons poussoirs
|
||||
##
|
||||
|
||||
def cycle_bp(cont):
|
||||
@ -720,6 +769,25 @@ def cycle_bp(cont):
|
||||
# Couleurs
|
||||
cycle_sensitive_color(obj)
|
||||
|
||||
##
|
||||
# Comportement standard des boutons à glissière
|
||||
##
|
||||
|
||||
def cycle_bg(cont):
|
||||
obj = cont.owner
|
||||
|
||||
# Arduino -> Modele 3D
|
||||
if scene.objects['System']['twins'] and obj['prior_real']:
|
||||
if obj['pin'] is not None :
|
||||
if obj['pin'].read()==True and obj['activated_real'] == False :
|
||||
obj['activated_real'] = True
|
||||
if obj['pin'].read()==False and obj['activated_real'] == True :
|
||||
obj['activated_real'] = False
|
||||
|
||||
# Couleurs
|
||||
# FIXME à verifier
|
||||
cycle_sensitive_color(obj)
|
||||
|
||||
##
|
||||
# Comportement standard des voyants
|
||||
##
|
||||
|
@ -1,7 +1,7 @@
|
||||
<data>
|
||||
<screen>
|
||||
<width>1609</width>
|
||||
<height>905</height>
|
||||
<width>1590</width>
|
||||
<height>895</height>
|
||||
<quality>1</quality>
|
||||
</screen>
|
||||
<plot>
|
||||
|
Binary file not shown.
@ -46,6 +46,8 @@ public_vars = {
|
||||
'mot_pas' : [['Moteur','step','a'], [], []],
|
||||
'bp_auto' : [['Bp auto','activated','d'], ['pin', 'd','i'], []],
|
||||
'bp_auto_r' : [['Bp auto','activated_real','d'], [], []],
|
||||
'bg_auto' : [['Bg auto','activated','d'], ['pin', 'd','i'], []],
|
||||
'bg_auto_r' : [['Bg auto','activated_real','d'], [], []],
|
||||
'voy_auto' : [['Led auto','activated','d'], ['pin', 'd','o'], []],
|
||||
'lum' : [['Recepteur LDR','activated','a'], ['pin', 'd','i'], []], # FIXME : Basculer en analogique
|
||||
'lum_r' : [['Recepteur LDR','activated_real','a'], [], []]}
|
||||
@ -89,12 +91,16 @@ def init(cont):
|
||||
["Moteur vis1","grey"],
|
||||
["Moteur vis2","grey"]], "Moteur : mot_m(True | False), mot_d(True | False)")
|
||||
twin.cycle_def_focusgroup([["Led auto", "led_yellow"]], "Voyant témoin mode automatique : voy_auto(True | False)")
|
||||
# twin.cycle_def_focusgroup([["Bg auto", "color_active"],
|
||||
# ["Bg auto-on", "color_active"]], "Voyant témoin mode automatique : voy_auto(True | False)")
|
||||
|
||||
# Description des composants sensibles
|
||||
scene.objects['Bp monter']['description']="Bouton poussoir monter volet : bp_m()"
|
||||
scene.objects['Bp descendre']['description']="Bouton poussoir descendre volet : bp_d()"
|
||||
scene.objects['Bp arret']['description']="Bouton poussoir arrêt volet : bp_a()"
|
||||
scene.objects['Bp auto']['description']="Bouton poussoir mode automatique : bp_auto()"
|
||||
scene.objects['Bg auto']['description']="Bouton à glissière mode automatique : bg_auto()"
|
||||
scene.objects['Bg auto-on']['description']="Bouton à glissière mode automatique : bg_auto()"
|
||||
scene.objects['Microrupteur haut']['description']="Capteur fin de course volet en haut : fdc_h()"
|
||||
scene.objects['Microrupteur bas']['description']="Capteur fin de course volet en bas : fdc_b()"
|
||||
scene.objects['Recepteur LDR']['description']="Capteur de luminosité (LDR) : lum()"
|
||||
@ -427,10 +433,11 @@ def system_init ():
|
||||
def system_reset ():
|
||||
|
||||
# Entrées à l'état initial
|
||||
objs= ['Bp monter', 'Bp arret', 'Bp descendre', 'Bp auto', 'Microrupteur haut','Microrupteur bas', 'Recepteur LDR']
|
||||
objs= ['Bp monter', 'Bp arret', 'Bp descendre', 'Bp auto', 'Bg auto', 'Microrupteur haut','Microrupteur bas', 'Recepteur LDR']
|
||||
for obj in objs:
|
||||
scene.objects[obj]['activated']=False
|
||||
scene.objects[obj]['activated_real']=False
|
||||
scene.objects['Bg auto-on'].setVisible(False,False)
|
||||
|
||||
# Voyants aux états initiaux
|
||||
scene.objects['Led auto']['activated']=False
|
||||
@ -475,7 +482,7 @@ def system_reset ():
|
||||
obj['frame_down']= 100-obj['frame_up']
|
||||
|
||||
# Priorités activées
|
||||
objs= ['Bp monter', 'Bp arret', 'Bp descendre', 'Bp auto', 'Microrupteur haut','Microrupteur bas', 'Recepteur LDR',
|
||||
objs= ['Bp monter', 'Bp arret', 'Bp descendre', 'Bp auto', 'Bg auto', 'Microrupteur haut','Microrupteur bas', 'Recepteur LDR',
|
||||
'Moteur', 'Led auto']
|
||||
for obj in objs:
|
||||
scene.objects[obj]['prior']=True
|
||||
|
@ -1,4 +1,5 @@
|
||||
from volrou_lib import * # Bibliothèque utilisateur du volet roulant
|
||||
volrou_variante(2) # Variante 2 de la maquette 3D du volet roulant
|
||||
|
||||
###############################################################################
|
||||
# volrou_cmd.py
|
||||
@ -21,7 +22,8 @@ from volrou_lib import * # Bibliothèque utilisateur du volet roulant
|
||||
# - Bouton poussoir monter volet : bp_m()
|
||||
# - Bouton poussoir arrêt volet : bp_a()
|
||||
# - Bouton poussoir descendre volet : bp_d()
|
||||
# - Bouton poussoir mode automatique : bp_auto()
|
||||
# - Bouton poussoir mode automatique : bp_auto() (variante 1)
|
||||
# - Bouton à glissière mode automatique : bg_auto() (variante 2)
|
||||
#
|
||||
# Retour d'information du pupitre (allumer = True ou False) :
|
||||
# - Voyant témoin mode automatique : voy_auto(True | False)
|
||||
@ -41,6 +43,15 @@ from volrou_lib import * # Bibliothèque utilisateur du volet roulant
|
||||
|
||||
def commandes():
|
||||
|
||||
daq(['bg_auto', 'voy_auto'])
|
||||
plot (['bg_auto', 'voy_auto'])
|
||||
|
||||
while True:
|
||||
if bg_auto():
|
||||
voy_auto(True) # Activer le voyant du mode automatique
|
||||
else:
|
||||
voy_auto(False)
|
||||
|
||||
daq(['mot_angle', 'mot_vitesse'])
|
||||
plot (['mot_angle', 'mot_vitesse'])
|
||||
# plot ([['mot_angle', 'mot_vitesse']])
|
||||
|
@ -98,19 +98,25 @@ def bp_d ():
|
||||
return True
|
||||
return False
|
||||
|
||||
# Compte-rendu du bouton mode automatique
|
||||
# Compte-rendu du bouton poussoir mode automatique
|
||||
def bp_auto ():
|
||||
if scene.objects['Bp auto']['activated'] or scene.objects['Bp auto']['activated_real']:
|
||||
return True
|
||||
return False
|
||||
|
||||
# Compte-rendu du bouton à glissière mode automatique
|
||||
def bg_auto ():
|
||||
if scene.objects['Bg auto']['activated'] or scene.objects['Bg auto']['activated_real']:
|
||||
return True
|
||||
return False
|
||||
|
||||
###############################################################################
|
||||
# Jumelage
|
||||
###############################################################################
|
||||
|
||||
# Mode de jumelage (règles d'activation)
|
||||
def jumeau_mode (input_real=True, input_digital=True, output_real=True, output_digital=True):
|
||||
input_objs = ['Bp monter', 'Bp arret', 'Bp descendre', 'Bp auto', 'Microrupteur haut', 'Microrupteur bas', 'Recepteur LDR']
|
||||
input_objs = ['Bp monter', 'Bp arret', 'Bp descendre', 'Bp auto', 'Bg auto', 'Microrupteur haut', 'Microrupteur bas', 'Recepteur LDR']
|
||||
output_objs = ['Moteur', 'Led auto']
|
||||
jumeau_mode_system (input_objs, output_objs, input_real, input_digital, output_real, output_digital)
|
||||
|
||||
@ -146,6 +152,32 @@ def reset_t ():
|
||||
def start(fct):
|
||||
twin_threading.start(threads_cmd, "commands", fct)
|
||||
|
||||
##
|
||||
# Variante
|
||||
#
|
||||
# Variante 1 : Le mode automatique s'active avec le bouton poussoir bp_auto et se désactive avec l'appui sur bp_m, bp_a ou bp_d.
|
||||
# Variante 2 : Le mode automatique s'active avec le bouton à glissière bg_auto.
|
||||
#
|
||||
# La variante 1 correspond à la maquette réelle de 4A technologie.
|
||||
#
|
||||
# Configuration des variantes du modèle 3D -> variant_dict :
|
||||
# 'nom de l'objet 3D' : liste des variantes où l'objet est présent.
|
||||
# Par défaut les objets sont présents quelque soit la variante sélectionnée.
|
||||
##
|
||||
|
||||
def volrou_variante(variant):
|
||||
if variant != scene.objects['System']['variant']:
|
||||
print ("Variante de la maquette numérique:", variant)
|
||||
scene.objects['System']['variant']=variant
|
||||
variant_dict = {'Bp auto':[1], 'Bg auto':[2], 'Bg auto-on':[2]}
|
||||
variant_list = list(variant_dict)
|
||||
for name in variant_list:
|
||||
if variant in variant_dict[name]:
|
||||
pass
|
||||
else:
|
||||
scene.objects[name].setVisible(False,True)
|
||||
scene.objects[name].suspendPhysics()
|
||||
|
||||
##
|
||||
# Arrêt
|
||||
##
|
||||
|
Loading…
Reference in New Issue
Block a user