Portail coulissant : programmation de la vitesse réelle

This commit is contained in:
Philippe Roy 2024-01-14 19:06:41 +01:00
parent c13cb9af85
commit e113cb8dff
3 changed files with 25 additions and 15 deletions

View File

@ -174,7 +174,7 @@ def mot (cont):
if scene.objects['Moteur']['pin_direction'] is not None: if scene.objects['Moteur']['pin_direction'] is not None:
if scene.objects['Moteur']['pin_speed'] is not None: if scene.objects['Moteur']['pin_speed'] is not None:
scene.objects['Moteur']['pin_direction'].write(1) scene.objects['Moteur']['pin_direction'].write(1)
scene.objects['Moteur']['pin_speed'].write(1) scene.objects['Moteur']['pin_speed'].write(scene.objects['Moteur']['speed_real_setting']/255)
# Version AutoProg # Version AutoProg
if scene.objects['System']['variant'] == 2: if scene.objects['System']['variant'] == 2:
@ -207,7 +207,7 @@ def mot (cont):
if scene.objects['Moteur']['pin_direction'] is not None: if scene.objects['Moteur']['pin_direction'] is not None:
if scene.objects['Moteur']['pin_speed'] is not None: if scene.objects['Moteur']['pin_speed'] is not None:
scene.objects['Moteur']['pin_direction'].write(0) scene.objects['Moteur']['pin_direction'].write(0)
scene.objects['Moteur']['pin_speed'].write(1) scene.objects['Moteur']['pin_speed'].write(scene.objects['Moteur']['speed_real_setting']/255)
# Version AutoProg # Version AutoProg
if scene.objects['System']['variant'] == 2: if scene.objects['System']['variant'] == 2:
@ -458,9 +458,10 @@ def system_reset ():
scene.objects['Moteur']['alpha']=0 scene.objects['Moteur']['alpha']=0
scene.objects['Moteur']['speed']=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']['speed_setting']=125.6 # Vitesse du moteur numérique : 125.6 rad /s ( 20 tr / s )
scene.objects['Moteur']['speed_real_setting']=255 # Vitesse du moteur réel sur maquette Grove
scene.objects['Moteur']['step']=0 scene.objects['Moteur']['step']=0
rres=0.001 # resolution rotation rres=0.001 # Resolution rotation
obj1=scene.objects['Engrenage'] obj1=scene.objects['Engrenage']
while (obj1.localOrientation.to_euler().y) > 1.1*rres : while (obj1.localOrientation.to_euler().y) > 1.1*rres :
obj1.applyRotation((0, 0, -rres), True) obj1.applyRotation((0, 0, -rres), True)

View File

@ -12,7 +12,8 @@ from porcou_lib import * # Bibliothèque utilisateur du portail coulissant
# - Gyrophare : gyr(True | False) # - Gyrophare : gyr(True | False)
# - Ouvrir le portail (moteur sens trigo) : mot_o(True | False) # - Ouvrir le portail (moteur sens trigo) : mot_o(True | False)
# - Fermer le portail (moteur sens horaire) : mot_f(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 )) # - Définir la vitesse du moteur jumeau numérique : mot_vitesse (vitesse) , vitesse en rad / s, si vitesse est omis la valeur par défaut est 125.6 rad /s ( 20 tr / s ))
# - Définir la vitesse du moteur jumeau réel : mot_vitesse_r (vitesse) , vitesse de 0 à 255, la valeur par défaut est 255
# - Emetteur pour le capteur barrage IR : ir_emet(True | False) # - Emetteur pour le capteur barrage IR : ir_emet(True | False)
# #
# Capteurs (valeur retournée = True ou False) : # Capteurs (valeur retournée = True ou False) :
@ -42,17 +43,17 @@ from porcou_lib import * # Bibliothèque utilisateur du portail coulissant
# Brochage du portail coulissant (AutoProgUno) # Brochage du portail coulissant (AutoProgUno)
# brochage={ # brochage={
# 'bp_ext' : ['d',2,'i'],'bp_int' : ['d',3,'i'], # 'bp_ext' : ['d',2,'i'],'bp_int' : ['d',3,'i'],
# 'fdc_o' : ['d',7,'i'],'fdc_f' : ['d',8,'i'], # 'fdc_o' : ['d',7,'i'],'fdc_f' : ['d',8,'i'],
# 'mot_o' : ['d',5,'o'],'mot_f' : ['d',6,'o'], # 'mot_o' : ['d',5,'o'],'mot_f' : ['d',6,'o'],
# 'gyr' : ['d',4,'o'], # 'gyr' : ['d',4,'o'],
# 'ir_emet' : ['d',9,'o'],'ir_recep' : ['d',10,'i']} # 'ir_emet' : ['d',9,'o'],'ir_recep' : ['d',10,'i']}
# Brochage du portail coulissant (Grove) # Brochage du portail coulissant (Grove)
brochage={ brochage={
'bp_ext' : ['d',6,'i'],'bp_int' : ['d',5,'i'], 'bp_ext' : ['d',6,'i'],'bp_int' : ['d',5,'i'],
'fdc_o' : ['a',1,'i'],'fdc_f' : ['a',0,'i'], 'fdc_o' : ['a',1,'i'],'fdc_f' : ['a',0,'i'],
'mot_v' : ['d',3,'o'], 'mot_s' : ['d',4,'o'], 'mot_v' : ['d',3,'p'], 'mot_s' : ['d',4,'o'],
'gyr' : ['d',2,'o'], 'gyr' : ['d',2,'o'],
'ir_emet' : ['d',7,'o'],'ir_recep' : ['d',8,'i']} 'ir_emet' : ['d',7,'o'],'ir_recep' : ['d',8,'i']}
@ -77,6 +78,8 @@ def fermer():
tempo(0.1) # Donne du temps à communication avec le jumeau réel tempo(0.1) # Donne du temps à communication avec le jumeau réel
# if ir_recep()==False or bp_int() or bp_ext() : # Ouverture en cas présence d'obstacle ou boutons # if ir_recep()==False or bp_int() or bp_ext() : # Ouverture en cas présence d'obstacle ou boutons
if bp_int() or bp_ext() : # Ouverture en cas présence d'obstacle ou boutons if bp_int() or bp_ext() : # Ouverture en cas présence d'obstacle ou boutons
mot_f(False)
tempo(0.1) # Donne du temps à communication avec le jumeau réel
ouvrir() ouvrir()
print ("Temporisation") print ("Temporisation")
tempo(2) # Temporisation 2s tempo(2) # Temporisation 2s
@ -84,17 +87,18 @@ def fermer():
gyr(False) gyr(False)
mot_f(False) mot_f(False)
ir_emet(False) ir_emet(False)
tempo(0.1) # Donne du temps à communication avec le jumeau réel
# Ouvrir le portail # Ouvrir le portail
def ouvrir(): def ouvrir():
print ("Ouverture") print ("Ouverture")
while fdc_o() ==False: while fdc_o() ==False:
gyr(True) gyr(True)
mot_f(False)
mot_o(True) mot_o(True)
tempo(0.1) # Donne du temps à communication avec le jumeau réel tempo(0.1) # Donne du temps à communication avec le jumeau réel
gyr(False) gyr(False)
mot_o(False) mot_o(False)
tempo(0.1) # Donne du temps à communication avec le jumeau réel
############################################################################### ###############################################################################
# Commandes # Commandes
@ -106,6 +110,7 @@ def commandes():
print ("Version avec sécurité : avec réouverture si bouton ou capteur barrage") print ("Version avec sécurité : avec réouverture si bouton ou capteur barrage")
print ("Mise en place : Fermeture") print ("Mise en place : Fermeture")
mot_vitesse(1000) mot_vitesse(1000)
mot_vitesse_r(100)
fermer() fermer()
# Jumelage # Jumelage
@ -118,12 +123,14 @@ def commandes():
# Ouverture # Ouverture
if bp_int() or bp_ext() : if bp_int() or bp_ext() :
mot_vitesse_r(200)
ouvrir() ouvrir()
print ("Temporisation") print ("Temporisation")
tempo(2) # Temporisation 2s tempo(2) # Temporisation 2s
# Fermeture # Fermeture
mot_vitesse_r(100)
fermer() fermer()
print ("Attente") print ("Attente")
@ -145,4 +152,4 @@ if __name__=='start':
if __name__=='stop': if __name__=='stop':
stop() stop()
if __name__=='init': if __name__=='init':
variant(2) # Variante 1 de la maquette 3D du portail coulissant variant(1) # Variante Grove

View File

@ -51,12 +51,14 @@ def mot_f (order):
scene.objects['Moteur']['close']=order scene.objects['Moteur']['close']=order
# Réglage de la vitesse du moteur numérique # Réglage de la vitesse du moteur numérique
# Valeur par défaut est 125.6 rad /s soit 20 tr / s
def mot_vitesse (speed=125.6): def mot_vitesse (speed=125.6):
scene.objects['Moteur']['speed_setting']=speed # Vitesse du moteur numérique : 125.6 rad /s ( 20 tr / s ) scene.objects['Moteur']['speed_setting']=speed # Vitesse du moteur numérique : 125.6 rad /s ( 20 tr / s )
# Réglage de la vitesse du moteur réel : Maquette Grove de 0 à 255 # Réglage de la vitesse du moteur réel (uniquement sur la maquette Grove, de 0 à 255)
def mot_vitesse_r (speed): # Valeur par défaut est 255
scene.objects['Moteur']['speed_real_setting']=speed # Vitesse du moteur numérique : 125.6 rad /s ( 20 tr / s ) def mot_vitesse_r (speed=255):
scene.objects['Moteur']['speed_real_setting']=speed
# Ordre pour le capteur barrage IR # Ordre pour le capteur barrage IR
def ir_emet(order): def ir_emet(order):