jumeaux-numeriques/portail_coulissant/porcou_cmd.py

155 lines
5.2 KiB
Python
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from porcou_lib import * # Bibliothèque utilisateur du portail coulissant
###############################################################################
# porcou_cmd.py
# @title: Commandes du portail coulissant
###############################################################################
###############################################################################
# Instructions élémentaires pour le portail coulissant
#
# Actions (ordre = True ou False) :
# - Gyrophare : gyr(True | False)
# - Ouvrir le portail (moteur sens trigo) : mot_o(True | False)
# - Fermer le portail (moteur sens horaire) : mot_f(True | False)
# - Définir la vitesse du moteur : mot_vitesse (vitesse) , vitesse en rad / s, si vitesse est omis la valeur par défaut est 125.6 rad /s ( 20 tr / s ))
# - Emetteur pour le capteur barrage IR : ir_emet(True | False)
#
# Capteurs (valeur retournée = True ou False) :
# - Capteur fin de course portail ouvert : fdc_o()
# - Capteur fin de course portail fermé : fdc_f()
# - Capteur barrage IR (absence d'obstacle) : ir_recep()
#
# Consignes du pupitre (valeur retournée = True ou False) :
# - Bouton poussoir coté rue : bp_ext()
# - Bouton poussoir coté cour : bp_int()
#
# 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 portail coulissant (AutoProgUno)
# brochage={
# 'bp_ext' : ['d',2,'i'],'bp_int' : ['d',3,'i'],
# 'fdc_o' : ['d',7,'i'],'fdc_f' : ['d',8,'i'],
# 'mot_o' : ['d',5,'o'],'mot_f' : ['d',6,'o'],
# 'gyr' : ['d',4,'o'],
# 'ir_emet' : ['d',9,'o'],'ir_recep' : ['d',10,'i']}
# Brochage du portail coulissant (Grove)
brochage={
'bp_ext' : ['d',6,'i'],'bp_int' : ['d',5,'i'],
'fdc_o' : ['a',1,'i'],'fdc_f' : ['a',0,'i'],
'mot_s' : ['d',4,'o'],'mot_v' : ['d',3,'o'],
'gyr' : ['d',2,'o'],
'ir_emet' : ['d',7,'o'],'ir_recep' : ['d',8,'i']}
# 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
###############################################################################
# Fermer le portail
def fermer():
print ("Fermeture")
ir_emet(True)
while fdc_f() ==False:
gyr(True)
mot_o(False)
mot_f(True)
tempo(0.1) # Donne du temps à communication avec le jumeau réel
# if ir_recep()==False or bp_int() or bp_ext() : # Ouverture en cas présence d'obstacle ou boutons
if bp_int() or bp_ext() : # Ouverture en cas présence d'obstacle ou boutons
ouvrir()
print ("Temporisation")
tempo(2) # Temporisation 2s
tempo(0.1) # Donne du temps à communication avec le jumeau réel
gyr(False)
mot_f(False)
ir_emet(False)
# Ouvrir le portail
def ouvrir():
print ("Ouverture")
while fdc_o() ==False:
gyr(True)
mot_f(False)
mot_o(True)
tempo(0.1) # Donne du temps à communication avec le jumeau réel
gyr(False)
mot_o(False)
###############################################################################
# Commandes
###############################################################################
def commandes():
# jumeau(brochage)
# while True :
# gyr(True)
# tempo(0.1) # Donne du temps à communication avec le jumeau réel
# Mise en place : Fermeture
print ("Version avec sécurité : avec réouverture si bouton ou capteur barrage")
print ("Mise en place : Fermeture")
mot_vitesse(1000)
fermer()
# Jumelage
print ("Attente")
# jumeau(brochage)
# Fonctionnement normal
while True :
tempo(0.1) # Donne du temps à communication avec le jumeau réel
# Ouverture
if bp_int() or bp_ext() :
ouvrir()
print ("Temporisation")
tempo(2) # Temporisation 2s
# Fermeture
fermer()
print ("Attente")
###############################################################################
# En: External call << DONT CHANGE THIS SECTION >>
# Fr: Appel externe << NE PAS MODIFIER CETTE SECTION >>
#
# Variante 1 (par défaut) : version Grove : la carte moteur est le shield moteur Arduino CC 4 x 1,2 A DRI0039 (DFROBOT)
# Variante 2 : version AutoProg : la carte moteur est le module AutoProg K-AP-MMOT-KIT
#
###############################################################################
def cycle():
commandes()
fin()
if __name__=='start':
start(cycle)
if __name__=='stop':
stop()
if __name__=='init':
variant(2) # Variante 1 de la maquette 3D du portail coulissant