Projet Fini

Dependencies:   F746_GUI mbed

Revision:
0:86c9bfb762cf
Child:
1:288f026ab14b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Jun 21 23:36:18 2021 +0000
@@ -0,0 +1,168 @@
+
+#include "mbed.h"
+#include "F746_GUI.hpp"
+
+DigitalOut dirPin(D2); // pin de direction défini sur D2 
+DigitalOut stepPin(D3); // pin de pas défini sur D3 
+
+int main()
+{
+    // init variables lisant les valeurs de quel bouton est appuyé dans chaque groupe
+    int etat = 0, NumBoutonGrpRotation=-1, NumBoutonGrpVitesse=-1, NumBoutonGrpPlay=-1;
+    
+    // Titre
+    Label Titre(240, 10, "", Label::CENTER, Font20);
+
+////// Init des groupes de boutons //////  
+    
+    // Groupe de bouton du sens de rotation (2 boutons)
+    Label Rotation(240, 40, "Sens de rotation", Label::CENTER, Font16);
+    ButtonGroup GrpRotation(145, 60, 90, 35, 2,(string[]) {
+        "Horaire", "Anti-Horaire"
+    }, 2, 2, 2, 1,
+    Font12, LCD_COLOR_WHITE, 0xFFFEAAAA, 0xFFFF0000, 0xFFFF0000);
+    GrpRotation.ActivateAll(); // activation de tous les boutons
+    
+    // Groupe de bouton de la vitesse de rotation (3 boutons)    
+    Label TitreVitesse(240, 120, "Vitesse de rotation", Label::CENTER, Font16);
+    ButtonGroup GrpVitesse(100, 140, 90, 35, 3,(string[]) {
+        "650", "650-800", "800"
+    }, 2, 2, 3, 1,
+    Font12, LCD_COLOR_BLACK, 0xFFFE0000, 0xFFFFFF00, 0xFFFFFF00);
+    GrpVitesse.InactivateAll();// désactivation de tous les boutons
+    
+    // Bouton Stop 
+    Button BTStop(215, 200, 50, 35, "Stop",
+    Font12, LCD_COLOR_BLACK, 0xFFFE0000, 0xFFFFFF00, 0xFFFFFF00);
+    BTStop.Inactivate();// désactivation du bouton
+
+
+    while(1) {
+        BSP_LCD_SetBackColor(LCD_COLOR_BLACK);
+        
+        // lecture du numéro du bouton appuyé
+        NumBoutonGrpRotation=GrpRotation.GetTouchedNumber();
+        NumBoutonGrpVitesse=GrpVitesse.GetTouchedNumber();
+
+        switch(etat) {
+
+            case 0: //initialisation générale
+                GrpVitesse.InactivateAll(); // désactivation du choix de la vitesse 
+                if (NumBoutonGrpRotation == 0) etat = 1; // si bouton 0 appuyé (horaire), go to case 1
+                else if (NumBoutonGrpRotation == 1) etat = 2; // si bouton 1 appuyé (antihoraire), go to case 2
+                break;
+
+            case 1: // sens Horaire
+                GrpVitesse.ActivateAll(); // activation des boutons pour choix de la vitesse
+                dirPin = 1; // définition du sens de rotation en sens horaire
+                etat = 3; // go to case 3 pour choix de la vitesse
+                break;
+
+            case 2: // sens Anti horaire
+                GrpVitesse.ActivateAll(); // activation des boutons pour choix de la vitesse
+                dirPin = 0; // définition du sens de rotation en sens antihoraire
+                etat = 3; // go to case 3 pour choix de la vitesse
+                break;
+
+            case 3: // choix vitesse selon le bouton appuyé
+                if (NumBoutonGrpVitesse == 0) etat = 4; //si bouton 0 appuyé (650) go to case 4
+                else if (NumBoutonGrpVitesse == 1) etat = 5; //si bouton 1 appuyé (650-800) go to case 5
+                else if (NumBoutonGrpVitesse == 2) etat = 6; //si bouton 0 appuyé (800) go to case 6
+                break;
+
+            case 4: // 650 TPD
+                //3 step par seconde
+                GrpVitesse.InactivateAll(); // désactivation choix de la vitesse
+                GrpRotation.InactivateAll(); // désactivation choix du sens de rotation 
+                BTStop.Activate(); // activation du bouton stop 
+
+                // lancement du cycle de rotation du remontoir
+                for(int nb_tour=0; nb_tour < 86400; nb_tour++){ // nb de seconde par jour
+                    for(int x = 0; x < 3; x++){ //3 step par seconde
+                        stepPin=1;
+                        wait_ms(166); // ce qui définit la vitesse de 650 TPD
+                        stepPin=0;
+                        wait_ms(166); // ce qui définit la vitesse de 650 TPD
+                        
+                        if(BTStop.Touched()==1){ // si bouton stop appuyé
+                            x=4; // stop du 2e for
+                            nb_tour = 86401; // stop du 1er for
+                            GrpRotation.ActivateAll(); // réactivation choix sens de rotation 
+                            BTStop.Inactivate(); // désactivation du bouton stop car plus besoin à l'init
+                            etat = 0; // go to case init                        
+                        }
+                    }
+                    etat = 0; // si le cycle est fini, go to case init
+                }
+                break;
+
+            case 5: //650-800
+                //3 step par seconde
+                GrpVitesse.InactivateAll(); // désactivation choix de la vitesse
+                GrpRotation.InactivateAll(); // désactivation choix du sens de rotation 
+                BTStop.Activate(); // activation du bouton stop 
+
+                // lancement du cycle de rotation du remontoir
+                for(int nb_tour=0; nb_tour < 43200; nb_tour++){ // nb de seconde par jour
+                    for(int x = 0; x < 3; x++){ //3 step par seconde
+                        stepPin=1;
+                        wait_ms(166);
+                        stepPin=0;
+                        wait_ms(166);
+                        if(BTStop.Touched()==1){ // si bouton stop appuyé
+                            x=4; // stop du 2e for
+                            nb_tour = 86401; // stop du 1er for
+                            GrpRotation.ActivateAll(); // réactivation choix sens de rotation 
+                            BTStop.Inactivate(); // désactivation du bouton stop car plus besoin à l'init
+                            etat = 0; // go to case init                        
+                        }
+                    }
+                    
+                    for(int nb_tour=0; nb_tour < 43200; nb_tour++){ // nb de seconde par jour
+                        for(int x = 0; x < 3; x++){ //3 step par seconde
+                            stepPin=1;
+                            wait_ms(135);
+                            stepPin=0;
+                            wait_ms(135);
+                            if(BTStop.Touched()==1){ // si bouton stop appuyé
+                                x=4; // stop du 2e for
+                                nb_tour = 86401; // stop du 1er for
+                                GrpRotation.ActivateAll(); // réactivation choix sens de rotation 
+                                BTStop.Inactivate(); // désactivation du bouton stop car plus besoin à l'init
+                                etat = 0; // go to case init                        
+                            }
+                        }
+                    etat = 0; // si le cycle est fini, go to case init
+                }
+                break;
+
+            case 6: //800
+                //3 step par seconde
+                GrpVitesse.InactivateAll(); // désactivation choix de la vitesse
+                GrpRotation.InactivateAll(); // désactivation choix du sens de rotation 
+                BTStop.Activate(); // activation du bouton stop 
+
+                // lancement du cycle de rotation du remontoir
+                for(int nb_tour=0; nb_tour < 86400; nb_tour++){ // nb de seconde par jour
+                    for(int x = 0; x < 3; x++){ //3 step par seconde
+                        stepPin=1;
+                        wait_ms(135); // ce qui définit la vitesse de 800 TPD
+                        stepPin=0;
+                        wait_ms(135); // ce qui définit la vitesse de 800 TPD
+                        
+                        if(BTStop.Touched()==1){ // si bouton stop appuyé
+                            x=4; // stop du 2e for
+                            nb_tour = 86401; // stop du 1er for
+                            GrpRotation.ActivateAll(); // réactivation choix sens de rotation 
+                            BTStop.Inactivate(); // désactivation du bouton stop car plus besoin à l'init
+                            etat = 0; // go to case init                        
+                        }
+                    }
+                    etat = 0; // si le cycle est fini, go to case init
+                }
+                break;
+        }
+
+
+    } //while
+} //main