Template automate NUCLEO 446RE
Dependencies: C12832-font
main.cpp
- Committer:
- gr91
- Date:
- 2020-05-11
- Revision:
- 0:219cbcb4f747
- Child:
- 1:fb8116164c8f
File content as of revision 0:219cbcb4f747:
//Projet téléchargé depuis : https://os.mbed.com/teams/SNE-S1S2-prime/code/Mon_premier_automate/ //Université Paris-Saclay - IUT de Cachan //SNE S1 Prime GR DP mai 2020 //***********************************************// #include "mbed.h" DigitalIn BPC (PA_0,PullNone) ; // bouton centre DigitalOut LG (PE_8) ; // led verte DigitalOut LR (PB_2) ; // led rouge // prototype et variables globales et constantes void automate(void); // int main() { // début de l'application while(1) { wait(0.2); //c'est la clock (5 Hz) automate(); // ce qui se produit sur top de clock } } 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 = etat0 ; // déclaration état actuel init. à etat0 static type_etat etat_futur = etat0; // déclaration état futur int entree; // gestion des entrees entree = BPC; // c'est le bouton centre // gestion du diagramme de transition etat_actuel = etat_futur; // mise à jour de l'état // calul de l'éat futur en fonction de l'état actuel et des entrées switch(etat_actuel) { case etat0 : if (entree) etat_futur = etat1; break; case etat1 : etat_futur = etat2; break; case etat2 : etat_futur = etat0; break; } // valeurs des sorties en fonction de l'état actuel switch(etat_actuel) { case etat0 : LG=1; LR=1; break; case etat1 : LG=0; LR=1; break; case etat2 : LG=1; LR=0; break; } }