diff --git a/Lycee/programmation_python/si/portail_coulissant/DT - Simulateur3D.odp b/Lycee/programmation_python/si/portail_coulissant/DT - Simulateur3D.odp new file mode 100644 index 0000000..16889a6 Binary files /dev/null and b/Lycee/programmation_python/si/portail_coulissant/DT - Simulateur3D.odp differ diff --git a/Lycee/programmation_python/si/portail_coulissant/DT - Simulateur3D.pdf b/Lycee/programmation_python/si/portail_coulissant/DT - Simulateur3D.pdf new file mode 100644 index 0000000..006955b Binary files /dev/null and b/Lycee/programmation_python/si/portail_coulissant/DT - Simulateur3D.pdf differ diff --git a/Lycee/programmation_python/si/portail_coulissant/porcou_cmd-correction-simple.py b/Lycee/programmation_python/si/portail_coulissant/porcou_cmd-correction-simple.py new file mode 100644 index 0000000..aa2980d --- /dev/null +++ b/Lycee/programmation_python/si/portail_coulissant/porcou_cmd-correction-simple.py @@ -0,0 +1,95 @@ +import bge # Bibliothèque Blender Game Engine (UPBGE) +import threading # Multithreading +from porcou_lib import * # Bibliothèque portail coulissant + +############################################################################### +# porcou_cmd.pyg +# @title: Commandes du portail coulissant +############################################################################### + +scene = bge.logic.getCurrentScene() + +############################################################################### +# Execution des commandes utilisateurs dans une tâche séparée (thread) de UPBGE << NE PAS MODIFIER CETTE SECTION >> +############################################################################### + +threads=[] + +def start(): + threads.append(threading.Thread(target=commandes)) + print ("Thread start() ...") + threads[len(threads)-1].start() + +def stop(): + print ("Thread join() ...") + threads[len(threads)-1].join(0.1) + +############################################################################### +# Instructions élémentaires pour le portail coulissant +# +# Actions (ordre = True ou False) : : +# - Gyrophare : gyr (True|False) +# - Ouvrir le portail (moteur sens trigo) : mo_o (True|False) +# - Fermer le portail (moteur sens horaire) : mo_f (True|False) +# +# Capteurs (valeur retournée = True ou False) : +# - Capteur fin de course portail ouvert : fc_o() +# - Capteur fin de course portail fermé : fc_f() +# - Capteur barrage IR : ir_recep() +# +# 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) +# +############################################################################### + + +############################################################################### +# Fonctions +############################################################################### + + +############################################################################### +# Commandes +############################################################################### + +def commandes(): + scene.objects['Systeme']['thread_alive']=True # Tâche vivante (thread) << NE PAS MODIFIER CETTE LIGNE >> + + ############################################################################### + # Allee-retour + ############################################################################### + + # Mise en place : Fermeture + while (fc_f() ==False) : + gyr(True) + mot_f(True) + mot_f(False) + gyr(False) + + # Fonctionnement normal + while True : + + # Ouverture + if bp_int() or bp_ext() : + while fc_o() ==False: + gyr(True) + mot_o(True) + gyr(False) + mot_o(False) + + tempo(2) # Temporisation + + # Fermeture + while fc_f() ==False: + gyr(True) + mot_f(True) + gyr(False) + mot_f(False) + + + scene.objects['Systeme']['thread_alive']=False # Tâche morte (thread) << NE PAS MODIFIER CETTE LIGNE >> + print ("Thread fermé") diff --git a/Lycee/programmation_python/si/portail_coulissant/porcou_cmd-correction.py b/Lycee/programmation_python/si/portail_coulissant/porcou_cmd-correction.py new file mode 100644 index 0000000..194f940 --- /dev/null +++ b/Lycee/programmation_python/si/portail_coulissant/porcou_cmd-correction.py @@ -0,0 +1,97 @@ +import bge # Bibliothèque Blender Game Engine (UPBGE) +import threading # Multithreading +from porcou_lib import * # Bibliothèque portail coulissant + +############################################################################### +# porcou_cmd.py +# @title: Commandes du portail coulissant +############################################################################### + +scene = bge.logic.getCurrentScene() + +############################################################################### +# Execution des commandes utilisateurs dans une tâche séparée (thread) de UPBGE << NE PAS MODIFIER CETTE SECTION >> +############################################################################### + +threads=[] + +def start(): + threads.append(threading.Thread(target=commandes)) + print ("Thread start() ...") + threads[len(threads)-1].start() + +def stop(): + print ("Thread join() ...") + threads[len(threads)-1].join(0.1) + +############################################################################### +# Instructions élémentaires pour le portail coulissant +# +# Actions (ordre = True ou False) : +# - Gyrophare : gyr (True|False) +# - Ouvrir le portail (moteur sens trigo) : mo_o (True|False) +# - Fermer le portail (moteur sens horaire) : mo_f (True|False) +# - Emetteur pour le capteur barrage IR : ir_emet(True|False) +# +# Capteurs (valeur retournée = True ou False) : +# - Capteur fin de course portail ouvert : fc_o() +# - Capteur fin de course portail fermé : fc_f() +# - Capteur barrage IR (absence d'obstacle) : ir_recep() +# +# 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) +# +############################################################################### + +# Fermer le portail +def fermer(): + ir_emet(True) + while fc_f() ==False: + gyr(True) + mot_o(False) + mot_f(True) + if ir_recep()==False or bp_int() or bp_ext() : # Ouverture en cas présence d'obstacle ou boutons + ouvrir() + tempo(2) # Temporisation 2s + gyr(False) + mot_f(False) + ir_emet(False) + +# Ouvrir le portail +def ouvrir(): + while fc_o() ==False: + gyr(True) + mot_f(False) + mot_o(True) + gyr(False) + mot_o(False) + + +def commandes(): + scene.objects['Systeme']['thread_alive']=True # Tâche vivante (thread) << NE PAS MODIFIER CETTE LIGNE >> + + ############################################################################### + # Allée-retour avec la sécurité anti-écrasement lors de la fermeture + ############################################################################### + + # Mise en place : Fermeture + fermer() + + # Fonctionnement normal + while True : + + # Ouverture + if bp_int() or bp_ext() : + ouvrir() + + tempo(2) # Temporisation 2s + + # Fermeture + fermer() + + scene.objects['Systeme']['thread_alive']=False # Tâche morte (thread) << NE PAS MODIFIER CETTE LIGNE >> + print ("Thread fermé")