Template automate NUCLEO 446RE

Dependencies:   C12832-font

Committer:
gr91
Date:
Tue May 12 17:48:44 2020 +0000
Revision:
1:fb8116164c8f
Parent:
0:219cbcb4f747
Child:
2:51380e17562c
AUTO1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gr91 0:219cbcb4f747 1 //Université Paris-Saclay - IUT de Cachan
gr91 0:219cbcb4f747 2 //SNE S1 Prime GR DP mai 2020
gr91 0:219cbcb4f747 3 //***********************************************//
gr91 1:fb8116164c8f 4 //#include "mbed.h" // commenté car présent dans l'include ihm
gr91 1:fb8116164c8f 5 #include "ihm_L476.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 1:fb8116164c8f 9 IHM_L476 ihm;
gr91 0:219cbcb4f747 10
gr91 0:219cbcb4f747 11 // prototype et variables globales et constantes
gr91 0:219cbcb4f747 12 void automate(void);
gr91 0:219cbcb4f747 13 //
gr91 0:219cbcb4f747 14 int main()
gr91 0:219cbcb4f747 15 {
gr91 1:fb8116164c8f 16 ihm.LCD_printf("AUTO1");
gr91 0:219cbcb4f747 17 // début de l'application
gr91 0:219cbcb4f747 18 while(1) {
gr91 0:219cbcb4f747 19 wait(0.2); //c'est la clock (5 Hz)
gr91 0:219cbcb4f747 20 automate(); // ce qui se produit sur top de clock
gr91 0:219cbcb4f747 21 }
gr91 0:219cbcb4f747 22 }
gr91 0:219cbcb4f747 23 void automate(void)
gr91 0:219cbcb4f747 24 {
gr91 0:219cbcb4f747 25 // définition d'un type énuméré permettant de manipuler l'état de l'automate
gr91 0:219cbcb4f747 26 // par son nom
gr91 0:219cbcb4f747 27 typedef enum {etat0=0, etat1=1, etat2=2} type_etat;
gr91 0:219cbcb4f747 28 type_etat etat_actuel = etat0 ; // déclaration état actuel init. à etat0
gr91 0:219cbcb4f747 29 static type_etat etat_futur = etat0; // déclaration état futur
gr91 0:219cbcb4f747 30 int entree;
gr91 0:219cbcb4f747 31 // gestion des entrees
gr91 0:219cbcb4f747 32 entree = BPC; // c'est le bouton centre
gr91 0:219cbcb4f747 33 // gestion du diagramme de transition
gr91 0:219cbcb4f747 34 etat_actuel = etat_futur; // mise à jour de l'état
gr91 0:219cbcb4f747 35 // calul de l'éat futur en fonction de l'état actuel et des entrées
gr91 0:219cbcb4f747 36 switch(etat_actuel) {
gr91 0:219cbcb4f747 37 case etat0 :
gr91 0:219cbcb4f747 38 if (entree) etat_futur = etat1;
gr91 0:219cbcb4f747 39 break;
gr91 0:219cbcb4f747 40 case etat1 :
gr91 0:219cbcb4f747 41 etat_futur = etat2;
gr91 0:219cbcb4f747 42 break;
gr91 0:219cbcb4f747 43 case etat2 :
gr91 0:219cbcb4f747 44 etat_futur = etat0;
gr91 0:219cbcb4f747 45 break;
gr91 0:219cbcb4f747 46 }
gr91 0:219cbcb4f747 47 // valeurs des sorties en fonction de l'état actuel
gr91 0:219cbcb4f747 48 switch(etat_actuel) {
gr91 0:219cbcb4f747 49 case etat0 :
gr91 1:fb8116164c8f 50 ihm.BAR_set(0);
gr91 0:219cbcb4f747 51 LG=1;
gr91 0:219cbcb4f747 52 LR=1;
gr91 0:219cbcb4f747 53 break;
gr91 0:219cbcb4f747 54 case etat1 :
gr91 1:fb8116164c8f 55 ihm.BAR_set(1);
gr91 0:219cbcb4f747 56 LG=0;
gr91 0:219cbcb4f747 57 LR=1;
gr91 0:219cbcb4f747 58 break;
gr91 0:219cbcb4f747 59 case etat2 :
gr91 1:fb8116164c8f 60 ihm.BAR_set(2);
gr91 0:219cbcb4f747 61 LG=1;
gr91 0:219cbcb4f747 62 LR=0;
gr91 0:219cbcb4f747 63 break;
gr91 0:219cbcb4f747 64 }
gr91 0:219cbcb4f747 65 }