Exemple d'automate en C
Dependencies: mbed
automate.cpp
- Committer:
- gr66
- Date:
- 2016-11-30
- Revision:
- 2:63147e335ea8
- Parent:
- 1:032d4021bf3a
File content as of revision 2:63147e335ea8:
//Projet a télécharger depuis : 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;
}
}