Outils pour utilisateurs

Outils du site


cours:picaxe1

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:picaxe1 [2024/03/07 10:10]
mrcjl
cours:picaxe1 [2024/03/26 09:44] (Version actuelle)
mrcjl [Exercice 4 : L'interrupteur crépusculaire]
Ligne 1: Ligne 1:
 ~~NOTOC~~ ~~NOTOC~~
-=======Découverte de la programmation des objets (PICAXE)========+======Découverte de la programmation des objets (PICAXE)=======
 Pour aller plus loin dans les activités de programmation, nous allons quitter Scratch et ses animations sur l'ordinateur pour la programmation d'objets **domotiques** grâce à Blockly pour Picaxe. Pour aller plus loin dans les activités de programmation, nous allons quitter Scratch et ses animations sur l'ordinateur pour la programmation d'objets **domotiques** grâce à Blockly pour Picaxe.
  
Ligne 14: Ligne 14:
 </WRAP> </WRAP>
  
-=====Présentation=====+Dans cette activité, nous allons programmer des objets simples de la vie quotidienne, une sonnette, un clignotant, un interrupteur d'éclairage manuel et un automatique.  
 <WRAP round tip>**La domotique** regroupe l'ensemble des techniques et technologies permettant d'automatiser, de programmer et de gérer les tâches de confort, de sécurité, de maintenance et plus généralement de services dans l'habitat individuel ou collectif. \\ <WRAP round tip>**La domotique** regroupe l'ensemble des techniques et technologies permettant d'automatiser, de programmer et de gérer les tâches de confort, de sécurité, de maintenance et plus généralement de services dans l'habitat individuel ou collectif. \\
 Le mot est un néologisme, formé à partir du mot latin domus , (le domicile), et du suffixe -tique signifiant relatif à, que l'on retrouve dans électronique, électrotechnique, robotique et l'informatique. Le mot est un néologisme, formé à partir du mot latin domus , (le domicile), et du suffixe -tique signifiant relatif à, que l'on retrouve dans électronique, électrotechnique, robotique et l'informatique.
 </WRAP> </WRAP>
  
-Nous allons utiliser une carte programmable PICAXE AXE092 qui comporte : {{ :cours:axe092.jpg?400|}} +=====Présentation de la maquette===== 
-  un capteur **BOUTON POUSSOIR, branché en C.3**, qui détectera notre choix logique (appuyé/non appuyé). +Nous allons utiliser une **carte programmable PICAXE AXE092** qui comporte un **microcontrôleur PICAXE 08M2**.
-  * trois actionneurs **LEDs (rouge, jaune et verte), branché respectivement en C.0, C.1 et C.2**, qui génèrent de la lumière en fonction du programme (un buzzer est en parallèle de la led verte). +
-  un capteur **CELLULE PHOTOÉLECTRIQUE, branché en C.4**, qui mesurera la lumière existante autour de nous. +
 <WRAP round info> <WRAP round info>
-  * C.0, C.1, C.2, C.4 peuvent être utilisées en sortie numérique,  +<WRAP group><WRAP half column> 
-  C.1, C.2, C.3, C.4, C.5 peuvent être utilisées en entrée numérique,  +Toutes les **broches d'un microcontrôleur*ne sont pas équivalentes
-  C.2 peut être utilisée en sortie analogique. +
-  C.1, C.2, C.4 peuvent être utilisées en entrée analogique, +
-</WRAP>+
  
-**L'application utilisée pour la programmation est [[cours:picaxe|Blockly pour Picaxe]] (voir l'utilisation si besoin).** Un simulateur est disponible sur la même page si l'on ne dispose pas de la maquette réelle.+Il faut déterminer quel **capteur (entrée)** ou quel **actionneurs (sortie)** on peut lui connecter en fonction du **type de l'information logique ou analogique**. 
 +</WRAP><WRAP half column> 
 +^  C.0  ^  C.1  ^  C.2  ^  C.3  ^  C.4  ^  C.5  ^   Utilisation 
 +|  X  |  X  |  X  |      X  |     | Sortie numérique (SN)|  
 +|      X  |  X  |  X  |  X  |  X  | Entrée numérique (EN)|  
 +|          X  |             | Sortie analogique (SA)| 
 +|      X  |  X  |      X  |     | Entrée analogique (EA)| 
 +</WRAP></WRAP></WRAP>
  
-  * **Blockly** : Il faut créer un nouveau projet et définir **PICAXE 08M2** (Paramètres - Type de PICAXE). +<WRAP group><WRAP half column> 
-  * **Simulateur** : Il faut charger la maquette **Axe092** (Dossier : Maquettes\Découverte\).+ : {{ :cours:axe092.jpg?350 |}} 
 +</WRAP><WRAP half column> 
 +^  Br  ^  Ty  ^  Nom  ^  Utilisation 
 +|  C.0  |  SN  |  LED rouge  | Visualisation d'une information |  
 +|  C.1  |  SN  |  LED jaune  | Visualisation d'une information |  
 +|  C.2  |  SN  |  LED verte  | Visualisation d'une information |  
 +|  C.3  |  EN  |  Bouton poussoir  | Demande d'une action |  
 +|  C.4  |  EA  |  LDR  | Mesure de la lumière |  
 +</WRAP></WRAP> 
 +  * Un bouton poussoir est activé si on appuie dessus, et il se désactive seul si on le relâche (ressort). 
 +  * Un actionneur garde la dernière information reçue mais il ne peut pas "être lu" par le microcontrôleur. 
 + 
 +**L'application utilisée pour la programmation est [[cours:picaxe|Blockly pour Picaxe]]** (voir l'utilisation si besoin). Un **simulateur est disponible sur la même page** si l'on ne dispose pas de la maquette réelle. 
 + 
 +===Configuration=== 
 +  * **Blockly** : Il faut créer un nouveau projet et définir le **PICAXE 08M2** (Paramètres - Type de PICAXE - 08M2). 
 +  * **Simulateur** : Il faut charger la maquette **Axe092** (Fichier - Ouvrir - Maquettes Découverte - Axe092).
  
 =====Exercices===== =====Exercices=====
Ligne 42: Ligne 60:
   * Recopier le problème   * Recopier le problème
   * Trouver et écrire l'algorithme   * Trouver et écrire l'algorithme
-  * le traduire en programme et le tester sur la maquette ou le simulateur +  * Le traduire en programme avec Blockly et coller la solution sur la feuille  
-  * Faire voir le résultat au professeur qui vous remettra un programme imprimée à coller sur la feuille.+  * Le tester (maquette ou simulateur) pour vérifier le fonctionnement et le corriger si besoin (algorithme et programme). 
 +  * Faire voir le résultat au professeur qui vous remettra la solution imprimée à coller sur la feuille.
 </WRAP> </WRAP>
  
 Il s'agit, en plus que d'apprendre à programmer, d'apprendre à travailler en autonomie et à augmenter seul ses compétences. Il s'agit, en plus que d'apprendre à programmer, d'apprendre à travailler en autonomie et à augmenter seul ses compétences.
 +  * Vous devez utiliser vos cours dans votre classeur pour vous aider.
   * Essayer de faire les exercices sans lire les "Coups de pousse". Ne les utiliser qu'en cas de difficulté.   * Essayer de faire les exercices sans lire les "Coups de pousse". Ne les utiliser qu'en cas de difficulté.
-  * Vous pouvez aussi utiliser vos cours dans votre classeur pour vous aider. 
   * Relisez-vous et contrôler votre montage et votre programme.   * Relisez-vous et contrôler votre montage et votre programme.
   * N'appeler le professeur que lorsque l'exercice est réussi ou pour de gros problèmes.   * N'appeler le professeur que lorsque l'exercice est réussi ou pour de gros problèmes.
   * Faites bien attention à ce que vous venez de réaliser, cela rendra plus facile les exercices suivants ou vous rencontrerez les mêmes demandes.   * Faites bien attention à ce que vous venez de réaliser, cela rendra plus facile les exercices suivants ou vous rencontrerez les mêmes demandes.
  
-Les solutions des exercices sont détaillées dans le prochain cours pour renforcer les connaissances sur la programmation. +====Exercice 1 : La sonnette lumineuse==== 
- +
-====Exercice 1 : La sonnette lumineuse====+
 {{ :cours:sonnette.jpg?100|}} {{ :cours:sonnette.jpg?100|}}
-**Nous voulons que la LED verte s'allume uniquement lorsque le bouton est appuyé** (soit éteinte lorsque le bouton est relâché)\\ +**Nous voulons que la LED verte s'allume uniquement lorsque le bouton est appuyé.** Elle est éteinte lorsque le bouton est relâché. Le programme ne doit pas avoir de fin pour qu'il puisse détecter des appuis successifs sur le bouton.
-(Il faut bien sur que le programme n'ai pas de fin pour qu'il puisse détecter des appuis successifs sur le bouton.) +
- +
-===Travail à faire=== +
-  * écrire dans votre classeur le problème et l'algorithme correspondant, +
-  * le traduire en programme avec Blockly et le téléverser dans la maquette, +
-  * en tester le fonctionnement et appeler le professeur s'il fonctionne.+
  
 {{:cours:cp.png?20 |}}++++Coups de pousse | {{:cours:cp.png?20 |}}++++Coups de pousse |
 <WRAP round box> <WRAP round box>
-  * Il faut une boucle "Répéter indéfiniment" (ou synonyme) pour que le programme n'ai pas de fin+===Pour l'algorithme=== 
-  * Il faut tester un/une capteur/entrée pour savoir si l'on doit allumer ou éteindre. +**Il n'est pas nécessaire de faire des phrases mais on doit utiliser des mots clés + verbe d'action + capteur/actionneur + état.** 
-  * Il faut modifier un/une actionneur/sortie pour allumer ou éteindre. +  * Il faut **répéter indéfiniment le programme si l'on veut pouvoir répéter les mêmes actions** (ex. appuyer plusieurs fois)
-  * Un signal électrique est dit à désactivé/0/bas s'il est absent/éteint/relâché et à activé/1/haut s'il est présent/allumé/appuyé.+  * Il faut lire le **capteur (= entrée)** pour savoir si l'on doit allumer ou éteindre (un capteur est lu par le programme mais le programme ne peut pas le modifier)
 +  * Il faut modifier un **actionneur (= sortie)** pour allumer ou éteindre (un actionneur est modifié par le programme mais le programme ne peut pas lire son état). 
 +===Pour le programme=== 
 +  * Un signal électrique est dit : **désactivé**/0/bas s'il est absent/éteint/relâché ou **activé**/1/haut s'il est présent/allumé/appuyé 
 +  * Un nom de capteur ou d'actionneur est remplacé par sa broche (et un nom de variable par son code) 
 +  * Blocs utiles : Sorties -> Sortie ; Entrées -> Si ; Boucles -> Répéter
 </WRAP> </WRAP>
 ++++ ++++
Ligne 76: Ligne 92:
 {{:cours:soluce.jpg?20 |}}++++Solution type | {{:cours:soluce.jpg?20 |}}++++Solution type |
 <WRAP round box><WRAP group><WRAP half centeralign column> <WRAP round box><WRAP group><WRAP half centeralign column>
-**ALGORITHME**+++++**ALGORITHME**|
 <code> <code>
 Répéter indéfiniment Répéter indéfiniment
Ligne 84: Ligne 100:
         Éteindre led rouge         Éteindre led rouge
 </code> </code>
 +++++
 </WRAP><WRAP half centeralign column> </WRAP><WRAP half centeralign column>
-**PROGRAMME**+++++**PROGRAMME**|
 {{ :cours:picaxe_prog_1.png?200 |}} {{ :cours:picaxe_prog_1.png?200 |}}
 +++++
 </WRAP></WRAP> </WRAP></WRAP>
 Repérez bien les **indentations** de l'algorithme et leur traduction dans le programme, les différentes catégories de blocs disponibles et leur couleur : Repérez bien les **indentations** de l'algorithme et leur traduction dans le programme, les différentes catégories de blocs disponibles et leur couleur :
Ligne 98: Ligne 116:
 ====Exercice 2 : Le clignotant==== ====Exercice 2 : Le clignotant====
 {{ :cours:clignotant.jpg?100|}} {{ :cours:clignotant.jpg?100|}}
-**Nous voulons que la LED jaune clignote 5 fois en 5 secondes lorsque le bouton est appuyé** et reste éteinte autrement. Le programme doit se répéter comme le précédent.+**Nous voulons que la LED jaune clignote 5 fois en 5 secondes lorsque le bouton est appuyé** et reste éteinte autrement. Le programme doit se répéter à chaque demande comme le précédent.
  
-===Travail à faire=== +{{:cours:cp.png?20 |}}++++Coups de pousse : Faire clignoter| 
-  * écrire dans votre classeur le problème et l'algorithme correspondant, +<WRAP round box> 
-  * le traduire en programme et le téléverser, +  * Clignoter, c'est allumer puis éteindre. (Beaucoup de langages ne connaissent pas le mot clignoter).  
-  * en tester le fonctionnement et appeler le professeur s'il fonctionne.+  * Le microcontrôleur (> 1000 actions par secondes) étant plus rapide que notre œil (maxi 25 images par secondes)il faut pour voir les clignotements le ralentir (attention clignoter = 1/2 allumé et 1/2 éteint; 1 seconde = 1000 ms). 
 +</WRAP> 
 +++++
  
-{{:cours:cp.png?20 |}}++++Coups de pousse |+{{:cours:cp.png?20 |}}++++Coups de pousse : Compter les clignotements|
 <WRAP round box> <WRAP round box>
-  * Attention au nombre de clignotements. Il faut utiliser une variable pour faire un compteur +  * Il faut utiliser une variable pour fixer la valeur du compteur au début (0 ou 1) 
-  * Pour un compteur, il faut fixer sa valeur à 0 au début, ajouter à chaque itération et s'arrêter de répéter à la valeur finale+  * Il faut utiliser une condition fonction de la valeur de fin pour l'arrêter (ex. compter jusqu'à 5 : si début = -> fin = 5 ; si début -> fin > 5)
-  * Pour voir les clignotements, il faut ralentir le fonctionnement du microprocesseur en fonction du temps désiré (attention clignoter = 1/2 allumé et 1/2 éteint).+  * Il faut ajouter au compteur à chaque **itération**/répétition pour le faire progresser.
 </WRAP> </WRAP>
 ++++ ++++
Ligne 118: Ligne 138:
 Le programme doit fonctionner lui aussi en permanence. Le programme doit fonctionner lui aussi en permanence.
  
-===Travail à faire === +**RAPPELS*: Le microcontrôleur peut lire mais pas modifier un capteur et peut modifier mais pas lire un actionneur.
-  écrire dans votre classeur le problème et l'algorithme correspondant, +
-  le traduire en programme et le téléverser, +
-  en tester le fonctionnement et appeler le professeur s'il fonctionne.+
  
-{{:cours:cp.png?20 |}}++++Coups de pousse |+{{:cours:cp.png?20 |}}++++Coups de pousse : Se rappeler de l'état de l'actionneur | 
 +<WRAP round box> 
 +  * Il faut noter l'état de l'actionneur dans une variable à chaque changement (0 = désactivé et 1 = activé). 
 +  * Il faut lire la variable pour connaître l'état de l'actionneur. 
 +  * Au démarrage du programme je ne connais pas l'état de l'actionneur. Il faut une initialisation (ex. éteindre la led et le noter dans la variable) avant de démarrer la boucle "Répéter indéfiniment"
 +</WRAP> 
 +++++ 
 + 
 +{{:cours:cp.png?20 |}}++++Coups de pousse : Éviter les clignotements |
 <WRAP round box> <WRAP round box>
-  * D'une répétition du programme à l'autreil faut se rappeler si la LED est allumée ou pas. Il faut donc le noter dans une variable. +Le microcontrôleur étant plus rapide que notre doigtaprès le traitement d'un bouton appuyé, il faut attendre que le bouton soit relâché avant de répéter le programme. Sinon on obtient un clignotement et un résultat aléatoire.
-  * Il faut 2 instructions conditionnelles, une pour un capteur et l'autre pour une variable. +
-  * Pour éviter que la led clignote, il faut faire attendre le programme jusqu'à ce que le bouton soit relâché (Attendre jusqu'à).+
 </WRAP> </WRAP>
 ++++ ++++
Ligne 133: Ligne 156:
 ====Exercice 4 : L'interrupteur crépusculaire==== ====Exercice 4 : L'interrupteur crépusculaire====
 {{ :cours:crepuscule.jpg?100|}} {{ :cours:crepuscule.jpg?100|}}
-**Nous voulons que la LED s'allume si l'on appuie sur le bouton et que la lumière ambiante est faible.** \\ +**Nous voulons que la LED s'allume si l'on appuie sur le bouton et que la lumière ambiante est faible.**  Il faudra qu'elle reste allumée au moins 2 secondes (2000ms) pour permettre le passage\\ 
-Elle doit resté éteinte pour faire des économies sinon. Le programme doit fonctionner lui aussi en permanence.+Sinon elle doit rester éteinte pour faire des économies. Le programme doit fonctionner en permanence.
  
-===Travail à faire=== +La valeur mesurée de la lumière varie de 0 (la nuit noire) à 1023 (le plein soleil). On décide que la LED doit s'allumer si la lumière est < 200.
-  * écrire dans votre classeur le problème et l'algorithme correspondant, +
-  * le traduire en programme et le téléverser, +
-  * en tester le fonctionnement et appeler le professeur s'il fonctionne. **Pour simuler la nuit, on mettra la main au dessus du capteur de lumière.**+
  
 {{:cours:cp.png?20 |}}++++Coups de pousse | {{:cours:cp.png?20 |}}++++Coups de pousse |
 <WRAP round box> <WRAP round box>
-  * Une entrée analogique donne une valeur (nombrecompris entre 0 et 1023Il faut donc utiliser un opérateur pour pouvoir la comparer0 correspond à la nuit noire et 1023 au plein soleil, il faut donc décider du niveau de lumière à partir duquel la LED doit s'allumer (100 par exemple).+  * Le programme ressemble à celui de la sonnette avec une condition supplémentaire (la lumière du jour). 
 +  * Quand on lui demande, le capteur analogique écrit directement la mesure dans une variable (ex"Lire capteur et stocker dans variable"). Il faudra comparer cette variable au seuil fixé.  
 +  * Pour éclairer durant le passage il faut attendre un certain temps après avoir allumé on a choisi 2 secondes.
 </WRAP> </WRAP>
 ++++ ++++
cours/picaxe1.1709802626.txt.gz · Dernière modification: 2024/03/07 10:10 de mrcjl