![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Template automate DISCO
Dependencies: ihm_L476_full
main.cpp@2:a3339f3c34e9, 2020-11-16 (annotated)
- Committer:
- gr91
- Date:
- Mon Nov 16 18:21:05 2020 +0000
- Revision:
- 2:a3339f3c34e9
- Parent:
- 1:fb8116164c8f
Template automate DISCO
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gr91 | 0:219cbcb4f747 | 1 | //Université Paris-Saclay - IUT de Cachan |
gr91 | 2:a3339f3c34e9 | 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 | } |