![](/media/cache/group/logo-cachanx.jpg.50x50_q85.jpg)
Exemple d'automate en C
Dependencies: mbed
Diff: automate.cpp
- Revision:
- 1:032d4021bf3a
- Child:
- 2:63147e335ea8
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/automate.cpp Wed Nov 30 12:46:03 2016 +0000 @@ -0,0 +1,65 @@ +//Projet a télécharger sue : https://developer.mbed.org/teams/NBoard/code/Automate/ +#include "mbed.h" +DigitalIn BP0 (PA_9,PullUp) ; // bouton BP0 +DigitalOut L0 (PB_3) ; // led L0 +DigitalOut L1 (PA_7) ; // led L1 +DigitalOut L2 (PA_6) ; // led L2 +// prototype et variables globales et constantes +// ------------------------------------- +void automate(void); +// +void main(void) +{ + // début de l'application + // ---------------------- + while(1) { + wait(0.2); //on poiraute 200 miliseconde + automate(); + } +} +void automate(void) +{ + // définition d'un type énuméré permettant de manipuler l'état de l'automate + // par son nom + // ------------------------------------------------------------------------- + typedef enum {etat0=0, etat1=1, etat2=2} type_etat; + type_etat etat_actuel; + static type_etat etat_futur=etat0; + unsigned char entree; + // gestion des entrees + // ------------------- + entree = !BP0; + // gestion du diagramme de transition + // ---------------------------------- + etat_actuel = etat_futur; + switch(etat_actuel) { + case etat0 : + if (entree==1) etat_futur = etat1; + break; + case etat1 : + etat_futur = etat2; + break; + case etat2 : + etat_futur = etat0; + break; + } + // gestion des sorties + // ------------------- + switch(etat_actuel) { + case etat0 : + L0=1; + L1=0; + L2=0; + break; + case etat1 : + L0=1; + L1=1; + L2=0; + break; + case etat2 : + L0=1; + L1=1; + L2=1; + break; + } +} \ No newline at end of file