mirror of
https://forge.apps.education.fr/blender-edutech/jumeaux-numeriques.git
synced 2024-01-27 06:56:18 +01:00
Mise en place du pilotage moteur par le shield moteur suite
This commit is contained in:
parent
a17496d7d4
commit
38accf8a44
@ -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
|
||||
@ -54,13 +67,20 @@ def commandes():
|
||||
voy_0(False)
|
||||
voy_1(True)
|
||||
tempo(0.5)
|
||||
|
||||
|
||||
|
||||
###############################################################################
|
||||
# En: External call << DONT CHANGE THIS SECTION >>
|
||||
# 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
|
||||
|
@ -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()
|
@ -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()
|
@ -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
|
||||
|
@ -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
|
||||
###############################################################################
|
||||
|
@ -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
|
||||
|
@ -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
|
@ -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
|
@ -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']}
|
||||
|
||||
###############################################################################
|
||||
|
Loading…
Reference in New Issue
Block a user