![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Template automate NUCLEO 446RE
Dependencies: C12832-font
Diff: main.cpp
- Revision:
- 0:219cbcb4f747
- Child:
- 1:fb8116164c8f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon May 11 13:18:47 2020 +0000 @@ -0,0 +1,60 @@ +//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; + } +} \ No newline at end of file