Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
main.cpp@4:dc6faeb6d336, 2021-12-02 (annotated)
- Committer:
- Giamarchi
- Date:
- Thu Dec 02 18:40:28 2021 +0000
- Revision:
- 4:dc6faeb6d336
- Parent:
- 3:eeb7bfd5f25e
TP 02 Solution
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Giamarchi | 2:005bc21c68d6 | 1 | //============================================================================== |
Giamarchi | 2:005bc21c68d6 | 2 | // FabLab Nîmes |
Giamarchi | 2:005bc21c68d6 | 3 | // Initiation à la Programmation |
Giamarchi | 2:005bc21c68d6 | 4 | // Auteur : Frédéric Giamarchi |
Giamarchi | 2:005bc21c68d6 | 5 | |
Giamarchi | 2:005bc21c68d6 | 6 | // Date : 30 oct. 2021 |
Giamarchi | 2:005bc21c68d6 | 7 | // TP 02 : Gestion d'un feu de traffic avec bouton piéton |
Giamarchi | 2:005bc21c68d6 | 8 | // Feu Vert : 5s Feu Orange : 2s Feu Rouge : 3s |
Giamarchi | 2:005bc21c68d6 | 9 | // Appel piéton uniquement pendant le feu vert. Fait passer immédiatement à l'Orange |
Giamarchi | 2:005bc21c68d6 | 10 | //============================================================================== |
Giamarchi | 2:005bc21c68d6 | 11 | // Déclarations des ressources |
Giamarchi | 0:531f33a2550d | 12 | #include "mbed.h" |
Giamarchi | 0:531f33a2550d | 13 | |
Giamarchi | 2:005bc21c68d6 | 14 | //============================================================================== |
Giamarchi | 2:005bc21c68d6 | 15 | // Déclaration des broches |
Giamarchi | 2:005bc21c68d6 | 16 | DigitalOut DEL_RO(PA_11); // Ligne PA_11 sur la carte Nucléo |
Giamarchi | 3:eeb7bfd5f25e | 17 | DigitalOut DEL_OR(PB_5); // Ligne PB_5 sur la carte Nucléo |
Giamarchi | 3:eeb7bfd5f25e | 18 | DigitalOut DEL_VE(PB_4); // Ligne PB_4 sur la carte Nucléo |
Giamarchi | 3:eeb7bfd5f25e | 19 | DigitalIn BP(PA_1); // Ligne PA_1 |
Giamarchi | 0:531f33a2550d | 20 | |
Giamarchi | 2:005bc21c68d6 | 21 | //============================================================================== |
Giamarchi | 4:dc6faeb6d336 | 22 | // Déclaration des variables |
Giamarchi | 4:dc6faeb6d336 | 23 | uint8_t etat; // variable de type entier non signé |
Giamarchi | 4:dc6faeb6d336 | 24 | uint8_t compteur; |
Giamarchi | 4:dc6faeb6d336 | 25 | |
Giamarchi | 4:dc6faeb6d336 | 26 | //============================================================================== |
Giamarchi | 2:005bc21c68d6 | 27 | // Début du Programme |
Giamarchi | 2:005bc21c68d6 | 28 | int main() // Fonction principale |
Giamarchi | 1:95172f59262a | 29 | { |
Giamarchi | 4:dc6faeb6d336 | 30 | BP.mode(PullUp); // Activation de la résistance interne vers le + |
Giamarchi | 4:dc6faeb6d336 | 31 | |
Giamarchi | 4:dc6faeb6d336 | 32 | etat = 0; // Initialisation de la variable |
Giamarchi | 4:dc6faeb6d336 | 33 | compteur = 0; |
Giamarchi | 2:005bc21c68d6 | 34 | //============================================================================== |
Giamarchi | 2:005bc21c68d6 | 35 | while(1) // Boucle Infinie |
Giamarchi | 0:531f33a2550d | 36 | { |
Giamarchi | 4:dc6faeb6d336 | 37 | wait_ms(100); // Temporisation de 100ms (0.1s) |
Giamarchi | 4:dc6faeb6d336 | 38 | compteur++; // variable représentant un multiple de 100ms |
Giamarchi | 4:dc6faeb6d336 | 39 | |
Giamarchi | 4:dc6faeb6d336 | 40 | switch(etat) // Structure pour plusieurs états du système |
Giamarchi | 4:dc6faeb6d336 | 41 | { |
Giamarchi | 4:dc6faeb6d336 | 42 | case 0: // Etat "Feu Vert" |
Giamarchi | 4:dc6faeb6d336 | 43 | DEL_RO = 0; |
Giamarchi | 4:dc6faeb6d336 | 44 | DEL_VE = 1; // Actions visibles (éteindre et allumer) |
Giamarchi | 4:dc6faeb6d336 | 45 | |
Giamarchi | 4:dc6faeb6d336 | 46 | if(compteur == 50 || BP == 0) // Test d'une condition |
Giamarchi | 4:dc6faeb6d336 | 47 | { |
Giamarchi | 4:dc6faeb6d336 | 48 | compteur = 0; |
Giamarchi | 4:dc6faeb6d336 | 49 | etat = 1; // Changement d'état pour la prochaine boucle |
Giamarchi | 4:dc6faeb6d336 | 50 | } |
Giamarchi | 4:dc6faeb6d336 | 51 | break; |
Giamarchi | 4:dc6faeb6d336 | 52 | case 1: // Etat "Feu Orange" |
Giamarchi | 4:dc6faeb6d336 | 53 | DEL_VE = 0; |
Giamarchi | 4:dc6faeb6d336 | 54 | DEL_OR = 1; // Actions visibles |
Giamarchi | 4:dc6faeb6d336 | 55 | |
Giamarchi | 4:dc6faeb6d336 | 56 | if(compteur == 20) |
Giamarchi | 4:dc6faeb6d336 | 57 | { |
Giamarchi | 4:dc6faeb6d336 | 58 | compteur = 0; |
Giamarchi | 4:dc6faeb6d336 | 59 | etat = 2; |
Giamarchi | 4:dc6faeb6d336 | 60 | } |
Giamarchi | 4:dc6faeb6d336 | 61 | break; |
Giamarchi | 4:dc6faeb6d336 | 62 | case 2: // Etat "Feu Rouge" |
Giamarchi | 4:dc6faeb6d336 | 63 | DEL_OR = 0; |
Giamarchi | 4:dc6faeb6d336 | 64 | DEL_RO = 1; // Actions visibles |
Giamarchi | 4:dc6faeb6d336 | 65 | |
Giamarchi | 4:dc6faeb6d336 | 66 | if(compteur == 30) |
Giamarchi | 4:dc6faeb6d336 | 67 | { |
Giamarchi | 4:dc6faeb6d336 | 68 | compteur = 0; |
Giamarchi | 4:dc6faeb6d336 | 69 | etat = 0; |
Giamarchi | 4:dc6faeb6d336 | 70 | } |
Giamarchi | 4:dc6faeb6d336 | 71 | break; |
Giamarchi | 4:dc6faeb6d336 | 72 | default: // En cas de plantage du programme |
Giamarchi | 4:dc6faeb6d336 | 73 | etat = 0; |
Giamarchi | 4:dc6faeb6d336 | 74 | break; |
Giamarchi | 4:dc6faeb6d336 | 75 | } |
Giamarchi | 4:dc6faeb6d336 | 76 | |
Giamarchi | 1:95172f59262a | 77 | } // Fin du while(1) |
Giamarchi | 2:005bc21c68d6 | 78 | //============================================================================== |
Giamarchi | 2:005bc21c68d6 | 79 | } // Fin du Programme |
Giamarchi | 2:005bc21c68d6 | 80 | //============================================================================== |