Mise en place du pilotage moteur par le shield moteur suite

This commit is contained in:
Philippe Roy 2024-01-18 04:35:49 +01:00
parent a17496d7d4
commit 38accf8a44
9 changed files with 81 additions and 542 deletions

View File

@ -11,6 +11,8 @@ from montchg_lib import * # Bibliothèque utilisateur du monte-charge
# Actions (ordre = True ou False) :
# - Monter le monte-charge (moteur sens trigo) : mot_m(True | False)
# - Descendre le monte-charge (moteur sens horaire) : mot_d(True | False)
# - 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 (uniquement sur la maquette Grove)
#
# Capteurs (valeur retournée = True ou False) :
# - Capteur présence cabine niveau 0 : pc_0()
@ -26,15 +28,26 @@ from montchg_lib import * # Bibliothèque utilisateur du monte-charge
#
# Gestion du temps :
# - Temporisation en seconde : tempo(duree)
# - Réinitialisation de la valeur du temp (t) : reset_t()
#
# Acquisition de données :
# - Retourne la valeur de la variable à l'instant : get(variable)
# - 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})
#
###############################################################################
# Brochage du monte-charge
brochage={
'ba_0' : [],'ba_1' : [],
'pc_0' : [],'pc_1' : [],
'mot_m' : [],'mot_d' : [],
'voy_0' : [], 'voy_1' : []}
'pc_0' : [], 'pc_1' : [],
'ba_0' : [], 'ba_1' : [],
'voy_0' : [], 'voy_1' : [],
'mot_v' : [], 'mot_s' : []}
###############################################################################
# Fonctions
@ -61,6 +74,13 @@ def commandes():
# Fr: Appel externe << NE PAS MODIFIER CETTE SECTION >>
###############################################################################
###
# Variante 1 : Maquette Grove
# - Maquette Grove : la carte moteur est le shield moteur Arduino CC 4 x 1,2 A DRI0039 (DFROBOT)
# Variante 2 : Maquette AutoProg
# - Maquette AutoProg (A4 Technologie) : la carte moteur est le module AutoProg K-AP-MMOT-KIT
###
def cycle():
commandes()
fin()
@ -69,3 +89,5 @@ if __name__=='start':
start(cycle)
if __name__=='stop':
stop()
if __name__=='init':
variant(1) # Variante maquette Grove

View File

@ -1,111 +0,0 @@
from montchg_lib import * # Bibliothèque utilisateur du monte-charge
###############################################################################
# montchg_cmd-grove.py
# @title: Script de test pour le jumelage du monte-charge à des composants Grove
###############################################################################
###############################################################################
# Instructions élémentaires pour le monte-charge
#
# Actions (ordre = True ou False) :
# - Monter le monte-charge (moteur sens trigo) : mot_m(True | False)
# - Descendre le monte-charge (moteur sens horaire) : mot_d(True | False)
#
# Capteurs (valeur retournée = True ou False) :
# - Capteur présence cabine niveau 0 : pc_0()
# - Capteur présence cabine niveau 1 : pc_1()
#
# Consignes du pupitre (valeur retournée = True ou False) :
# - Bouton poussoir appel niveau 0 : ba_0()
# - Bouton poussoir appel niveau 1 : ba_1()
#
# Retours d'information du pupitre (allumer = True ou False) :
# - Voyant témoin d'étage niveau 0 : voy_0(True | False)
# - Voyant témoin d'étage niveau 1 : voy_1(True | False)
#
# Gestion du temps :
# - Temporisation en seconde : tempo(duree)
#
###############################################################################
# Brochage du monte-charge (Grove)
brochage={
'pc_0' : ['d',7,'i'], 'pc_1' : ['d',8,'i'],
'ba_0' : ['a',0,'i'], 'ba_1' : ['a',1,'i'],
'voy_0' : ['d',3,'o'], 'voy_1' : ['d',4,'o'],
'mot_m' : ['d',5,'o'], 'mot_d' : ['d',6,'o']}
###############################################################################
# Fonctions
###############################################################################
###############################################################################
# Commandes
###############################################################################
def commandes():
# daq(['mot_angle', 'mot_vitesse', 'cabine_z', 'cabine_vitesse'])
# plot(['mot_angle', 'mot_vitesse'])
jumeau(brochage)
jumeau_mode(True, True, True, True)
# Mise en place : Aller au niveau 0
print ("Monte-charge sans la mémorisation des appels")
print ("Mise en place : Aller au niveau 0 ...")
while pc_0() ==False:
mot_m(False)
mot_d(True)
tempo(0.1) # Donne du temps à communication avec le jumeau réel
mot_d(False)
print ("Mise en place : Aller au niveau 0 : Ok")
# Fonctionnement normal
print ("Attente")
while True:
# Aller au niveau 0
if ba_0() and pc_0() ==False:
print ("Déplacement pour le niveau 0 ...")
voy_0(True)
while pc_0() ==False:
mot_m(False)
mot_d(True)
tempo(0.1) # Donne du temps à communication avec le jumeau réel
mot_d(False)
tempo(2) # Temporisation 2s
voy_0(False)
print ("Déplacement pour le niveau 0 : Ok")
print ("Attente")
# Aller au niveau 1
if ba_1() and pc_1() ==False:
print ("Déplacement pour le niveau 1 ...")
voy_1(True)
while pc_1() ==False:
mot_d(False)
mot_m(True)
tempo(0.1) # Donne du temps à communication avec le jumeau réel
mot_m(False)
tempo(2) # Temporisation 2s
voy_1(False)
print ("Déplacement pour le niveau 1 : Ok")
print ("Attente")
tempo(0.1) # Donne du temps à communication avec le jumeau réel
###############################################################################
# En: External call << DONT CHANGE THIS SECTION >>
# Fr: Appel externe << NE PAS MODIFIER CETTE SECTION >>
###############################################################################
def cycle():
commandes()
fin()
if __name__=='start':
start(cycle)
if __name__=='stop':
stop()

View File

@ -1,118 +0,0 @@
from montchg_lib import * # Bibliothèque utilisateur du monte-charge
###############################################################################
# montchg_cmd.py
# @title: Commandes du monte-charge
###############################################################################
###############################################################################
# Instructions élémentaires pour le monte-charge
#
# Actions (ordre = True ou False) :
# - Monter le monte-charge (moteur sens trigo) : mot_m(True | False)
# - Descendre le monte-charge (moteur sens horaire) : mot_d(True | False)
#
# Capteurs (valeur retournée = True ou False) :
# - Capteur présence cabine niveau 0 : pc_0()
# - Capteur présence cabine niveau 1 : pc_1()
#
# Consignes du pupitre (valeur retournée = True ou False) :
# - Bouton poussoir appel niveau 0 : ba_0()
# - Bouton poussoir appel niveau 1 : ba_1()
#
# Retours d'information du pupitre (allumer = True ou False) :
# - Voyant témoin d'étage niveau 0 : voy_0(True | False)
# - Voyant témoin d'étage niveau 1 : voy_1(True | False)
#
# Gestion du temps :
# - Temporisation en seconde : tempo(duree)
#
###############################################################################
# Brochage du monte-charge
brochage={
'ba_0' : [],'ba_1' : [],
'pc_0' : [],'pc_1' : [],
'mot_m' : [],'mot_d' : [],
'voy_0' : [], 'voy_1' : []}
###############################################################################
# Fonctions
###############################################################################
###############################################################################
# Commandes
###############################################################################
def commandes():
daq(['mot_angle', 'mot_vitesse', 'cabine_z', 'cabine_vitesse'])
plot(['mot_angle', 'mot_vitesse'])
# plot(['mot_angle', 'mot_vitesse', ['cabine_z', 'cabine_vitesse']])
# plot([['mot_angle', 'mot_vitesse']])
# plot(['mot_angle'])
jumeau_mode(True, True, True, True)
mot_vitesse (500)
# Init -> Descendre
while pc_0() ==False :
voy_0(True)
mot_m(False)
mot_d(True)
mot_d(False)
voy_0(False)
print ("")
daq(['mot_angle', 'mot_vitesse', 'cabine_z', 'cabine_vitesse'])
# Monter
mot_digitset (500)
t0,z0, a0= get('t'), get('cabine_z'), get('mot_angle')
print ("Début monter : cabine_z : "+str(round(z0, 3)) + " - mot_angle : " + str(round(a0, 3)))
while pc_1() ==False :
voy_1(True)
mot_d(False)
mot_m(True)
mot_pas, mot_vitesse, cabine_pas, cabine_vitesse= get('mot_pas'), get('mot_vitesse'), get('cabine_pas'), get('cabine_vitesse')
mot_m(False)
voy_1(False)
t1,z1, a1= get('t'), get('cabine_z'), get('mot_angle')
print ("Fin monter : cabine_z : "+str(round(z1, 3)) + " - mot_angle : " + str(round(a1, 3)))
print ("")
print ("Monter : "+str(round(t1-t0, 3)) +" s - distance : " +str(round(z1-z0, 3))+" mm - angle : " +str(round(a1-a0, 3))+
" rad - cabine_vitesse : " +str(round(cabine_vitesse, 3))+" mm/s - moteur_vitesse : " +str(round(mot_vitesse, 3))+
" rad/s - cabine_pas : " +str(round(cabine_pas, 3))+" mm/impulsion - moteur_pas : " +str(round(mot_pas, 3))+" rad/impulsion")
print ("")
# Descendre
mot_digitset () # 5 tr/s
t0,z0, a0= get('t'), get('cabine_z'), get('mot_angle')
print ("Début descendre : cabine_z : "+str(round(z0, 3)) + " - mot_angle : " + str(round(a0, 3)))
while pc_0() ==False :
voy_0(True)
mot_m(False)
mot_d(True)
mot_pas, mot_vitesse, cabine_pas, cabine_vitesse= get('mot_pas'), get('mot_vitesse'), get('cabine_pas'), get('cabine_vitesse')
mot_d(False)
voy_0(False)
t1,z1, a1= get('t'), get('cabine_z'), get('mot_angle')
print ("Fin descendre : cabine_z : "+str(round(z1, 3)) + " - mot_angle : " + str(round(a1, 3)))
print ("")
print ("Descendre : "+str(round(t1-t0, 3)) +" s - distance : " +str(round(z1-z0, 3))+" mm - angle : " +str(round(a1-a0, 3))+
" rad - cabine_vitesse : " +str(round(cabine_vitesse, 3))+" mm/s - moteur_vitesse : " +str(round(mot_vitesse, 3))+
" rad/s - cabine_pas : " +str(round(cabine_pas, 3))+" mm/impulsion - moteur_pas : " +str(round(mot_pas, 3))+" rad/impulsion")
###############################################################################
# En: External call << DONT CHANGE THIS SECTION >>
# Fr: Appel externe << NE PAS MODIFIER CETTE SECTION >>
###############################################################################
def cycle():
commandes()
fin()
if __name__=='start':
start(cycle)
if __name__=='stop':
stop()

View File

@ -1,8 +1,8 @@
from montchg_lib import * # Bibliothèque utilisateur du monte-charge
###############################################################################
# montchg_cmd-grove.py
# @title: Script de test pour le jumelage du monte-charge à des composants Grove
# montchg_cmd.py
# @title: Commandes du monte-charge
###############################################################################
###############################################################################
@ -11,6 +11,8 @@ from montchg_lib import * # Bibliothèque utilisateur du monte-charge
# Actions (ordre = True ou False) :
# - Monter le monte-charge (moteur sens trigo) : mot_m(True | False)
# - Descendre le monte-charge (moteur sens horaire) : mot_d(True | False)
# - 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 (uniquement sur la maquette Grove)
#
# Capteurs (valeur retournée = True ou False) :
# - Capteur présence cabine niveau 0 : pc_0()
@ -26,6 +28,17 @@ from montchg_lib import * # Bibliothèque utilisateur du monte-charge
#
# Gestion du temps :
# - Temporisation en seconde : tempo(duree)
# - Réinitialisation de la valeur du temp (t) : reset_t()
#
# Acquisition de données :
# - Retourne la valeur de la variable à l'instant : get(variable)
# - 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})
#
###############################################################################
@ -33,8 +46,8 @@ from montchg_lib import * # Bibliothèque utilisateur du monte-charge
brochage={
'pc_0' : ['d',7,'i'], 'pc_1' : ['d',8,'i'],
'ba_0' : ['a',0,'i'], 'ba_1' : ['a',1,'i'],
'voy_0' : ['d',3,'o'], 'voy_1' : ['d',4,'o'],
'mot_m' : ['d',5,'o'], 'mot_d' : ['d',6,'o']}
'voy_0' : ['d',5,'o'], 'voy_1' : ['d',6,'o'],
'mot_v' : ['d',3,'p'], 'mot_s' : ['d',4,'o']}
###############################################################################
# Fonctions

View File

@ -41,7 +41,7 @@ from porcou_lib import * # Bibliothèque utilisateur du portail coulissant
#
###############################################################################
# Brochage du portail coulissant (AutoProgUno)
# Brochage du portail coulissant (Maquette AutoProg)
# brochage={
# 'bp_ext' : ['d',2,'i'],'bp_int' : ['d',3,'i'],
# 'fdc_o' : ['d',7,'i'],'fdc_f' : ['d',8,'i'],
@ -49,22 +49,15 @@ from porcou_lib import * # Bibliothèque utilisateur du portail coulissant
# 'gyr' : ['d',4,'o'],
# 'ir_emet' : ['d',9,'o'],'ir_recep' : ['d',10,'i']}
# Brochage du portail coulissant (Grove)
# Brochage du portail coulissant (Maquette Grove)
brochage={
'bp_ext' : ['d',6,'i'],'bp_int' : ['d',5,'i'],
'fdc_o' : ['a',1,'i'],'fdc_f' : ['a',0,'i'],
'mot_v' : ['d',3,'p'], 'mot_s' : ['d',4,'o'],
# 'gyr' : ['d',2,'o'],
'gyr' : [],
'ir_emet' : ['d',7,'o'],'ir_recep' : ['d',8,'i']}
# 'gyr' : ['d',2,'o'],
# Motor Direction(Forward/Backward) Speed Speed range
# M1 4 LOW HIGH 3 0-255
# M2 12 HIGH LOW 11 0-255
# M3 8 LOW HIGH 5 0-255
# M4 7 HIGH LOW 6 0-255
###############################################################################
# Fonctions
###############################################################################

View File

@ -11,6 +11,8 @@ from volrou_lib import * # Bibliothèque volet roulant
# Actions (ordre = True ou False) :
# - Monter le volet (moteur sens trigo) : mot_m(True | False)
# - Descendre le volet (moteur sens horaire) : mot_d(True | False)
# - 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 (uniquement sur la maquette Grove)
#
# Capteurs :
# - Capteur fin de course volet en haut : fdc_h() : valeur retournée = True ou False
@ -21,14 +23,24 @@ from volrou_lib import * # Bibliothèque 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() (variante 1)
# - Bouton à glissière mode automatique : bg_auto() (variante 2)
# - Bouton poussoir mode automatique : bg_auto()
#
# Retour d'information du pupitre (allumer = True ou False) :
# - Voyant témoin mode automatique : voy_auto(True | False)
#
# Gestion du temps :
# - Temporisation en seconde : tempo(duree)
# - Réinitialisation de la valeur du temp (t) : reset_t()
#
# Acquisition de données :
# - Retourne la valeur de la variable à l'instant : get(variable)
# - 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})
#
###############################################################################
@ -36,8 +48,8 @@ from volrou_lib import * # Bibliothèque volet roulant
brochage={
'bp_m' : [],'bp_a' : [],'bp_d' : [],
'fdc_h' : [],'fdc_b' : [],
'mot_m' : [],'mot_d' : [],
'bp_auto' : [],'bg_auto' : [], 'voy_auto' : [],'lum' : []}
'mot_v' : [],'mot_s' : [],
'bg_auto' : [], 'voy_auto' : [],'lum' : []}
###############################################################################
# Fonctions
@ -58,12 +70,20 @@ def commandes():
###############################################################################
# En: External call << DONT CHANGE THIS SECTION >>
# Fr: Appel externe << NE PAS MODIFIER CETTE SECTION >>
#
# 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 et se désactive avec le bouton à glissière bg_auto.
#
###############################################################################
###
# Variante 1 : Maquette Grove + bouton auto à glissière :
# - Maquette Grove : la carte moteur est le shield moteur Arduino CC 4 x 1,2 A DRI0039 (DFROBOT)
# - Le mode automatique s'active et se désactive avec le bouton à glissière bg_auto
# Variante 2 : Maquette Grove + bouton auto poussoir :
# - Maquette Grove : la carte moteur est le shield moteur Arduino CC 4 x 1,2 A DRI0039 (DFROBOT)
# - 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 3 : Maquette AutoProg + bouton auto poussoir :
# - Maquette AutoProg (A4 Technologie) : la carte moteur est le module AutoProg K-AP-MMOT-KIT
# - 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.
###
def cycle():
commandes()
fin()
@ -73,4 +93,4 @@ if __name__=='start':
if __name__=='stop':
stop()
if __name__=='init':
variant(1) # Variante 1 de la maquette 3D du volet roulant
variant(1) # Variante maquette Grove avec bouton à glissière

View File

@ -1,158 +0,0 @@
ffrom volrou_lib import * # Bibliothèque volet roulant
###############################################################################
# volrou_cmd-correction-grove.py
# @title: Script de test pour le jumelage du volet roulant à des composants Grove
###############################################################################
###############################################################################
# Instructions élémentaires pour le volet roulant
#
# Actions (ordre = True ou False) :
# - Monter le volet (moteur sens trigo) : mot_m(True | False)
# - Descendre le volet (moteur sens horaire) : mot_d(True | False)
#
# Capteurs :
# - Capteur fin de course volet en haut : fdc_h() : valeur retournée = True ou False
# - Capteur fin de course volet en bas : fdc_b() : valeur retournée = True ou False
# - Capteur de luminosité (LDR) : lum() : valeur retournée = entre 0.0 et 1.0
#
# Consignes du pupitre (valeur retournée = True ou False) :
# - Bouton poussoir monter volet : bp_m()
# - Bouton poussoir arrêt volet : bp_a()
# - Bouton poussoir descendre volet : bp_d()
# - Bouton poussoir mode automatique : bg_auto()
#
# Retour d'information du pupitre (allumer = True ou False) :
# - Voyant témoin mode automatique : voy_auto(True | False)
#
# Gestion du temps :
# - Temporisation en seconde : tempo(duree)
#
###############################################################################
# Brochage du volet roulant
brochage={
'bp_m' : ['a',1,'i'], 'bp_a' : ['a',0,'i'], 'bp_d' : ['a',2,'i'],
'fdc_h' : ['d',8,'i'], 'fdc_b' : ['d',7,'i'],
'mot_m' : ['d',5,'o'], 'mot_d' : ['d',6,'o'],
# 'bg_auto' : ['d',2,'i'], 'voy_auto' : ['d',4,'o']}
'bg_auto' : ['d',2,'i'], 'voy_auto' : ['d',4,'o'], 'lum' : ['a',3,'i']}
###############################################################################
# Fonctions
###############################################################################
###############################################################################
# Commandes
###############################################################################
def commandes():
# Mise en place : Monter le volet
print ("Volet roulant mode manuel, mode auto avec temporisation")
print ("Mise en place : Monter le volet")
while fdc_h() ==False :
mot_d(False)
mot_m(True)
mot_m(False)
# Jumelage
carte=jumeau(brochage)
# print (carte)
# lum_broche = carte.get_pin('a:3:i')
# print (lum_broche)
# Fonctionnement normal
print ("Attente")
presence_lum_tempo=0.0 # Temporisation pour la présence de lumière
absence_lum_tempo=0.0 # Temporisation pour l'absence de lumière
while True :
tempo(0.1) # Donne du temps à communication avec le jumeau réel
# print ("lum_r, ", lum_broche.read())
# print ("lum_r, ", get('lum_r'))
# Mode manuel
if bg_auto()== False:
voy_auto(False)
absence_lum_tempo=0
presence_lum_tempo = 0
# Monter le volet
if bp_m():
print ("Mode manu : Monter le volet : mouvement")
mot_d(False)
mot_m(True)
# Descendre le volet
if bp_d():
print ("Mode manu : Descendre le volet : mouvement")
mot_m(False)
mot_d(True)
# Arrêt manuel
if bp_a():
print ("Mode manu : Arrêter le volet !")
mot_m(False)
mot_d(False)
else: # Mode automatique
voy_auto(True)
# print ("lum_r, ", get('lum_r'))
print ("lum(), ", lum())
# Monter le volet : présence de lumière
if lum() < 0.5 and fdc_h()==False and absence_lum_tempo < 2:
tempo(0.1) # 0,1 s
presence_lum_tempo=0
absence_lum_tempo=absence_lum_tempo+0.1
# print ("Mode auto : Monter le volet : temporisation :", absence_lum_tempo)
# Monter le volet : mouvement
if absence_lum_tempo >= 2: # Temporisation de 2 s
# print ("Mode auto : Monter le volet : mouvement")
mot_d(False)
mot_m(True)
# Descendre le volet : absence de lumière
if lum() > 0.5 and fdc_b()==False and presence_lum_tempo < 2:
tempo(0.1) # 0,1 s
absence_lum_tempo=0
presence_lum_tempo=presence_lum_tempo+0.1
# print ("Mode auto : Descendre le volet : temporisation :", presence_lum_tempo)
# Descendre le volet : mouvement
if presence_lum_tempo >= 2: # Temporisation de 2 s
# print ("Mode auto : Descendre le volet : mouvement")
mot_m(False)
mot_d(True)
# Arrêt du moteur
if fdc_h() :
mot_m(False)
absence_lum_tempo=0
if fdc_b() :
mot_d(False)
presence_lum_tempo=0
###############################################################################
# En: External call << DONT CHANGE THIS SECTION >>
# Fr: Appel externe << NE PAS MODIFIER CETTE SECTION >>
#
# 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 et se désactive avec le bouton à glissière bg_auto.
#
###############################################################################
def cycle():
commandes()
fin()
if __name__=='start':
start(cycle)
if __name__=='stop':
stop()
if __name__=='init':
variant(1) # Variante 1 de la maquette 3D du volet roulant

View File

@ -1,121 +0,0 @@
from volrou_lib import * # Bibliothèque utilisateur du volet roulant
###############################################################################
# volrou_cmd.py
# @title: Commandes du volet roulant
###############################################################################
###############################################################################
# Instructions élémentaires pour le volet roulant
#
# Actions (ordre = True ou False) :
# - Monter le volet (moteur sens trigo) : mot_m(True | False)
# - Descendre le volet (moteur sens horaire) : mot_d(True | False)
#
# Capteurs :
# - Capteur fin de course volet en haut : fdc_h() : valeur retournée = True ou False
# - Capteur fin de course volet en bas : fdc_b() : valeur retournée = True ou False
# - Capteur de luminosité (LDR) : lum() : valeur retournée = entre 0.0 et 1.0
#
# Consignes du pupitre (valeur retournée = True ou False) :
# - 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() (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)
#
# Gestion du temps :
# - Temporisation en seconde : tempo(duree)
#
###############################################################################
###############################################################################
# Fonctions
###############################################################################
###############################################################################
# Commandes
###############################################################################
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']])
# jumeau_mode(True,True, True, False)
# Init -> Descendre
while fdc_b() ==False :
mot_m(False)
mot_d(True)
mot_d(False)
print ("")
# Monter
# mot_vitesse (500)
t0, a0= get('t'), get('mot_angle')
print ("Début monter : mot_angle : " + str(round(a0, 3)))
while fdc_h() ==False :
mot_d(False)
mot_m(True)
mot_angle, mot_pas, mot_vitesse = get('mot_angle'), get('mot_pas'), get('mot_vitesse')
# if abs(mot_vitesse)>0:
# print ("Monter : mot_angle : "+ str(round(mot_angle, 3)) + " rad - mot_vitesse : "+ str(round(mot_vitesse, 3)) + " rad/s - moteur_pas : " +str(round(mot_pas, 3))+" rad/impulsion")
mot_m(False)
t1, a1= get('t'), get('mot_angle')
print ("Fin monter : mot_angle : " + str(round(a1, 3)))
print ("")
print ("Monter : "+str(round(t1-t0, 3)) +" s - angle : " +str(round(a1-a0, 3)) + " rad - moteur_vitesse : " +str(round(mot_vitesse, 3))+
" rad/s - moteur_pas : " +str(round(mot_pas, 3))+" rad/impulsion")
print ("")
# Descendre
# mot_vitesse () # 20 tr/s
t0, a0= get('t'), get('mot_angle')
print ("Début descendre : mot_angle : " + str(round(a0, 3)))
while fdc_b() ==False :
mot_m(False)
mot_d(True)
mot_angle, mot_pas, mot_vitesse = get('mot_angle'), get('mot_pas'), get('mot_vitesse')
# if abs(mot_vitesse)>0:
# print ("Monter : mot_angle : "+ str(round(mot_angle, 3)) + " rad - mot_vitesse : "+ str(round(mot_vitesse, 3)) + " rad/s - moteur_pas : " +str(round(mot_pas, 3))+" rad/impulsion")
mot_d(False)
t1, a1= get('t'), get('mot_angle')
print ("Fin descendre : mot_angle : " + str(round(a1, 3)))
print ("")
print ("Descendre : "+str(round(t1-t0, 3)) +" s - angle : " +str(round(a1-a0, 3)) + " rad - moteur_vitesse : " +str(round(mot_vitesse, 3))+
" rad/s - moteur_pas : " +str(round(mot_pas, 3))+" rad/impulsion")
###############################################################################
# En: External call << DONT CHANGE THIS SECTION >>
# Fr: Appel externe << NE PAS MODIFIER CETTE SECTION >>
#
# 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 et se désactive avec le bouton à glissière bg_auto.
#
###############################################################################
def cycle():
commandes()
fin()
if __name__=='start':
start(cycle)
if __name__=='stop':
stop()
if __name__=='init':
variant(1) # Variante 1 de la maquette 3D du volet roulant

View File

@ -1,8 +1,8 @@
from volrou_lib import * # Bibliothèque volet roulant
###############################################################################
# volrou_cmd-correction-grove.py
# @title: Script de test pour le jumelage du volet roulant à des composants Grove
# volrou_cmd.py
# @title: Commandes du volet roulant
###############################################################################
###############################################################################
@ -36,7 +36,7 @@ from volrou_lib import * # Bibliothèque volet roulant
# - Retourne la valeur de la variable à l'instant : get(variable)
# - 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})
@ -44,12 +44,11 @@ from volrou_lib import * # Bibliothèque volet roulant
#
###############################################################################
# Brochage du volet roulant
# Brochage du volet roulant (Maquette Grove)
brochage={
'bp_m' : ['a',1,'i'], 'bp_a' : ['a',0,'i'], 'bp_d' : ['a',2,'i'],
'fdc_h' : ['d',8,'i'], 'fdc_b' : ['d',7,'i'],
'mot_m' : ['d',5,'o'], 'mot_d' : ['d',6,'o'],
# 'bg_auto' : ['d',2,'i'], 'voy_auto' : ['d',4,'o']}
'mot_v' : ['d',3,'p'], 'mot_s' : ['d',4,'o'],
'bg_auto' : ['d',2,'i'], 'voy_auto' : ['d',4,'o'], 'lum' : ['a',3,'i']}
###############################################################################