from volrou_lib import * # Bibliothèque 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) # - 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 # - 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) # - 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 volet roulant (Maquette Grove) brochage={ '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'], 'mot_v' : ['d',3,'p'], 'mot_s' : ['d',4,'o'], 'bg_auto' : ['d',5,'i'], 'voy_auto' : ['d',2,'o'], 'lum' : ['a',2,'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 : 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() if __name__=='start': start(cycle) if __name__=='stop': stop() if __name__=='init': variant(1) # Variante maquette Grove avec bouton à glissière