Fabien MOULINNEUF
/
Interfacage_FMOULINNEUF
Projet Fini
main.cpp@0:86c9bfb762cf, 2021-06-21 (annotated)
- Committer:
- Pmpolo
- Date:
- Mon Jun 21 23:36:18 2021 +0000
- Revision:
- 0:86c9bfb762cf
- Child:
- 1:288f026ab14b
Fini;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Pmpolo | 0:86c9bfb762cf | 1 | |
Pmpolo | 0:86c9bfb762cf | 2 | #include "mbed.h" |
Pmpolo | 0:86c9bfb762cf | 3 | #include "F746_GUI.hpp" |
Pmpolo | 0:86c9bfb762cf | 4 | |
Pmpolo | 0:86c9bfb762cf | 5 | DigitalOut dirPin(D2); // pin de direction défini sur D2 |
Pmpolo | 0:86c9bfb762cf | 6 | DigitalOut stepPin(D3); // pin de pas défini sur D3 |
Pmpolo | 0:86c9bfb762cf | 7 | |
Pmpolo | 0:86c9bfb762cf | 8 | int main() |
Pmpolo | 0:86c9bfb762cf | 9 | { |
Pmpolo | 0:86c9bfb762cf | 10 | // init variables lisant les valeurs de quel bouton est appuyé dans chaque groupe |
Pmpolo | 0:86c9bfb762cf | 11 | int etat = 0, NumBoutonGrpRotation=-1, NumBoutonGrpVitesse=-1, NumBoutonGrpPlay=-1; |
Pmpolo | 0:86c9bfb762cf | 12 | |
Pmpolo | 0:86c9bfb762cf | 13 | // Titre |
Pmpolo | 0:86c9bfb762cf | 14 | Label Titre(240, 10, "", Label::CENTER, Font20); |
Pmpolo | 0:86c9bfb762cf | 15 | |
Pmpolo | 0:86c9bfb762cf | 16 | ////// Init des groupes de boutons ////// |
Pmpolo | 0:86c9bfb762cf | 17 | |
Pmpolo | 0:86c9bfb762cf | 18 | // Groupe de bouton du sens de rotation (2 boutons) |
Pmpolo | 0:86c9bfb762cf | 19 | Label Rotation(240, 40, "Sens de rotation", Label::CENTER, Font16); |
Pmpolo | 0:86c9bfb762cf | 20 | ButtonGroup GrpRotation(145, 60, 90, 35, 2,(string[]) { |
Pmpolo | 0:86c9bfb762cf | 21 | "Horaire", "Anti-Horaire" |
Pmpolo | 0:86c9bfb762cf | 22 | }, 2, 2, 2, 1, |
Pmpolo | 0:86c9bfb762cf | 23 | Font12, LCD_COLOR_WHITE, 0xFFFEAAAA, 0xFFFF0000, 0xFFFF0000); |
Pmpolo | 0:86c9bfb762cf | 24 | GrpRotation.ActivateAll(); // activation de tous les boutons |
Pmpolo | 0:86c9bfb762cf | 25 | |
Pmpolo | 0:86c9bfb762cf | 26 | // Groupe de bouton de la vitesse de rotation (3 boutons) |
Pmpolo | 0:86c9bfb762cf | 27 | Label TitreVitesse(240, 120, "Vitesse de rotation", Label::CENTER, Font16); |
Pmpolo | 0:86c9bfb762cf | 28 | ButtonGroup GrpVitesse(100, 140, 90, 35, 3,(string[]) { |
Pmpolo | 0:86c9bfb762cf | 29 | "650", "650-800", "800" |
Pmpolo | 0:86c9bfb762cf | 30 | }, 2, 2, 3, 1, |
Pmpolo | 0:86c9bfb762cf | 31 | Font12, LCD_COLOR_BLACK, 0xFFFE0000, 0xFFFFFF00, 0xFFFFFF00); |
Pmpolo | 0:86c9bfb762cf | 32 | GrpVitesse.InactivateAll();// désactivation de tous les boutons |
Pmpolo | 0:86c9bfb762cf | 33 | |
Pmpolo | 0:86c9bfb762cf | 34 | // Bouton Stop |
Pmpolo | 0:86c9bfb762cf | 35 | Button BTStop(215, 200, 50, 35, "Stop", |
Pmpolo | 0:86c9bfb762cf | 36 | Font12, LCD_COLOR_BLACK, 0xFFFE0000, 0xFFFFFF00, 0xFFFFFF00); |
Pmpolo | 0:86c9bfb762cf | 37 | BTStop.Inactivate();// désactivation du bouton |
Pmpolo | 0:86c9bfb762cf | 38 | |
Pmpolo | 0:86c9bfb762cf | 39 | |
Pmpolo | 0:86c9bfb762cf | 40 | while(1) { |
Pmpolo | 0:86c9bfb762cf | 41 | BSP_LCD_SetBackColor(LCD_COLOR_BLACK); |
Pmpolo | 0:86c9bfb762cf | 42 | |
Pmpolo | 0:86c9bfb762cf | 43 | // lecture du numéro du bouton appuyé |
Pmpolo | 0:86c9bfb762cf | 44 | NumBoutonGrpRotation=GrpRotation.GetTouchedNumber(); |
Pmpolo | 0:86c9bfb762cf | 45 | NumBoutonGrpVitesse=GrpVitesse.GetTouchedNumber(); |
Pmpolo | 0:86c9bfb762cf | 46 | |
Pmpolo | 0:86c9bfb762cf | 47 | switch(etat) { |
Pmpolo | 0:86c9bfb762cf | 48 | |
Pmpolo | 0:86c9bfb762cf | 49 | case 0: //initialisation générale |
Pmpolo | 0:86c9bfb762cf | 50 | GrpVitesse.InactivateAll(); // désactivation du choix de la vitesse |
Pmpolo | 0:86c9bfb762cf | 51 | if (NumBoutonGrpRotation == 0) etat = 1; // si bouton 0 appuyé (horaire), go to case 1 |
Pmpolo | 0:86c9bfb762cf | 52 | else if (NumBoutonGrpRotation == 1) etat = 2; // si bouton 1 appuyé (antihoraire), go to case 2 |
Pmpolo | 0:86c9bfb762cf | 53 | break; |
Pmpolo | 0:86c9bfb762cf | 54 | |
Pmpolo | 0:86c9bfb762cf | 55 | case 1: // sens Horaire |
Pmpolo | 0:86c9bfb762cf | 56 | GrpVitesse.ActivateAll(); // activation des boutons pour choix de la vitesse |
Pmpolo | 0:86c9bfb762cf | 57 | dirPin = 1; // définition du sens de rotation en sens horaire |
Pmpolo | 0:86c9bfb762cf | 58 | etat = 3; // go to case 3 pour choix de la vitesse |
Pmpolo | 0:86c9bfb762cf | 59 | break; |
Pmpolo | 0:86c9bfb762cf | 60 | |
Pmpolo | 0:86c9bfb762cf | 61 | case 2: // sens Anti horaire |
Pmpolo | 0:86c9bfb762cf | 62 | GrpVitesse.ActivateAll(); // activation des boutons pour choix de la vitesse |
Pmpolo | 0:86c9bfb762cf | 63 | dirPin = 0; // définition du sens de rotation en sens antihoraire |
Pmpolo | 0:86c9bfb762cf | 64 | etat = 3; // go to case 3 pour choix de la vitesse |
Pmpolo | 0:86c9bfb762cf | 65 | break; |
Pmpolo | 0:86c9bfb762cf | 66 | |
Pmpolo | 0:86c9bfb762cf | 67 | case 3: // choix vitesse selon le bouton appuyé |
Pmpolo | 0:86c9bfb762cf | 68 | if (NumBoutonGrpVitesse == 0) etat = 4; //si bouton 0 appuyé (650) go to case 4 |
Pmpolo | 0:86c9bfb762cf | 69 | else if (NumBoutonGrpVitesse == 1) etat = 5; //si bouton 1 appuyé (650-800) go to case 5 |
Pmpolo | 0:86c9bfb762cf | 70 | else if (NumBoutonGrpVitesse == 2) etat = 6; //si bouton 0 appuyé (800) go to case 6 |
Pmpolo | 0:86c9bfb762cf | 71 | break; |
Pmpolo | 0:86c9bfb762cf | 72 | |
Pmpolo | 0:86c9bfb762cf | 73 | case 4: // 650 TPD |
Pmpolo | 0:86c9bfb762cf | 74 | //3 step par seconde |
Pmpolo | 0:86c9bfb762cf | 75 | GrpVitesse.InactivateAll(); // désactivation choix de la vitesse |
Pmpolo | 0:86c9bfb762cf | 76 | GrpRotation.InactivateAll(); // désactivation choix du sens de rotation |
Pmpolo | 0:86c9bfb762cf | 77 | BTStop.Activate(); // activation du bouton stop |
Pmpolo | 0:86c9bfb762cf | 78 | |
Pmpolo | 0:86c9bfb762cf | 79 | // lancement du cycle de rotation du remontoir |
Pmpolo | 0:86c9bfb762cf | 80 | for(int nb_tour=0; nb_tour < 86400; nb_tour++){ // nb de seconde par jour |
Pmpolo | 0:86c9bfb762cf | 81 | for(int x = 0; x < 3; x++){ //3 step par seconde |
Pmpolo | 0:86c9bfb762cf | 82 | stepPin=1; |
Pmpolo | 0:86c9bfb762cf | 83 | wait_ms(166); // ce qui définit la vitesse de 650 TPD |
Pmpolo | 0:86c9bfb762cf | 84 | stepPin=0; |
Pmpolo | 0:86c9bfb762cf | 85 | wait_ms(166); // ce qui définit la vitesse de 650 TPD |
Pmpolo | 0:86c9bfb762cf | 86 | |
Pmpolo | 0:86c9bfb762cf | 87 | if(BTStop.Touched()==1){ // si bouton stop appuyé |
Pmpolo | 0:86c9bfb762cf | 88 | x=4; // stop du 2e for |
Pmpolo | 0:86c9bfb762cf | 89 | nb_tour = 86401; // stop du 1er for |
Pmpolo | 0:86c9bfb762cf | 90 | GrpRotation.ActivateAll(); // réactivation choix sens de rotation |
Pmpolo | 0:86c9bfb762cf | 91 | BTStop.Inactivate(); // désactivation du bouton stop car plus besoin à l'init |
Pmpolo | 0:86c9bfb762cf | 92 | etat = 0; // go to case init |
Pmpolo | 0:86c9bfb762cf | 93 | } |
Pmpolo | 0:86c9bfb762cf | 94 | } |
Pmpolo | 0:86c9bfb762cf | 95 | etat = 0; // si le cycle est fini, go to case init |
Pmpolo | 0:86c9bfb762cf | 96 | } |
Pmpolo | 0:86c9bfb762cf | 97 | break; |
Pmpolo | 0:86c9bfb762cf | 98 | |
Pmpolo | 0:86c9bfb762cf | 99 | case 5: //650-800 |
Pmpolo | 0:86c9bfb762cf | 100 | //3 step par seconde |
Pmpolo | 0:86c9bfb762cf | 101 | GrpVitesse.InactivateAll(); // désactivation choix de la vitesse |
Pmpolo | 0:86c9bfb762cf | 102 | GrpRotation.InactivateAll(); // désactivation choix du sens de rotation |
Pmpolo | 0:86c9bfb762cf | 103 | BTStop.Activate(); // activation du bouton stop |
Pmpolo | 0:86c9bfb762cf | 104 | |
Pmpolo | 0:86c9bfb762cf | 105 | // lancement du cycle de rotation du remontoir |
Pmpolo | 0:86c9bfb762cf | 106 | for(int nb_tour=0; nb_tour < 43200; nb_tour++){ // nb de seconde par jour |
Pmpolo | 0:86c9bfb762cf | 107 | for(int x = 0; x < 3; x++){ //3 step par seconde |
Pmpolo | 0:86c9bfb762cf | 108 | stepPin=1; |
Pmpolo | 0:86c9bfb762cf | 109 | wait_ms(166); |
Pmpolo | 0:86c9bfb762cf | 110 | stepPin=0; |
Pmpolo | 0:86c9bfb762cf | 111 | wait_ms(166); |
Pmpolo | 0:86c9bfb762cf | 112 | if(BTStop.Touched()==1){ // si bouton stop appuyé |
Pmpolo | 0:86c9bfb762cf | 113 | x=4; // stop du 2e for |
Pmpolo | 0:86c9bfb762cf | 114 | nb_tour = 86401; // stop du 1er for |
Pmpolo | 0:86c9bfb762cf | 115 | GrpRotation.ActivateAll(); // réactivation choix sens de rotation |
Pmpolo | 0:86c9bfb762cf | 116 | BTStop.Inactivate(); // désactivation du bouton stop car plus besoin à l'init |
Pmpolo | 0:86c9bfb762cf | 117 | etat = 0; // go to case init |
Pmpolo | 0:86c9bfb762cf | 118 | } |
Pmpolo | 0:86c9bfb762cf | 119 | } |
Pmpolo | 0:86c9bfb762cf | 120 | |
Pmpolo | 0:86c9bfb762cf | 121 | for(int nb_tour=0; nb_tour < 43200; nb_tour++){ // nb de seconde par jour |
Pmpolo | 0:86c9bfb762cf | 122 | for(int x = 0; x < 3; x++){ //3 step par seconde |
Pmpolo | 0:86c9bfb762cf | 123 | stepPin=1; |
Pmpolo | 0:86c9bfb762cf | 124 | wait_ms(135); |
Pmpolo | 0:86c9bfb762cf | 125 | stepPin=0; |
Pmpolo | 0:86c9bfb762cf | 126 | wait_ms(135); |
Pmpolo | 0:86c9bfb762cf | 127 | if(BTStop.Touched()==1){ // si bouton stop appuyé |
Pmpolo | 0:86c9bfb762cf | 128 | x=4; // stop du 2e for |
Pmpolo | 0:86c9bfb762cf | 129 | nb_tour = 86401; // stop du 1er for |
Pmpolo | 0:86c9bfb762cf | 130 | GrpRotation.ActivateAll(); // réactivation choix sens de rotation |
Pmpolo | 0:86c9bfb762cf | 131 | BTStop.Inactivate(); // désactivation du bouton stop car plus besoin à l'init |
Pmpolo | 0:86c9bfb762cf | 132 | etat = 0; // go to case init |
Pmpolo | 0:86c9bfb762cf | 133 | } |
Pmpolo | 0:86c9bfb762cf | 134 | } |
Pmpolo | 0:86c9bfb762cf | 135 | etat = 0; // si le cycle est fini, go to case init |
Pmpolo | 0:86c9bfb762cf | 136 | } |
Pmpolo | 0:86c9bfb762cf | 137 | break; |
Pmpolo | 0:86c9bfb762cf | 138 | |
Pmpolo | 0:86c9bfb762cf | 139 | case 6: //800 |
Pmpolo | 0:86c9bfb762cf | 140 | //3 step par seconde |
Pmpolo | 0:86c9bfb762cf | 141 | GrpVitesse.InactivateAll(); // désactivation choix de la vitesse |
Pmpolo | 0:86c9bfb762cf | 142 | GrpRotation.InactivateAll(); // désactivation choix du sens de rotation |
Pmpolo | 0:86c9bfb762cf | 143 | BTStop.Activate(); // activation du bouton stop |
Pmpolo | 0:86c9bfb762cf | 144 | |
Pmpolo | 0:86c9bfb762cf | 145 | // lancement du cycle de rotation du remontoir |
Pmpolo | 0:86c9bfb762cf | 146 | for(int nb_tour=0; nb_tour < 86400; nb_tour++){ // nb de seconde par jour |
Pmpolo | 0:86c9bfb762cf | 147 | for(int x = 0; x < 3; x++){ //3 step par seconde |
Pmpolo | 0:86c9bfb762cf | 148 | stepPin=1; |
Pmpolo | 0:86c9bfb762cf | 149 | wait_ms(135); // ce qui définit la vitesse de 800 TPD |
Pmpolo | 0:86c9bfb762cf | 150 | stepPin=0; |
Pmpolo | 0:86c9bfb762cf | 151 | wait_ms(135); // ce qui définit la vitesse de 800 TPD |
Pmpolo | 0:86c9bfb762cf | 152 | |
Pmpolo | 0:86c9bfb762cf | 153 | if(BTStop.Touched()==1){ // si bouton stop appuyé |
Pmpolo | 0:86c9bfb762cf | 154 | x=4; // stop du 2e for |
Pmpolo | 0:86c9bfb762cf | 155 | nb_tour = 86401; // stop du 1er for |
Pmpolo | 0:86c9bfb762cf | 156 | GrpRotation.ActivateAll(); // réactivation choix sens de rotation |
Pmpolo | 0:86c9bfb762cf | 157 | BTStop.Inactivate(); // désactivation du bouton stop car plus besoin à l'init |
Pmpolo | 0:86c9bfb762cf | 158 | etat = 0; // go to case init |
Pmpolo | 0:86c9bfb762cf | 159 | } |
Pmpolo | 0:86c9bfb762cf | 160 | } |
Pmpolo | 0:86c9bfb762cf | 161 | etat = 0; // si le cycle est fini, go to case init |
Pmpolo | 0:86c9bfb762cf | 162 | } |
Pmpolo | 0:86c9bfb762cf | 163 | break; |
Pmpolo | 0:86c9bfb762cf | 164 | } |
Pmpolo | 0:86c9bfb762cf | 165 | |
Pmpolo | 0:86c9bfb762cf | 166 | |
Pmpolo | 0:86c9bfb762cf | 167 | } //while |
Pmpolo | 0:86c9bfb762cf | 168 | } //main |