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 10:14]
mrcjl [Acti 2-3 : Créer une temporisation]
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.**
  
 {{:cours:cp.png?20 |}}++++Coups de pousse | {{:cours:cp.png?20 |}}++++Coups de pousse |
Ligne 148: Ligne 168:
   * Je crée une variable ETAT qui prendra les valeurs : 0 Arrêté ; 1 S'ouvre ; 2 Se ferme.   * 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> </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 Variable ETAT = 0+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                                        02 Variable ETAT = 1 +06     Sinon 
-07         Si demande fermeture                      +07         Si bouton fermer appuyé 
-08             PROC-FERMER                          -- [PROC : FERMER] +08             PROC-FERMER                           
-09     Si porte ouverte                             01 Allumer LED rouge (Éteindre verte) +09     Si fin de course porte ouverte activé 
-10         PROC-ARRÊTER                             02 Attendre 3s +10         PROC-ARRÊTER 
-11         Allumer LED verte (Éteindre rouge)       03 Moteur sens fermeture +11         Allumer LED verte (Éteindre rouge) 
-12     Sinon                                        04 Variable ETAT = 2 +12     Sinon 
-13         Si demande ouverture            +13         Si bouton ouvrir appuyé
 14             PROC-OUVRIR 14             PROC-OUVRIR
-15     Si porte se ferme +14     Si porte se ferme (voir variable ETAT) 
-16         Si barrière I/R active+16         Si barrière I/R désactivé
 17             PROC-OUVRIR 17             PROC-OUVRIR
 </code> </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). **Attention, il ne faut pas bloquer le programme pendant la temporisation** et pouvoir conserver l'utilisation du bouton "Fermer". On utilise donc un compteur.+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 :===
Ligne 191: Ligne 230:
  
 {{: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 Variable ETAT = 0+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                                        02 Variable ETAT = 1 +06     Sinon 
-07         Si demande fermeture                     03 Variable TEMPO = 5000+07         Si bouton fermer appuyé
 08             PROC-FERMER                           08             PROC-FERMER                          
-09     Si porte ouverte                             -- [PROC : FERMER] +09     Si fin de course porte ouverte activé 
-10         PROC-ARRÊTER                             01 Allumer LED rouge (Éteindre verte) +10         PROC-ARRÊTER 
-11         Allumer LED verte (Éteindre rouge)       02 Attendre 3s +11         Allumer LED verte (Éteindre rouge) 
-12         Si variable TEMPO <=0                    03 Moteur sens fermeture +12         Si variable TEMPO <=0 
-13             PROC-FERMER                          04 Variable ETAT = 2+13             PROC-FERMER
 14         Sinon 14         Sinon
 15             Attendre 100ms 15             Attendre 100ms
 16             Variable TEMPO = TEMPO - 100 16             Variable TEMPO = TEMPO - 100
-17     Sinon                                         +17     Sinon 
-18         Si demande ouverture            +18         Si bouton ouvrir appuyé
 19             PROC-OUVRIR 19             PROC-OUVRIR
-20     Si porte se ferme +20     Si porte se ferme (voir variable ETAT) 
-21         Si barrière I/R active+21         Si barrière I/R désactivée
 22             PROC-OUVRIR 22             PROC-OUVRIR
 </code> </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.1742289264.txt.gz · Dernière modification: 2025/03/18 10:14 de mrcjl