FabLab Nîmes / Mbed 2 deprecated FabLab_TP_02_solution

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 //==============================================================================