Outils pour utilisateurs

Outils du site


cours:picaxe3

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
cours:picaxe3 [2025/03/18 09:15]
mrcjl [Acti 2-1 : Utiliser des sous programme/fonction]
cours:picaxe3 [2025/04/04 13:49] (Version actuelle)
mrcjl [Acti 2-2 : Utiliser une variable]
Ligne 68: Ligne 68:
 02 Répéter indéfiniment 02 Répéter indéfiniment
  
-03     Si Porte fermée+03     Si Fin de course porte fermée activé
 04         Mettre le moteur à l'arrêt 04         Mettre le moteur à l'arrêt
 05     Sinon  05     Sinon 
-06         Si demande de fermeture+06         Si bouton fermer appuyé
 07             Démarrer la fermeture 07             Démarrer la fermeture
  
-08     Si Porte ouverte+08     Si Fin de course porte ouverte activé
 09         Mettre le moteur à l'arrêt 09         Mettre le moteur à l'arrêt
 10     Sinon 10     Sinon
-11         Si demande ouverture+11         Si bouton ouvrir appuyé
 12             Démarrer ouverture 12             Démarrer ouverture
 . .
Ligne 99: Ligne 99:
  
 ====Acti 2-1 : Utiliser des sous programme/fonction==== ====Acti 2-1 : Utiliser des sous programme/fonction====
-Pour rendre le programme modulaire (faciliter les modifications ultérieures) nous allons utiliser 3 sous-programmes/procédures "OUVRIR", "FERMER" et "ARRÊTER". Nous allons aussi utiliser les voyants pour informer l'utilisateur (rouge ne pas passer et vert/jaune passer) ainsi qu'une temporisation de 3s entre l'allumage du voyant rouge et la fermeture de la porte.+Pour rendre le programme modulaire (faciliter les modifications ultérieures) nous allons utiliser 3 sous-programmes/procédures "OUVRIR", "FERMER" et "ARRÊTER" 
 + 
 +Nous allons aussi utiliser les voyants pour informer l'utilisateur (rouge ne pas passer et vert/jaune passer) ainsi qu'une temporisation de 3s entre l'allumage du voyant rouge et la fermeture de la porte. ATTENTION : 1 seul voyant est allumé à un instant donné. \\ Il faut donc déterminer à quel moment les allumer.
  
 {{:cours:cp.png?20 |}}++++Coups de pousse 1 | {{:cours:cp.png?20 |}}++++Coups de pousse 1 |
Ligne 114: Ligne 116:
 <WRAP round caution> <WRAP round caution>
   * Si une LED est allumée, l'autre est éteinte   * Si une LED est allumée, l'autre est éteinte
-  * A l'initialisation, le moteur est arrêté et la LED rouge +  * A l'initialisation, le moteur est arrêté et la LED rouge allumée 
-  * La LED n'est verte que si la porte est complètement ouverte +  * La LED n'est verte que si la porte est complètement ouverte (fin de course ouvert) 
-  * Si on veut fermer la porte, il faut attendre 3s après avoir allumer LED rouge+  * Si on veut fermer la porte (Bouton fermer), il faut attendre 3s après avoir allumer LED rouge
 </WRAP> </WRAP>
 ++++ ++++
  
 {{:cours:soluce.jpg?20 |}}++++Algorithme type | {{:cours:soluce.jpg?20 |}}++++Algorithme type |
 +<WRAP group><WRAP half column>
 <code> <code>
--- [PROG PRINCIPAL]                                 -- [PROC : ARRÊTER]                            +-- [PROG PRINCIPAL]                                                             
-01 Allumer LED rouge (Éteindre verte)               01 Arrêter le moteur +01 Allumer LED rouge (Éteindre verte) 
-02 PROC-ARRÊTER                          +02 PROC-ARRÊTER
 03 Répéter indéfiniment 03 Répéter indéfiniment
-04     Si porte fermée                              -- [PROC : OUVRIR]                             +04     Si fin de course porte fermée activé 
-05         PROC-ARRÊTER                             01 Moteur sens ouverture                      +05         PROC-ARRÊTER
 06     Sinon 06     Sinon
-07         Si demande fermeture                     -- [PROC : FERMER] +07         Si bouton fermer appuyé 
-08             PROC-FERMER                          01 Allumer LED rouge (Éteindre verte) +08             PROC-FERMER 
-09     Si porte ouverte                             02 Attendre 3s +09     Si fin de course porte ouverte activé 
-10         PROC-ARRÊTER                             03 Moteur sens fermeture+10         PROC-ARRÊTER
 11         Allumer LED verte (Éteindre rouge) 11         Allumer LED verte (Éteindre rouge)
 12     Sinon 12     Sinon
-13         Si demande ouverture            +13         Si bouton ouvrir appuyé
 14             PROC-OUVRIR 14             PROC-OUVRIR
 </code> </code>
 +</WRAP><WRAP half column>
 +<code>
 +
 +-- [PROC : ARRÊTER]
 +01 Arrêter le moteur
 +
 +-- [PROC : OUVRIR]
 +01 Moteur sens ouverture
 +
 +-- [PROC : FERMER]
 +01 Allumer LED rouge (Éteindre verte)
 +02 Attendre 3s
 +03 Moteur sens fermeture
 +
 +</code>
 +</WRAP></WRAP>
 ++++ ++++
 ====Acti 2-2 : Utiliser une variable==== ====Acti 2-2 : Utiliser une variable====
-Nous voulons que la barrière infra rouge provoque la réouverture de la porte si elle détecte une personne lors de la fermeture. (Il faut donc se rappeler que la porte est en train de se fermer.)+Nous voulons que la barrière infra rouge provoque la réouverture de la porte si elle __détecte une personne lors de la fermeture__. (//Il faut donc se rappeler que la porte est en train de se fermer et utiliser une variable pour celaen effet, aucun capteur n'indique le sens du mouvement, seule la fin de celui-ci est détecté par les fins de course.//\\ 
 +**ATTENTION : Le capteur infrarouge est __désactivé__ si une personne est présente.**
  
-===Coup de pousse :=== +{{:cours:cp.png?20 |}}++++Coups de pousse 
-  * Je crée une variable ETAT qui prendra les valeurs : 0 Fermée ; 1 S'ouvre ; 2 Ouverte et 3 Se ferme.+<WRAP round caution> 
 +Blocs supplémentaires à utiliser ci-contre. 
 +{{ :cours:blocsportes3.jpg?200|}} 
 +  * Je crée une variable ETAT qui prendra les valeurs : 0 Arrêté ; 1 S'ouvre ; 2 Se ferme.
   * Modifier le programme et les sous programmes pour tenir compte des différents états.   * Modifier le programme et les sous programmes pour tenir compte des différents états.
-  * Ajouter dans le programme principal l'utilisation de la barrière infra rouge.+  * Ajouter dans le programme principal l'utilisation de la barrière infra rouge qui remplace alors le bouton ouvrir si besoin. 
 +</WRAP> 
 +++++ 
 +{{:cours:soluce.jpg?20 |}}++++Algorithme type | 
 +<WRAP group><WRAP half column> 
 +<code> 
 +-- [PROG PRINCIPAL] 
 +01 Allumer LED rouge (Éteindre verte) 
 +02 PROC-ARRÊTER 
 +03 Répéter indéfiniment 
 +04     Si fin de course porte fermée activé 
 +05         PROC-ARRÊTER 
 +06     Sinon 
 +07         Si bouton fermer appuyé 
 +08             PROC-FERMER                           
 +09     Si fin de course porte ouverte activé 
 +10         PROC-ARRÊTER 
 +11         Allumer LED verte (Éteindre rouge) 
 +12     Sinon 
 +13         Si bouton ouvrir appuyé 
 +14             PROC-OUVRIR 
 +14     Si porte se ferme (voir variable ETAT) 
 +16         Si barrière I/R désactivé 
 +17             PROC-OUVRIR 
 +</code> 
 +</WRAP><WRAP half column> 
 +<code> 
 + 
 +-- [PROC : ARRÊTER] 
 +01 Arrêter le moteur 
 +02 Variable ETAT = 0 
 + 
 +-- [PROC : OUVRIR] 
 +01 Moteur sens ouverture 
 +02 Variable ETAT = 1 
 + 
 +-- [PROC : FERMER] 
 +01 Allumer LED rouge (Éteindre verte) 
 +02 Attendre 3s                               
 +03 Moteur sens fermeture 
 +04 Variable ETAT = 2 
 + 
 +</code> 
 +</WRAP></WRAP> 
 +++++
  
 ====Acti 2-3 : Créer une temporisation==== ====Acti 2-3 : Créer une temporisation====
-Nous voulons que sans appui sur le bouton de fermeture la porte se referme seule au bout d'un temps défini (5s pour les essais). **Attention, il ne faut pas bloquer le programme pendant la temporisation** car on peut appuyer sur fermeture pour ne pas attendre.+Nous voulons que sans appui sur le bouton de fermeture la porte se referme seule au bout d'un temps défini (5s). **Attention, il ne faut pas bloquer le programme pendant la temporisation** et pouvoir utiliser le bouton "Fermer" à tout moment. On utilise donc un compteur avec un petit temps d'attente (< 0.5 s) pour ne pas bloquer le programme.
  
 ===Coup de pousse :=== ===Coup de pousse :===
-  * Je crée une variable TEMPO que j'initialise à 5000 ms (5s) lorsque la porte termine de s'ouvrir. + 
-  * Si la porte est en position "Ouverte", j'attends 100 ms et je diminue TEMPO d'autant. +{{:cours:cp.png?20 |}}++++Coups de pousse | 
-  * Lorsque la TEMPO est <= 0, je referme la porte comme si j'avais appuyé sur le  bouton.+<WRAP round caution> 
 +Bloc supplémentaire à utiliser ci-contre. 
 +{{ :cours:blocsportes4.jpg?200|}} 
 +  * Je crée une variable TEMPO que j'initialise à 5000 ms (5s) lorsque je demande à ouvrir la porte 
 +  * Si la porte est en position "Ouverte" et TEMPO <= 0je referme la porte comme si j'avais appuyé sur le bouton 
 +  * Sinon j'attends 100 ms et je diminue TEMPO d'autant 
 +</WRAP> 
 +++++ 
 + 
 +{{:cours:soluce.jpg?20 |}}++++Algorithme type | 
 +<WRAP group><WRAP half column> 
 +<code> 
 +-- [PROG PRINCIPAL] 
 +01 Allumer LED rouge (Éteindre verte) 
 +02 PROC-ARRÊTER 
 +03 Répéter indéfiniment 
 +04     Si fin de course porte fermée activé 
 +05         PROC-ARRÊTER 
 +06     Sinon 
 +07         Si bouton fermer appuyé 
 +08             PROC-FERMER                           
 +09     Si fin de course porte ouverte activé 
 +10         PROC-ARRÊTER 
 +11         Allumer LED verte (Éteindre rouge) 
 +12         Si variable TEMPO <=0 
 +13             PROC-FERMER 
 +14         Sinon 
 +15             Attendre 100ms 
 +16             Variable TEMPO = TEMPO - 100 
 +17     Sinon 
 +18         Si bouton ouvrir appuyé 
 +19             PROC-OUVRIR 
 +20     Si porte se ferme (voir variable ETAT) 
 +21         Si barrière I/R désactivée 
 +22             PROC-OUVRIR 
 +</code> 
 +</WRAP><WRAP half column> 
 +<code> 
 + 
 +-- [PROC : ARRÊTER] 
 +01 Arrêter le moteur 
 +02 Variable ETAT = 0 
 + 
 +-- [PROC : OUVRIR] 
 +01 Moteur sens ouverture 
 +02 Variable ETAT = 1 
 +03 Variable TEMPO = 5000 
 + 
 +-- [PROC : FERMER] 
 +01 Allumer LED rouge (Éteindre verte) 
 +02 Attendre 3s                               
 +03 Moteur sens fermeture 
 +04 Variable ETAT = 2 
 + 
 +</code> 
 +</WRAP></WRAP> 
 +++++
  
cours/picaxe3.1742285730.txt.gz · Dernière modification: 2025/03/18 09:15 de mrcjl