mirror of
https://forge.apps.education.fr/blender-edutech/jumeaux-numeriques.git
synced 2024-01-27 06:56:18 +01:00
Ajout des modes d'activation des entrées et des sorties
This commit is contained in:
parent
9056a81e76
commit
dcf642df38
@ -152,8 +152,8 @@ def mot (cont):
|
||||
obj['last_time'] = scene.objects['System']['time']
|
||||
|
||||
# Modele 3D -> Arduino
|
||||
if scene.objects['System']['twins']:
|
||||
if scene.objects['Moteur']['pin_o'] is not None:
|
||||
if scene.objects['System']['twins'] and obj['prior_real']:
|
||||
if scene.objects['Moteur']['pin_o'] is not None :
|
||||
if scene.objects['Moteur']['pin_f'] is not None:
|
||||
scene.objects['Moteur']['pin_f'].write(0)
|
||||
scene.objects['Moteur']['pin_o'].write(1)
|
||||
@ -174,14 +174,14 @@ def mot (cont):
|
||||
obj['last_time'] = scene.objects['System']['time']
|
||||
|
||||
# Modele 3D -> Arduino
|
||||
if scene.objects['System']['twins']:
|
||||
if scene.objects['System']['twins'] and obj['prior_real']:
|
||||
if scene.objects['Moteur']['pin_f'] is not None:
|
||||
if scene.objects['Moteur']['pin_o'] is not None:
|
||||
scene.objects['Moteur']['pin_o'].write(0)
|
||||
scene.objects['Moteur']['pin_f'].write(1)
|
||||
|
||||
# Arrêrer
|
||||
if obj['open']== False and obj['close'] == False :
|
||||
if obj['open']== False and obj['close'] == False and obj['prior']:
|
||||
|
||||
# Physique
|
||||
obj['speed']= 0
|
||||
@ -189,7 +189,7 @@ def mot (cont):
|
||||
obj['last_time'] = scene.objects['System']['time']
|
||||
|
||||
# Modele 3D -> Arduino
|
||||
if scene.objects['System']['twins']:
|
||||
if scene.objects['System']['twins'] and obj['prior_real']:
|
||||
if scene.objects['Moteur']['pin_f'] is not None:
|
||||
if scene.objects['Moteur']['pin_o'] is not None:
|
||||
scene.objects['Moteur']['pin_o'].write(0)
|
||||
@ -208,7 +208,7 @@ def fdc_o (cont):
|
||||
obj = cont.owner
|
||||
|
||||
# Arduino -> Modele 3D
|
||||
if scene.objects['System']['twins']:
|
||||
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
|
||||
@ -216,13 +216,13 @@ def fdc_o (cont):
|
||||
obj['activated_real'] = False
|
||||
|
||||
# Etat capteur en fonction de la grille : worldPosition.x : 0 -> 65.5 et localPosition.x : 0 -> 218
|
||||
if scene.objects['Portail'].localPosition.x <= 0 and obj['activated'] == False :
|
||||
if scene.objects['Portail'].localPosition.x <= 0 and obj['activated'] == False and obj['prior']:
|
||||
obj['activated'] = True
|
||||
if scene.objects['Portail'].localPosition.x > 0 and obj['activated'] == True :
|
||||
if scene.objects['Portail'].localPosition.x > 0 and obj['activated'] == True and obj['prior']:
|
||||
obj['activated'] = False
|
||||
|
||||
# Forçage par clic
|
||||
if obj['click'] == True:
|
||||
if obj['click'] == True and obj['prior']:
|
||||
obj['activated'] = True
|
||||
|
||||
# Couleurs
|
||||
@ -237,7 +237,7 @@ def fdc_f (cont):
|
||||
obj = cont.owner
|
||||
|
||||
# Arduino -> Modele 3D
|
||||
if scene.objects['System']['twins']:
|
||||
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
|
||||
@ -245,13 +245,13 @@ def fdc_f (cont):
|
||||
obj['activated_real'] = False
|
||||
|
||||
# Etat capteur en fonction de la grille : worldPosition.x : 0 -> 65.5 et localPosition.x : 0 -> 218
|
||||
if scene.objects['Portail'].localPosition.x >= 218 and obj['activated'] == False :
|
||||
if scene.objects['Portail'].localPosition.x >= 218 and obj['activated'] == False and obj['prior']:
|
||||
obj['activated'] = True
|
||||
if scene.objects['Portail'].localPosition.x < 218 and obj['activated'] == True :
|
||||
if scene.objects['Portail'].localPosition.x < 218 and obj['activated'] == True and obj['prior']:
|
||||
obj['activated'] = False
|
||||
|
||||
# Forçage par clic
|
||||
if obj['click'] == True:
|
||||
if obj['click'] == True and obj['prior']:
|
||||
obj['activated'] = True
|
||||
|
||||
# Couleurs
|
||||
@ -422,43 +422,3 @@ def system_reset ():
|
||||
for obj in objs:
|
||||
scene.objects[obj]['prior']=True
|
||||
scene.objects[obj]['prior_real']=True
|
||||
|
||||
# scene.objects['Led']['activated']=False
|
||||
# scene.objects['Led']['prior']=True
|
||||
# scene.objects['Led']['prior_real']=True
|
||||
# scene.objects['Moteur']['open']=False
|
||||
# scene.objects['Moteur']['close']=False
|
||||
# scene.objects['Moteur']['prior_real']=True
|
||||
# scene.objects['Moteur']['prior_real']=True
|
||||
# scene.objects['Moteur']['alpha']=0
|
||||
# scene.objects['Moteur']['speed']=0
|
||||
# scene.objects['Moteur']['speed_setting']=125.6 # Vitesse du moteur numérique : 125.6 rad /s ( 20 tr / s )
|
||||
# scene.objects['Moteur']['step']=0
|
||||
# scene.objects['Portail']['x']=0
|
||||
# scene.objects['Portail']['speed']=0
|
||||
# scene.objects['Portail']['step']=0
|
||||
# scene.objects['Microrupteur fdc ouvert']['activated']=False
|
||||
# scene.objects['Microrupteur fdc ouvert']['activated_real']=False
|
||||
# scene.objects['Microrupteur fdc ouvert']['prior']=True
|
||||
# scene.objects['Microrupteur fdc ouvert']['prior_real']=True
|
||||
# scene.objects['Microrupteur fdc ferme']['activated']=False
|
||||
# scene.objects['Microrupteur fdc ferme']['activated_real']=False
|
||||
# scene.objects['Microrupteur fdc ferme']['prior']=True
|
||||
# scene.objects['Microrupteur fdc ferme']['prior_real']=True
|
||||
# scene.objects['Bp cote cour']['activated'] =False
|
||||
# scene.objects['Bp cote cour']['activated_real'] =False
|
||||
# scene.objects['Bp cote cour']['prior'] =True
|
||||
# scene.objects['Bp cote cour']['prior_real'] =True
|
||||
# scene.objects['Bp cote rue']['activated'] =False
|
||||
# scene.objects['Bp cote rue']['activated_real'] =False
|
||||
# scene.objects['Bp cote rue']['prior'] =True
|
||||
# scene.objects['Bp cote rue']['prior_real'] =True
|
||||
# scene.objects['Emetteur IR']['activated'] =False
|
||||
# scene.objects['Emetteur IR']['active'] =False
|
||||
# scene.objects['Emetteur IR']['prior']=True
|
||||
# scene.objects['Emetteur IR']['prior_real']=True
|
||||
# scene.objects['Recepteur IR']['activated'] =False
|
||||
# scene.objects['Recepteur IR']['prior'] =True
|
||||
# scene.objects['Recepteur IR']['active'] =False
|
||||
# scene.objects['Recepteur IR']['activated_real'] =True # Absence d'obstacle -> True, présence d'obstacle -> False
|
||||
# scene.objects['Recepteur IR']['prior_real'] =True
|
||||
|
@ -12,6 +12,7 @@ from porcou_lib import * # Bibliothèque utilisateur du portail coulissant
|
||||
# - Gyrophare : gyr(True | False)
|
||||
# - Ouvrir le portail (moteur sens trigo) : mot_o(True | False)
|
||||
# - Fermer le portail (moteur sens horaire) : mot_f(True | False)
|
||||
# - Définir la vitesse du moteur : mot_vitesse (vitesse) , vitesse en rad / s, si vitesse est omis la valeur par défaut est 125.6 rad /s ( 20 tr / s ))
|
||||
# - Emetteur pour le capteur barrage IR : ir_emet(True | False)
|
||||
#
|
||||
# Capteurs (valeur retournée = True ou False) :
|
||||
@ -25,6 +26,16 @@ from porcou_lib import * # Bibliothèque utilisateur du portail coulissant
|
||||
#
|
||||
# Gestion du temps :
|
||||
# - Temporisation en seconde : tempo(duree)
|
||||
# - Réinitialisation de la valeur du temp (t) : reset_t()
|
||||
#
|
||||
# Acquisition de données :
|
||||
# - Lancer l'enregistrement : daq([variable1, variable2, ... ])
|
||||
# - Afficher les graphiques : plot([variable1, variable2, ... ])
|
||||
#
|
||||
# Jumelage :
|
||||
# - Démarrer le jumelage : jumeau({brochage})
|
||||
# - Arrêter le jumelage : jumeau_stop({brochage})
|
||||
# - Définir les règles d'activation : jumeau_mode({brochage})
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
@ -64,21 +75,27 @@ def commandes():
|
||||
# plot([['bp_ext', 'bp_ext_r'], ['bp_int', 'bp_int_r'], ['fdc_o', 'fdc_o_r'], ['fdc_f', 'fdc_f_r'], 'mot_o', 'mot_f', 'gyr', ['mot_angle', 'mot_vitesse', 'portail_x', 'portail_vitesse']])
|
||||
|
||||
# Jumelage
|
||||
jumeau_mode(True,True)
|
||||
|
||||
# jumeau_mode(True,True, False, False)
|
||||
# jumeau_mode()
|
||||
|
||||
# Fermeture
|
||||
mot_digitset (1256) # Vitesse par défaut 125,6 rad /s ( 20 tr / s )
|
||||
mot_vitesse (1256) # Vitesse par défaut 125,6 rad /s ( 20 tr / s )
|
||||
while fdc_f() ==False :
|
||||
gyr(True)
|
||||
mot_o(False)
|
||||
mot_f(True)
|
||||
mot_f(False)
|
||||
gyr(False)
|
||||
|
||||
|
||||
tempo(1)
|
||||
jumeau_mode_object ('gyr', True, False)
|
||||
tempo(1)
|
||||
|
||||
# jumeau_mode(True, True, True, True)
|
||||
|
||||
# Ouverture
|
||||
jumeau_mode(True,False)
|
||||
mot_digitset () # Vitesse par défaut 125,6 rad /s ( 20 tr / s )
|
||||
mot_digitset (2000) # Vitesse par défaut 125,6 rad /s ( 20 tr / s )
|
||||
mot_vitesse () # Vitesse par défaut 125,6 rad /s ( 20 tr / s )
|
||||
mot_vitesse (2000) # Vitesse par défaut 125,6 rad /s ( 20 tr / s )
|
||||
while fdc_o() ==False :
|
||||
gyr(True)
|
||||
mot_f(False)
|
||||
|
@ -19,12 +19,11 @@ system_card_description ={}
|
||||
|
||||
# Jumeau numérique
|
||||
card_twins_title="Jumeau numérique"
|
||||
card_twins_text=""" jumeau(brochage) -> Active le jumeau réel.\n
|
||||
card_twins_text=""" jumeau(brochage) -> Démarrer le jumelage.\n
|
||||
"brochage" permet de faire le lien entre les \n deux jumeaux (voir la page "Brochage").\n
|
||||
jumeau_stop() -> Désactive le jumeau réel.\n
|
||||
jumeau_mode(réel, numérique) -> Définit \n les règles de priorité du jumelage :
|
||||
- réel=True | False : active | désactive \n les entrées réelles,
|
||||
- numérique=True | False : active | désactive \n les entrées numériques. """
|
||||
jumeau_stop() -> Arrêter le jumelage.\n
|
||||
jumeau_mode(entrées réelles, entrées \n numériques, sorties réelles, sorties \n numériques) -> Définit les modes d'activation
|
||||
des entrées/sorties : True pour activer \n (par défaut), False pour désactiver. """
|
||||
|
||||
# Avec "carte=jumeau(brochage)", on peut \n utiliser l'objet 'carte' pour communiquer \n directement avec le protocole Firmata.
|
||||
# jumeau_config(port, vitesse) \n -> Définit la configuration de la liaison \n série.\n
|
||||
@ -38,7 +37,7 @@ card_pin_title="Brochage"
|
||||
card_pin_text=""" Le brochage est un dictionnaire qui permet \n d'associer les objets 3D du jumeau \n numérique aux broches du jumeau réel,
|
||||
brochage = { nom:[type, broche, mode] } :
|
||||
- nom : nom de l'objet 3D,
|
||||
- type : a (analogique) ou d (numérique),
|
||||
- type : a (analogique) ou d (binaire),
|
||||
- broche : numéro de la broche de carte,
|
||||
- mode : i (entrée), o (sortie) ou p (pwm).
|
||||
Par exemple : brochage = { 'gyr':['d', 3, 'o'] }.\n
|
||||
@ -113,7 +112,7 @@ system_card_description.update({"model-card" : [card_model_title, card_model_tex
|
||||
# Firmata
|
||||
card_firmata_title="Protocole Firmata"
|
||||
card_firmata_text=""" Firmata est le protocole de communication \n entre les deux jumeaux via la liaison série.
|
||||
Lors du jumelage, il faut récupérer l'objet \n 'carte' avec "carte = jumeau(brochage)". \n
|
||||
Lors du jumelage, il faut récupérer l'objet \n "carte" avec carte = jumeau(brochage). \n
|
||||
broche = carte.get_pin('type:numéro:mode') \n -> Créer une entrée/sortie (broche) : \n - type : a (analogique) ou d (numérique), \n - mode : i (entrée) , o (sortie) ou p (pwm). \n
|
||||
valeur = broche.read() -> Lit la broche.\n
|
||||
broche.write(valeur) -> Écrire sur la broche.
|
||||
|
@ -1,6 +1,6 @@
|
||||
import bge # Bibliothèque Blender Game Engine (UPBGE)
|
||||
import twin_threading # Multithreading (multitâches)
|
||||
from twin_serial import jumeau, jumeau_stop, serial_close # Liaison série
|
||||
from twin_serial import jumeau, jumeau_stop, serial_close, jumeau_mode_system, jumeau_mode_object # Liaison série
|
||||
from twin_daq import get, daq, csv_generate, plot, plot_generate # Acquisition des données
|
||||
import time
|
||||
|
||||
@ -50,11 +50,8 @@ def mot_f (order):
|
||||
scene.objects['Moteur']['close']=order
|
||||
|
||||
# Réglage de la vitesse du moteur numérique
|
||||
def mot_digitset (speed=None):
|
||||
if speed==None:
|
||||
scene.objects['Moteur']['speed_setting']=125.6 # Vitesse du moteur numérique : 125.6 rad /s ( 20 tr / s )
|
||||
else:
|
||||
scene.objects['Moteur']['speed_setting']=speed
|
||||
def mot_vitesse (speed=125.6):
|
||||
scene.objects['Moteur']['speed_setting']=speed # Vitesse du moteur numérique : 125.6 rad /s ( 20 tr / s )
|
||||
|
||||
# Ordre pour le capteur barrage IR
|
||||
def ir_emet(order):
|
||||
@ -66,28 +63,22 @@ def ir_emet(order):
|
||||
|
||||
# Compte-rendu du capteur fin de course portail ouvert
|
||||
def fdc_o ():
|
||||
if scene.objects['Microrupteur fdc ouvert']['prior'] and scene.objects['Microrupteur fdc ouvert']['activated']:
|
||||
return True
|
||||
if scene.objects['Microrupteur fdc ouvert']['prior_real'] and scene.objects['Microrupteur fdc ouvert']['activated_real']:
|
||||
if scene.objects['Microrupteur fdc ouvert']['activated'] or scene.objects['Microrupteur fdc ouvert']['activated_real']:
|
||||
return True
|
||||
return False
|
||||
|
||||
# Compte-rendu du capteur fin de course portail fermé
|
||||
def fdc_f ():
|
||||
if scene.objects['Microrupteur fdc ferme']['prior'] and scene.objects['Microrupteur fdc ferme']['activated']:
|
||||
return True
|
||||
if scene.objects['Microrupteur fdc ferme']['prior_real'] and scene.objects['Microrupteur fdc ferme']['activated_real']:
|
||||
if scene.objects['Microrupteur fdc ferme']['activated'] or scene.objects['Microrupteur fdc ferme']['activated_real']:
|
||||
return True
|
||||
return False
|
||||
|
||||
# Compte-rendu du capteur barrage IR
|
||||
# Absence d'obstacle -> True, présence d'obstacle -> False
|
||||
def ir_recep ():
|
||||
if scene.objects['Recepteur IR']['prior'] and scene.objects['Recepteur IR']['activated']==False:
|
||||
return False
|
||||
if scene.objects['Recepteur IR']['prior_real'] and scene.objects['Recepteur IR']['activated_real']==False:
|
||||
return False
|
||||
return True
|
||||
if scene.objects['Recepteur IR']['activated'] or scene.objects['Recepteur IR']['activated_real']:
|
||||
return True
|
||||
return False
|
||||
|
||||
###############################################################################
|
||||
# Boutons poussoirs
|
||||
@ -95,17 +86,13 @@ def ir_recep ():
|
||||
|
||||
# Compte-rendu du bouton pousssoir coté rue
|
||||
def bp_ext ():
|
||||
if scene.objects['Bp cote rue']['prior'] and scene.objects['Bp cote rue']['activated']:
|
||||
return True
|
||||
if scene.objects['Bp cote rue']['prior_real'] and scene.objects['Bp cote rue']['activated_real']:
|
||||
if scene.objects['Bp cote rue']['activated'] or scene.objects['Bp cote rue']['activated_real']:
|
||||
return True
|
||||
return False
|
||||
|
||||
# Compte-rendu du bouton pousssoir coté cour
|
||||
def bp_int ():
|
||||
if scene.objects['Bp cote cour']['prior'] and scene.objects['Bp cote cour']['activated']:
|
||||
return True
|
||||
if scene.objects['Bp cote cour']['prior_real'] and scene.objects['Bp cote cour']['activated_real']:
|
||||
if scene.objects['Bp cote cour']['activated'] or scene.objects['Bp cote cour']['activated_real']:
|
||||
return True
|
||||
return False
|
||||
|
||||
@ -113,43 +100,11 @@ def bp_int ():
|
||||
# Jumelage
|
||||
###############################################################################
|
||||
|
||||
# Priorité du jumelage
|
||||
# prior et prior_real : les deux jumeaux pilotent avec une priorité à l'activation (valeur par défaut),
|
||||
# prior : uniquement le jumeau numérique est pilotant
|
||||
# prior_real : uniquement le jumeau réel est pilotant
|
||||
|
||||
def jumeau_mode (priority_real=True, priority_digital=True):
|
||||
|
||||
# Jumeau numérique
|
||||
if priority_digital:
|
||||
scene.objects['Microrupteur fdc ouvert']['prior']=True
|
||||
scene.objects['Microrupteur fdc ferme']['prior']=True
|
||||
scene.objects['Bp cote cour']['prior'] =True
|
||||
scene.objects['Bp cote rue']['prior'] =True
|
||||
scene.objects['Recepteur IR']['prior'] =True
|
||||
else:
|
||||
scene.objects['Microrupteur fdc ouvert']['prior']=False
|
||||
scene.objects['Microrupteur fdc ferme']['prior']=False
|
||||
scene.objects['Bp cote cour']['prior'] =False
|
||||
scene.objects['Bp cote rue']['prior'] =False
|
||||
scene.objects['Recepteur IR']['prior'] =False
|
||||
|
||||
# Jumeau réel
|
||||
if priority_real:
|
||||
scene.objects['Microrupteur fdc ouvert']['prior_real']=True
|
||||
scene.objects['Microrupteur fdc ferme']['prior_real']=True
|
||||
scene.objects['Bp cote cour']['prior_real'] =True
|
||||
scene.objects['Bp cote rue']['prior_real'] =True
|
||||
scene.objects['Recepteur IR']['prior_real'] =True
|
||||
else:
|
||||
scene.objects['Microrupteur fdc ouvert']['prior_real']=False
|
||||
scene.objects['Microrupteur fdc ferme']['prior_real']=False
|
||||
scene.objects['Bp cote cour']['prior_real'] =False
|
||||
scene.objects['Bp cote rue']['prior_real'] =False
|
||||
scene.objects['Recepteur IR']['prior_real'] =False
|
||||
|
||||
def broche_mode (priority_real=True, priority_digital=True):
|
||||
pass
|
||||
# Mode de jumelage (règles d'activation)
|
||||
def jumeau_mode (input_real=True, input_digital=True, output_real=True, output_digital=True):
|
||||
input_objs= ['Microrupteur fdc ouvert', 'Microrupteur fdc ferme', 'Bp cote cour','Bp cote rue', 'Recepteur IR']
|
||||
output_objs= ['Led', 'Moteur', 'Emetteur IR']
|
||||
jumeau_mode_system (input_objs, output_objs, input_real, input_digital, output_real, output_digital)
|
||||
|
||||
###############################################################################
|
||||
# Cycle
|
||||
|
Binary file not shown.
28
twin.py
28
twin.py
@ -640,17 +640,15 @@ def cycle_click(cont):
|
||||
return
|
||||
|
||||
# Activation
|
||||
if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['System']['manip_mode']==0:
|
||||
if cont.sensors['Click'].status == JUST_ACTIVATED and cont.sensors['MO'].positive and scene.objects['System']['manip_mode']==0 and obj['prior']:
|
||||
obj.color = color_activated
|
||||
obj['activated'] = True
|
||||
obj['click'] = True
|
||||
# Modele 3d -> Arduino : FIXME
|
||||
|
||||
# Désactivation
|
||||
if cont.sensors['Click'].status == JUST_RELEASED:
|
||||
if cont.sensors['Click'].status == JUST_RELEASED and obj['prior']:
|
||||
obj['activated'] = False
|
||||
obj['click'] = False
|
||||
# Modele 3d -> Arduino : FIXME
|
||||
if cont.sensors['MO'].positive:
|
||||
obj.color = color_hl
|
||||
else:
|
||||
@ -709,8 +707,8 @@ def cycle_bp(cont):
|
||||
obj = cont.owner
|
||||
|
||||
# Arduino -> Modele 3D
|
||||
if scene.objects['System']['twins']:
|
||||
if obj['pin'] is not None:
|
||||
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 :
|
||||
@ -735,21 +733,27 @@ def cycle_voy(cont):
|
||||
|
||||
# Activation
|
||||
if obj['activated'] and obj_on.visible == False:
|
||||
obj_on.setVisible(True,False)
|
||||
obj.setVisible(False,False)
|
||||
|
||||
# Modele 3D
|
||||
if obj['prior']:
|
||||
obj_on.setVisible(True,False)
|
||||
obj.setVisible(False,False)
|
||||
|
||||
# Modele 3D -> Arduino
|
||||
if scene.objects['System']['twins']:
|
||||
if scene.objects['System']['twins'] and obj['prior_real']:
|
||||
if obj['pin'] is not None:
|
||||
obj['pin'].write(1)
|
||||
|
||||
# Désactivation
|
||||
if obj['activated']==False and obj_on.visible == True:
|
||||
obj.setVisible(True,False)
|
||||
obj_on.setVisible(False,False)
|
||||
|
||||
# Modele 3D
|
||||
if obj['prior']:
|
||||
obj.setVisible(True,False)
|
||||
obj_on.setVisible(False,False)
|
||||
|
||||
# Modele 3D -> Arduino
|
||||
if scene.objects['System']['twins']:
|
||||
if scene.objects['System']['twins'] and obj['prior_real']:
|
||||
if obj['pin'] is not None:
|
||||
obj['pin'].write(0)
|
||||
|
||||
|
@ -150,7 +150,7 @@ card_sleep_title="Gestion du temps"
|
||||
card_sleep_text=""" tempo(x) \n -> Marque un temps d'arrêt de x secondes.
|
||||
Vous pouvez alors créer des temporisations \n dans le déroulement du script.\n
|
||||
get_t() \n -> Retourne le temps écoulé en seconde \n depuis le démarrage du cycle. \n
|
||||
set_t(x) -> Définir la valeur du temps avec x. \n
|
||||
set_t(x) -> Définir la valeur (x) du temps. \n
|
||||
reset_t() -> Réinitialiser la valeur du temps."""
|
||||
card_sleep_url=[["Doc. Python v3 Fr : sleep","https://docs.python.org/fr/3/library/time.html#time.sleep"]]
|
||||
card_description.update({"sleep-card" : [card_sleep_title, card_sleep_text, card_sleep_url]})
|
||||
|
@ -152,14 +152,20 @@ def config(port, speed):
|
||||
# Jumeau
|
||||
###############################################################################
|
||||
|
||||
##
|
||||
# Créer une broche
|
||||
##
|
||||
|
||||
def jumeau_get_pin(board, name, brochage):
|
||||
for pin in brochage :
|
||||
if pin ==name:
|
||||
return board.get_pin(brochage[pin][0]+':'+str(brochage[pin][1])+':'+brochage[pin][2])
|
||||
return None
|
||||
|
||||
##
|
||||
# Activer le jumelage
|
||||
##
|
||||
|
||||
def jumeau (brochage=None):
|
||||
|
||||
# Carte
|
||||
@ -175,10 +181,59 @@ def jumeau (brochage=None):
|
||||
else:
|
||||
return None
|
||||
|
||||
##
|
||||
# Désactiver le jumelage
|
||||
##
|
||||
|
||||
def jumeau_stop ():
|
||||
serial_close(scene.objects['System']['board'])
|
||||
|
||||
##
|
||||
# Définir les modes d'activation du jumelage pour le systeme
|
||||
##
|
||||
|
||||
def jumeau_mode_system (input_objs, output_objs, input_real, input_digital, output_real, output_digital):
|
||||
|
||||
# Entrées numériques
|
||||
if input_digital:
|
||||
for obj in input_objs:
|
||||
scene.objects[obj]['prior']=True
|
||||
else:
|
||||
for obj in input_objs:
|
||||
scene.objects[obj]['prior']=False
|
||||
|
||||
# Entrées réelles
|
||||
if input_real:
|
||||
for obj in input_objs:
|
||||
scene.objects[obj]['prior_real']=True
|
||||
else:
|
||||
for obj in input_objs:
|
||||
scene.objects[obj]['prior_real']=False
|
||||
|
||||
# Sorties numériques
|
||||
if output_digital:
|
||||
for obj in output_objs:
|
||||
scene.objects[obj]['prior']=True
|
||||
else:
|
||||
for obj in output_objs:
|
||||
scene.objects[obj]['prior']=False
|
||||
|
||||
# Sorties réelles
|
||||
if output_real:
|
||||
for obj in output_objs:
|
||||
scene.objects[obj]['prior_real']=True
|
||||
else:
|
||||
for obj in output_objs:
|
||||
scene.objects[obj]['prior_real']=False
|
||||
|
||||
##
|
||||
# Définir les modes d'activation du jumelage pour un objet 3D
|
||||
##
|
||||
|
||||
def jumeau_mode_object (name, priority_real=True, priority_digital=True):
|
||||
scene.objects[pin_config[name][0][0]]['prior_real']=priority_real
|
||||
scene.objects[pin_config[name][0][0]]['prior']=priority_digital
|
||||
|
||||
###############################################################################
|
||||
# Message
|
||||
###############################################################################
|
||||
|
Loading…
Reference in New Issue
Block a user