Template automate DISCO

Dependencies:   ihm_L476_full

Committer:
gr91
Date:
Mon May 11 13:18:47 2020 +0000
Revision:
0:219cbcb4f747
Child:
1:fb8116164c8f
Mon premier automate Rev0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gr91 0:219cbcb4f747 1 //Projet téléchargé depuis : https://os.mbed.com/teams/SNE-S1S2-prime/code/Mon_premier_automate/
gr91 0:219cbcb4f747 2 //Université Paris-Saclay - IUT de Cachan
gr91 0:219cbcb4f747 3 //SNE S1 Prime GR DP mai 2020
gr91 0:219cbcb4f747 4 //***********************************************//
gr91 0:219cbcb4f747 5 #include "mbed.h"
gr91 0:219cbcb4f747 6 DigitalIn BPC (PA_0,PullNone) ; // bouton centre
gr91 0:219cbcb4f747 7 DigitalOut LG (PE_8) ; // led verte
gr91 0:219cbcb4f747 8 DigitalOut LR (PB_2) ; // led rouge
gr91 0:219cbcb4f747 9
gr91 0:219cbcb4f747 10 // prototype et variables globales et constantes
gr91 0:219cbcb4f747 11 void automate(void);
gr91 0:219cbcb4f747 12 //
gr91 0:219cbcb4f747 13 int main()
gr91 0:219cbcb4f747 14 {
gr91 0:219cbcb4f747 15 // début de l'application
gr91 0:219cbcb4f747 16 while(1) {
gr91 0:219cbcb4f747 17 wait(0.2); //c'est la clock (5 Hz)
gr91 0:219cbcb4f747 18 automate(); // ce qui se produit sur top de clock
gr91 0:219cbcb4f747 19 }
gr91 0:219cbcb4f747 20 }
gr91 0:219cbcb4f747 21 void automate(void)
gr91 0:219cbcb4f747 22 {
gr91 0:219cbcb4f747 23 // définition d'un type énuméré permettant de manipuler l'état de l'automate
gr91 0:219cbcb4f747 24 // par son nom
gr91 0:219cbcb4f747 25 typedef enum {etat0=0, etat1=1, etat2=2} type_etat;
gr91 0:219cbcb4f747 26 type_etat etat_actuel = etat0 ; // déclaration état actuel init. à etat0
gr91 0:219cbcb4f747 27 static type_etat etat_futur = etat0; // déclaration état futur
gr91 0:219cbcb4f747 28 int entree;
gr91 0:219cbcb4f747 29 // gestion des entrees
gr91 0:219cbcb4f747 30 entree = BPC; // c'est le bouton centre
gr91 0:219cbcb4f747 31 // gestion du diagramme de transition
gr91 0:219cbcb4f747 32 etat_actuel = etat_futur; // mise à jour de l'état
gr91 0:219cbcb4f747 33 // calul de l'éat futur en fonction de l'état actuel et des entrées
gr91 0:219cbcb4f747 34 switch(etat_actuel) {
gr91 0:219cbcb4f747 35 case etat0 :
gr91 0:219cbcb4f747 36 if (entree) etat_futur = etat1;
gr91 0:219cbcb4f747 37 break;
gr91 0:219cbcb4f747 38 case etat1 :
gr91 0:219cbcb4f747 39 etat_futur = etat2;
gr91 0:219cbcb4f747 40 break;
gr91 0:219cbcb4f747 41 case etat2 :
gr91 0:219cbcb4f747 42 etat_futur = etat0;
gr91 0:219cbcb4f747 43 break;
gr91 0:219cbcb4f747 44 }
gr91 0:219cbcb4f747 45 // valeurs des sorties en fonction de l'état actuel
gr91 0:219cbcb4f747 46 switch(etat_actuel) {
gr91 0:219cbcb4f747 47 case etat0 :
gr91 0:219cbcb4f747 48 LG=1;
gr91 0:219cbcb4f747 49 LR=1;
gr91 0:219cbcb4f747 50 break;
gr91 0:219cbcb4f747 51 case etat1 :
gr91 0:219cbcb4f747 52 LG=0;
gr91 0:219cbcb4f747 53 LR=1;
gr91 0:219cbcb4f747 54 break;
gr91 0:219cbcb4f747 55 case etat2 :
gr91 0:219cbcb4f747 56 LG=1;
gr91 0:219cbcb4f747 57 LR=0;
gr91 0:219cbcb4f747 58 break;
gr91 0:219cbcb4f747 59 }
gr91 0:219cbcb4f747 60 }