NBoard / Mbed 2 deprecated Automate

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers automate.cpp Source File

automate.cpp

00001 //Projet a télécharger depuis : https://developer.mbed.org/teams/NBoard/code/Automate/
00002 #include "mbed.h"
00003 DigitalIn BP0 (PA_9,PullUp) ;  // bouton BP0
00004 DigitalOut L0 (PB_3) ;  // led L0
00005 DigitalOut L1 (PA_7) ;  // led L1
00006 DigitalOut L2 (PA_6) ;  // led L2
00007 // prototype et variables globales et constantes
00008 // -------------------------------------
00009 void automate(void);
00010 //
00011 void main(void)
00012 {
00013     // début de l'application
00014     // ----------------------
00015     while(1) {
00016         wait(0.2); //on poiraute 200 miliseconde
00017         automate();
00018     }
00019 }
00020 void automate(void)
00021 {
00022     // définition d'un type énuméré permettant de manipuler l'état de l'automate
00023     // par son nom
00024     // -------------------------------------------------------------------------
00025     typedef enum {etat0=0, etat1=1, etat2=2} type_etat;
00026     type_etat etat_actuel;
00027     static type_etat etat_futur=etat0;
00028     unsigned char entree;
00029     // gestion des entrees
00030     // -------------------
00031     entree = !BP0;
00032     // gestion du diagramme de transition
00033     // ----------------------------------
00034     etat_actuel = etat_futur;
00035     switch(etat_actuel) {
00036         case etat0 :
00037             if (entree==1) etat_futur = etat1;
00038             break;
00039         case etat1 :
00040             etat_futur = etat2;
00041             break;
00042         case etat2 :
00043             etat_futur = etat0;
00044             break;
00045     }
00046     // gestion des sorties
00047     // -------------------
00048     switch(etat_actuel) {
00049         case etat0 :
00050             L0=1;
00051             L1=0;
00052             L2=0;
00053             break;
00054         case etat1 :
00055             L0=1;
00056             L1=1;
00057             L2=0;
00058             break;
00059         case etat2 :
00060             L0=1;
00061             L1=1;
00062             L2=1;
00063             break;
00064     }
00065 }