mirror of
https://forge.apps.education.fr/blender-edutech/jumeaux-numeriques.git
synced 2024-01-27 06:56:18 +01:00
179 lines
7.0 KiB
Python
179 lines
7.0 KiB
Python
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)
|
|
# - 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
|
|
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 : 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
|