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 ############################################################################### ############################################################################### # 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