2023-02-15 17:56:49 +01:00
from volrou_lib import * # Bibliothèque volet roulant
2022-12-18 22:46:19 +01:00
###############################################################################
2024-01-18 04:35:49 +01:00
# volrou_cmd.py
# @title: Commandes du volet roulant
2022-12-18 22:46:19 +01:00
###############################################################################
###############################################################################
# Instructions élémentaires pour le volet roulant
#
# Actions (ordre = True ou False) :
2022-12-23 14:30:13 +01:00
# - Monter le volet (moteur sens trigo) : mot_m(True | False)
# - Descendre le volet (moteur sens horaire) : mot_d(True | False)
2024-01-18 04:08:18 +01:00
# - 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)
2022-12-18 22:46:19 +01:00
#
2023-02-16 02:17:55 +01:00
# 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
2022-12-18 22:46:19 +01:00
#
2022-12-23 14:30:13 +01:00
# 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()
2023-02-15 17:56:49 +01:00
# - Bouton poussoir mode automatique : bg_auto()
2022-12-23 14:30:13 +01:00
#
# Retour d'information du pupitre (allumer = True ou False) :
# - Voyant témoin mode automatique : voy_auto(True | False)
2022-12-18 22:46:19 +01:00
#
# Gestion du temps :
# - Temporisation en seconde : tempo(duree)
2024-01-18 04:08:18 +01:00
# - 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, ... ])
2024-01-18 04:35:49 +01:00
#
2024-01-18 04:08:18 +01:00
# Jumelage :
# - Démarrer le jumelage : jumeau({brochage})
# - Arrêter le jumelage : jumeau_stop({brochage})
# - Définir les règles d'activation : jumeau_mode({brochage})
2022-12-18 22:46:19 +01:00
#
###############################################################################
2024-01-18 04:35:49 +01:00
# Brochage du volet roulant (Maquette Grove)
2023-02-15 17:56:49 +01:00
brochage = {
2024-01-18 04:53:16 +01:00
' bp_m ' : [ ' d ' , 6 , ' i ' ] , ' bp_a ' : [ ' d ' , 7 , ' i ' ] , ' bp_d ' : [ ' d ' , 8 , ' i ' ] ,
' fdc_h ' : [ ' a ' , 0 , ' i ' ] , ' fdc_b ' : [ ' a ' , 1 , ' i ' ] ,
2024-01-18 04:35:49 +01:00
' mot_v ' : [ ' d ' , 3 , ' p ' ] , ' mot_s ' : [ ' d ' , 4 , ' o ' ] ,
2024-01-18 04:53:16 +01:00
' bg_auto ' : [ ' d ' , 5 , ' i ' ] , ' voy_auto ' : [ ' d ' , 2 , ' o ' ] , ' lum ' : [ ' a ' , 2 , ' i ' ] }
2023-02-15 17:56:49 +01:00
2022-12-18 22:46:19 +01:00
###############################################################################
# Fonctions
###############################################################################
###############################################################################
# Commandes
###############################################################################
def commandes ( ) :
2023-01-20 18:31:51 +01:00
2023-02-15 17:56:49 +01:00
# Mise en place : Monter le volet
print ( " Volet roulant mode manuel, mode auto avec temporisation " )
print ( " Mise en place : Monter le volet " )
2023-01-20 18:31:51 +01:00
while fdc_h ( ) == False :
mot_d ( False )
mot_m ( True )
mot_m ( False )
2023-01-28 17:39:15 +01:00
2023-02-15 17:56:49 +01:00
# 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
2023-02-03 05:58:20 +01:00
2023-02-15 17:56:49 +01:00
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
2022-12-18 22:46:19 +01:00
2023-02-15 17:56:49 +01:00
# 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
2022-12-18 22:46:19 +01:00
###############################################################################
# En: External call << DONT CHANGE THIS SECTION >>
# Fr: Appel externe << NE PAS MODIFIER CETTE SECTION >>
###############################################################################
2024-01-18 04:08:18 +01:00
###
# 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.
###
2024-01-06 10:19:56 +01:00
def cycle ( ) :
commandes ( )
fin ( )
2022-12-18 22:46:19 +01:00
if __name__ == ' start ' :
2024-01-06 10:19:56 +01:00
start ( cycle )
2022-12-18 22:46:19 +01:00
if __name__ == ' stop ' :
2023-01-07 10:42:19 +01:00
stop ( )
2024-01-14 09:08:49 +01:00
if __name__ == ' init ' :
2024-01-18 04:08:18 +01:00
variant ( 1 ) # Variante maquette Grove avec bouton à glissière