Template automate NUCLEO 446RE

Dependencies:   C12832-font

Revision:
0:219cbcb4f747
Child:
1:fb8116164c8f
diff -r 000000000000 -r 219cbcb4f747 main.cpp
--- /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