Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
main.cpp@5:3e44d8755e88, 2020-06-16 (annotated)
- Committer:
- jdeschamps
- Date:
- Tue Jun 16 07:24:14 2020 +0000
- Revision:
- 5:3e44d8755e88
- Parent:
- 4:1d58769720c6
oui
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| dg81 | 0:5fb4c7e603cf | 1 | |
| dg81 | 0:5fb4c7e603cf | 2 | #include "mbed.h" |
| dg81 | 0:5fb4c7e603cf | 3 | /*************** Variables globales **************************/ |
| jdeschamps | 2:ee896365f8fe | 4 | volatile int flag_timer_etat=0; //ce timer séquence l'alimaentation des phases du moteur, sa fréquence est réglable avec le potentiomètre + trame vitesse |
| jdeschamps | 2:ee896365f8fe | 5 | volatile int flag_timer_reglage_vitesse=0; //ce timer lit le réglage de la vitesse tous les 0.1 s |
| jdeschamps | 2:ee896365f8fe | 6 | volatile int flag_fc_haut=0; //interruption sur SW2 |
| jdeschamps | 2:ee896365f8fe | 7 | volatile int flag_contact=0; //interruption sur SW3 |
| jdeschamps | 4:1d58769720c6 | 8 | volatile int flag_retour=0; |
| jdeschamps | 5:3e44d8755e88 | 9 | volatile int flag_monte=0; |
| jdeschamps | 5:3e44d8755e88 | 10 | volatile int flag_descend=0; |
| jdeschamps | 5:3e44d8755e88 | 11 | volatile int flag_stop=0; |
| jdeschamps | 5:3e44d8755e88 | 12 | volatile int flag_position=0; |
| dg81 | 0:5fb4c7e603cf | 13 | /*************** Interfaces utilisés *************************/ |
| jdeschamps | 1:bb5b935c0aa9 | 14 | Serial pc(USBTX, USBRX,9600); // liaison USB |
| dg81 | 0:5fb4c7e603cf | 15 | Ticker timer_etat; // Interruptions temporelles (timout) |
| dg81 | 0:5fb4c7e603cf | 16 | Ticker timer_reglage_vitesse; |
| jdeschamps | 5:3e44d8755e88 | 17 | DigitalOut DIRA(PTD3); // sorties logiques |
| jdeschamps | 5:3e44d8755e88 | 18 | DigitalOut BRKA(PTC4); |
| jdeschamps | 5:3e44d8755e88 | 19 | DigitalOut DIRB(PTD1); |
| jdeschamps | 5:3e44d8755e88 | 20 | DigitalOut BRKB(PTC12); |
| jdeschamps | 1:bb5b935c0aa9 | 21 | DigitalOut ENA(PTA1); |
| jdeschamps | 1:bb5b935c0aa9 | 22 | DigitalOut ENB(PTD2); |
| jdeschamps | 1:bb5b935c0aa9 | 23 | AnalogIn ain0(A0); //(lecture potentiometre vitesse) // entrées analogiques |
| jdeschamps | 2:ee896365f8fe | 24 | AnalogIn ain1(A1); // (lecture potentiometre lecture position) |
| jdeschamps | 5:3e44d8755e88 | 25 | InterruptIn fc_haut(SW2); // SW2 est associé à une interruption kbi s'appelant fc_haut |
| jdeschamps | 5:3e44d8755e88 | 26 | InterruptIn contact(SW3); // SW3 est associé à une interruption kbi s'appelant contact |
| jdeschamps | 5:3e44d8755e88 | 27 | InterruptIn monte (D4); // D4 est associé à une interruption kbi s'appelant monte |
| jdeschamps | 5:3e44d8755e88 | 28 | InterruptIn descend (D8); // D3 est associé à une interruption kbi s'appelant descend |
| jdeschamps | 5:3e44d8755e88 | 29 | InterruptIn retour (D7); // D7 est associé à une interruption kbi s'appelant retour |
| jdeschamps | 5:3e44d8755e88 | 30 | InterruptIn stop (D6); // D6 est associé à une interruption kbi s'appelant stop |
| jdeschamps | 5:3e44d8755e88 | 31 | //InterruptIn position; |
| dg81 | 0:5fb4c7e603cf | 32 | /*************** Programmes d'interruption *******************/ |
| jdeschamps | 2:ee896365f8fe | 33 | void IT_timer_etat() { // sequencement phases moteur dont la fréquence est réglable potentiomètre/trame |
| dg81 | 0:5fb4c7e603cf | 34 | flag_timer_etat=1; |
| dg81 | 0:5fb4c7e603cf | 35 | } |
| jdeschamps | 2:ee896365f8fe | 36 | void IT_timer_reglage_vitesse() { // reglage de la vitesse tous les 100 ms |
| dg81 | 0:5fb4c7e603cf | 37 | flag_timer_reglage_vitesse=1; |
| dg81 | 0:5fb4c7e603cf | 38 | } |
| dg81 | 0:5fb4c7e603cf | 39 | void IT_fc_haut(){ // position haute atteinte (raz) |
| dg81 | 0:5fb4c7e603cf | 40 | flag_fc_haut=1; |
| dg81 | 0:5fb4c7e603cf | 41 | } |
| dg81 | 0:5fb4c7e603cf | 42 | void IT_contact(){ // contact avec echantillon (OK) |
| dg81 | 0:5fb4c7e603cf | 43 | flag_contact=1; |
| dg81 | 0:5fb4c7e603cf | 44 | } |
| jdeschamps | 4:1d58769720c6 | 45 | void IT_retour(){ |
| jdeschamps | 4:1d58769720c6 | 46 | flag_retour=1; |
| jdeschamps | 4:1d58769720c6 | 47 | } |
| jdeschamps | 5:3e44d8755e88 | 48 | |
| jdeschamps | 5:3e44d8755e88 | 49 | void IT_monte(){ |
| jdeschamps | 5:3e44d8755e88 | 50 | flag_monte=1; |
| jdeschamps | 5:3e44d8755e88 | 51 | } |
| jdeschamps | 5:3e44d8755e88 | 52 | |
| jdeschamps | 5:3e44d8755e88 | 53 | void IT_descend(){ |
| jdeschamps | 5:3e44d8755e88 | 54 | flag_descend=1; |
| jdeschamps | 5:3e44d8755e88 | 55 | } |
| jdeschamps | 5:3e44d8755e88 | 56 | |
| jdeschamps | 5:3e44d8755e88 | 57 | void IT_stop(){ |
| jdeschamps | 5:3e44d8755e88 | 58 | flag_stop=1; |
| jdeschamps | 5:3e44d8755e88 | 59 | } |
| dg81 | 0:5fb4c7e603cf | 60 | /*************** Programme Principal *************************/ |
| dg81 | 0:5fb4c7e603cf | 61 | int main() { |
| dg81 | 0:5fb4c7e603cf | 62 | // declaration des variables |
| dg81 | 0:5fb4c7e603cf | 63 | signed char etat=0; // etat varie de 0 à 7 pour représenter les 8 posiions du mpp |
| dg81 | 0:5fb4c7e603cf | 64 | signed char sens=0; // -1 : recule / 0 : stop / 1 : avance |
| dg81 | 0:5fb4c7e603cf | 65 | float Vpot,Vpos,periode,position_mesuree,frequence; // Vpot potentiomètre reglage vitesse |
| dg81 | 0:5fb4c7e603cf | 66 | // Vpos capteur de position monté sur vérin |
| dg81 | 0:5fb4c7e603cf | 67 | // position_mesurée : position estimée avec Vpos |
| dg81 | 0:5fb4c7e603cf | 68 | // periode : periode de l'IT etat (pilotage moteur) |
| dg81 | 0:5fb4c7e603cf | 69 | // frequence : frequence de l'IT etat (pilotage moteur) |
| jdeschamps | 2:ee896365f8fe | 70 | char command[30]; // buffer de réception du message |
| dg81 | 3:b95fe07153f1 | 71 | int Nb_pas =0; // comptage du nombre de 1/2 pas |
| jdeschamps | 5:3e44d8755e88 | 72 | // int consigne_position =0; |
| jdeschamps | 5:3e44d8755e88 | 73 | // int position_demandee=10; |
| dg81 | 3:b95fe07153f1 | 74 | // dans le cas du firgelli : |
| jdeschamps | 5:3e44d8755e88 | 75 | // float a=127.47; // coefficient etalonnage capteur de position |
| jdeschamps | 5:3e44d8755e88 | 76 | // float b=-6.23; // coefficient etalonnage capteur de position |
| dg81 | 0:5fb4c7e603cf | 77 | // Initialisations |
| jdeschamps | 5:3e44d8755e88 | 78 | printf("Demarrage1...\n"); |
| jdeschamps | 5:3e44d8755e88 | 79 | DIRA=0; // moteur non alimenté |
| jdeschamps | 5:3e44d8755e88 | 80 | BRKA=0; |
| jdeschamps | 5:3e44d8755e88 | 81 | DIRB=0; |
| jdeschamps | 5:3e44d8755e88 | 82 | BRKB=0; |
| jdeschamps | 2:ee896365f8fe | 83 | timer_etat.attach(&IT_timer_etat, 0.01); // mise à jour de la commande moteur toutes les 10ms (100Hz) |
| dg81 | 0:5fb4c7e603cf | 84 | timer_reglage_vitesse.attach(&IT_timer_reglage_vitesse, 0.1); // mise à jour de la vitesse moteur par potentiomètre toutes les 0,1s |
| dg81 | 3:b95fe07153f1 | 85 | fc_haut.fall(&IT_fc_haut); // declaration des programmes kbi (SW2) |
| dg81 | 3:b95fe07153f1 | 86 | contact.fall(&IT_contact); // declaration des programmes kbi (SW3) |
| jdeschamps | 5:3e44d8755e88 | 87 | monte.fall(&IT_monte); // declaration des programmes kbi (D4) |
| jdeschamps | 5:3e44d8755e88 | 88 | descend.fall(&IT_descend); // declaration des programmes kbi (D8) |
| jdeschamps | 5:3e44d8755e88 | 89 | retour.fall(&IT_retour); // declaration des programmes kbi (D7) |
| jdeschamps | 5:3e44d8755e88 | 90 | stop.fall(&IT_stop); // declaration des programmes kbi (D6) |
| jdeschamps | 5:3e44d8755e88 | 91 | printf("Demarrage...\n"); |
| dg81 | 0:5fb4c7e603cf | 92 | // boucle programme principal |
| dg81 | 0:5fb4c7e603cf | 93 | while(1) { |
| dg81 | 0:5fb4c7e603cf | 94 | // on traite la liaison serie |
| dg81 | 0:5fb4c7e603cf | 95 | if (pc.readable()){ // test liaison serie |
| dg81 | 0:5fb4c7e603cf | 96 | pc.scanf("%s",command); // ecrit dans "command" la chaine reçue |
| jdeschamps | 5:3e44d8755e88 | 97 | /* if(strcmp(command,"position")==0){ |
| jdeschamps | 5:3e44d8755e88 | 98 | position_demandee=Nb_pas*0.0000125; |
| jdeschamps | 5:3e44d8755e88 | 99 | sens=1; |
| jdeschamps | 5:3e44d8755e88 | 100 | ENA=1; |
| jdeschamps | 5:3e44d8755e88 | 101 | ENB=1;*/ |
| dg81 | 0:5fb4c7e603cf | 102 | if(strcmp(command,"stop")==0) { |
| dg81 | 0:5fb4c7e603cf | 103 | sens=0; // si j'ai reçu "stop" désactivation du L298 et sens = 0 |
| dg81 | 0:5fb4c7e603cf | 104 | ENA=0; |
| dg81 | 0:5fb4c7e603cf | 105 | ENB=0; |
| jdeschamps | 5:3e44d8755e88 | 106 | }// fin stop |
| dg81 | 0:5fb4c7e603cf | 107 | else if (strcmp(command,"avant")==0){ |
| dg81 | 0:5fb4c7e603cf | 108 | sens=1; // si j'ai reçu "avant" activation du L298 et sens = 1 |
| dg81 | 0:5fb4c7e603cf | 109 | ENA=1; |
| dg81 | 0:5fb4c7e603cf | 110 | ENB=1; |
| dg81 | 0:5fb4c7e603cf | 111 | } |
| dg81 | 0:5fb4c7e603cf | 112 | else if (strcmp(command,"arriere")==0){ |
| dg81 | 0:5fb4c7e603cf | 113 | sens=-1; // si j'ai reçu "arriere" activation du L298 et sens = -1 |
| dg81 | 0:5fb4c7e603cf | 114 | ENA=1; |
| dg81 | 0:5fb4c7e603cf | 115 | ENB=1; |
| dg81 | 0:5fb4c7e603cf | 116 | } |
| dg81 | 0:5fb4c7e603cf | 117 | else if (strcmp(command,"fc_haut")==0){ |
| dg81 | 0:5fb4c7e603cf | 118 | sens=0; // si j'ai reçu "fc_haut" désactivation du L298 et position = 0 |
| dg81 | 0:5fb4c7e603cf | 119 | ENA=0; // (réinitialisation du nombre de pas) |
| dg81 | 0:5fb4c7e603cf | 120 | ENB=0; |
| dg81 | 3:b95fe07153f1 | 121 | Nb_pas=0; |
| dg81 | 0:5fb4c7e603cf | 122 | } |
| jdeschamps | 4:1d58769720c6 | 123 | else if (strcmp(command,"retour")==0){ |
| jdeschamps | 4:1d58769720c6 | 124 | sens=-1; |
| jdeschamps | 4:1d58769720c6 | 125 | ENA=1; |
| jdeschamps | 4:1d58769720c6 | 126 | ENB=1; |
| jdeschamps | 4:1d58769720c6 | 127 | } |
| dg81 | 0:5fb4c7e603cf | 128 | else if (strcmp(command,"contact")==0){ |
| dg81 | 0:5fb4c7e603cf | 129 | sens=0; // si j'ai reçu "contact" désactivation du L298 et position = 0 |
| dg81 | 0:5fb4c7e603cf | 130 | ENA=0; |
| dg81 | 0:5fb4c7e603cf | 131 | ENB=0; |
| dg81 | 3:b95fe07153f1 | 132 | /***********************************************************************************************************/ |
| dg81 | 3:b95fe07153f1 | 133 | /******************** Traitement contact si firgelli *******************************************************/ |
| dg81 | 3:b95fe07153f1 | 134 | /***********************************************************************************************************/ |
| dg81 | 3:b95fe07153f1 | 135 | /*// en mode test sur système avec capteur de position |
| dg81 | 3:b95fe07153f1 | 136 | Vpos=ain1.read(); // lecture du capteur de position (firgelli) |
| dg81 | 3:b95fe07153f1 | 137 | position_mesuree=a*Vpos+b; // calcule la position (firgelli) |
| dg81 | 0:5fb4c7e603cf | 138 | printf("Npas : %d , Vpos : %f , Position mesuree : %f \n", position,Vpos,position_mesuree); |
| dg81 | 0:5fb4c7e603cf | 139 | // sur le vrai système |
| dg81 | 0:5fb4c7e603cf | 140 | //position_mesuree=position*0.0125; |
| dg81 | 3:b95fe07153f1 | 141 | //printf("nb pas = %d\n", position_mesuree); */ |
| dg81 | 3:b95fe07153f1 | 142 | /***********************************************************************************************************/ |
| dg81 | 3:b95fe07153f1 | 143 | /******************** Traitement contact si moteur pas à pas ************************************************/ |
| dg81 | 3:b95fe07153f1 | 144 | /***********************************************************************************************************/ |
| dg81 | 3:b95fe07153f1 | 145 | // en mode test sur système avec capteur de position |
| dg81 | 3:b95fe07153f1 | 146 | position_mesuree=Nb_pas*0.0125; |
| dg81 | 3:b95fe07153f1 | 147 | printf("Npas : %d , Vpos : %f , Position mesuree : %f \n", Nb_pas,Vpos,position_mesuree); |
| dg81 | 0:5fb4c7e603cf | 148 | } |
| jdeschamps | 5:3e44d8755e88 | 149 | /* else if(strcmp(command,"vitesse")==0) { // trame vitesse : "vitesse<CR>XXXX<CR>" où XXXX représente la frequence de pilotage du moteur |
| dg81 | 0:5fb4c7e603cf | 150 | pc.scanf("%s",command); // lecture de XXXX la frequence de pilotage |
| dg81 | 0:5fb4c7e603cf | 151 | frequence=atoi(command); // change la chaine de caractères en entier |
| dg81 | 0:5fb4c7e603cf | 152 | periode=1/float(frequence); |
| jdeschamps | 5:3e44d8755e88 | 153 | printf("frequence : %f, periode : %f \n", frequence,periode); |
| dg81 | 0:5fb4c7e603cf | 154 | timer_etat.attach(&IT_timer_etat, periode); //on fixe la periode de pilotage du moteur |
| dg81 | 0:5fb4c7e603cf | 155 | } |
| dg81 | 0:5fb4c7e603cf | 156 | else if(strcmp(command,"position")==0) { |
| dg81 | 0:5fb4c7e603cf | 157 | pc.scanf("%s",command); |
| jdeschamps | 2:ee896365f8fe | 158 | consigne_position=atoi(command); |
| jdeschamps | 2:ee896365f8fe | 159 | |
| dg81 | 0:5fb4c7e603cf | 160 | } |
| jdeschamps | 4:1d58769720c6 | 161 | else if (Nb_pas<=0){ |
| jdeschamps | 4:1d58769720c6 | 162 | sens=0; |
| jdeschamps | 4:1d58769720c6 | 163 | ENA=0; |
| jdeschamps | 4:1d58769720c6 | 164 | ENB=0; |
| jdeschamps | 4:1d58769720c6 | 165 | } |
| jdeschamps | 4:1d58769720c6 | 166 | else if (position_mesuree<=0){ |
| jdeschamps | 4:1d58769720c6 | 167 | sens=0; |
| jdeschamps | 4:1d58769720c6 | 168 | ENA=0; |
| jdeschamps | 4:1d58769720c6 | 169 | ENB=0; |
| jdeschamps | 4:1d58769720c6 | 170 | } |
| jdeschamps | 5:3e44d8755e88 | 171 | } */ |
| jdeschamps | 5:3e44d8755e88 | 172 | // on traite la commande du moteur |
| jdeschamps | 5:3e44d8755e88 | 173 | } // fin if readable |
| dg81 | 0:5fb4c7e603cf | 174 | if (flag_timer_etat==1) |
| dg81 | 0:5fb4c7e603cf | 175 | { |
| jdeschamps | 5:3e44d8755e88 | 176 | //printf("etat=%d\n",etat); |
| dg81 | 0:5fb4c7e603cf | 177 | if (sens ==1) { |
| dg81 | 0:5fb4c7e603cf | 178 | etat++; |
| dg81 | 3:b95fe07153f1 | 179 | Nb_pas++; |
| dg81 | 0:5fb4c7e603cf | 180 | if (etat>7) etat=0; |
| dg81 | 0:5fb4c7e603cf | 181 | } |
| dg81 | 0:5fb4c7e603cf | 182 | else if (sens==-1){ |
| dg81 | 0:5fb4c7e603cf | 183 | etat--; |
| dg81 | 3:b95fe07153f1 | 184 | Nb_pas--; |
| jdeschamps | 5:3e44d8755e88 | 185 | if (Nb_pas<=0){ //quand Nb_pas arrive à 0, le moteur s'arrête |
| jdeschamps | 5:3e44d8755e88 | 186 | sens=0; |
| jdeschamps | 5:3e44d8755e88 | 187 | ENA=0; |
| jdeschamps | 5:3e44d8755e88 | 188 | ENB=0; |
| jdeschamps | 5:3e44d8755e88 | 189 | } |
| dg81 | 0:5fb4c7e603cf | 190 | if (etat<0) etat=7; |
| jdeschamps | 5:3e44d8755e88 | 191 | } // fin sens = -1 |
| dg81 | 0:5fb4c7e603cf | 192 | switch (etat) { |
| dg81 | 0:5fb4c7e603cf | 193 | case 0 : |
| jdeschamps | 5:3e44d8755e88 | 194 | DIRA=1; |
| jdeschamps | 5:3e44d8755e88 | 195 | BRKA=0; |
| jdeschamps | 5:3e44d8755e88 | 196 | DIRB=0; |
| jdeschamps | 5:3e44d8755e88 | 197 | BRKB=1; |
| dg81 | 0:5fb4c7e603cf | 198 | break; |
| dg81 | 0:5fb4c7e603cf | 199 | case 1 : |
| jdeschamps | 5:3e44d8755e88 | 200 | DIRA=1; |
| jdeschamps | 5:3e44d8755e88 | 201 | BRKA=0; |
| jdeschamps | 5:3e44d8755e88 | 202 | DIRB=1; |
| jdeschamps | 5:3e44d8755e88 | 203 | BRKB=0; |
| dg81 | 0:5fb4c7e603cf | 204 | break; |
| dg81 | 0:5fb4c7e603cf | 205 | case 2 : |
| jdeschamps | 5:3e44d8755e88 | 206 | DIRA=0; |
| jdeschamps | 5:3e44d8755e88 | 207 | BRKA=1; |
| jdeschamps | 5:3e44d8755e88 | 208 | DIRB=1; |
| jdeschamps | 5:3e44d8755e88 | 209 | BRKB=0; |
| dg81 | 0:5fb4c7e603cf | 210 | break; |
| dg81 | 0:5fb4c7e603cf | 211 | case 3 : |
| jdeschamps | 5:3e44d8755e88 | 212 | DIRA=0; |
| jdeschamps | 5:3e44d8755e88 | 213 | BRKA=0; |
| jdeschamps | 5:3e44d8755e88 | 214 | DIRB=1; |
| jdeschamps | 5:3e44d8755e88 | 215 | BRKB=0; |
| dg81 | 0:5fb4c7e603cf | 216 | break; |
| dg81 | 0:5fb4c7e603cf | 217 | case 4 : |
| jdeschamps | 5:3e44d8755e88 | 218 | DIRA=0; |
| jdeschamps | 5:3e44d8755e88 | 219 | BRKA=0; |
| jdeschamps | 5:3e44d8755e88 | 220 | DIRB=0; |
| jdeschamps | 5:3e44d8755e88 | 221 | BRKB=1; |
| dg81 | 0:5fb4c7e603cf | 222 | break; |
| dg81 | 0:5fb4c7e603cf | 223 | case 5 : |
| jdeschamps | 5:3e44d8755e88 | 224 | DIRA=0; |
| jdeschamps | 5:3e44d8755e88 | 225 | BRKA=0; |
| jdeschamps | 5:3e44d8755e88 | 226 | DIRB=0; |
| jdeschamps | 5:3e44d8755e88 | 227 | BRKB=0; |
| dg81 | 0:5fb4c7e603cf | 228 | break; |
| dg81 | 0:5fb4c7e603cf | 229 | case 6 : |
| jdeschamps | 5:3e44d8755e88 | 230 | DIRA=0; |
| jdeschamps | 5:3e44d8755e88 | 231 | BRKA=1; |
| jdeschamps | 5:3e44d8755e88 | 232 | DIRB=0; |
| jdeschamps | 5:3e44d8755e88 | 233 | BRKB=0; |
| dg81 | 0:5fb4c7e603cf | 234 | break; |
| dg81 | 0:5fb4c7e603cf | 235 | case 7 : |
| jdeschamps | 5:3e44d8755e88 | 236 | DIRA=1; |
| jdeschamps | 5:3e44d8755e88 | 237 | BRKA=0; |
| jdeschamps | 5:3e44d8755e88 | 238 | DIRB=0; |
| jdeschamps | 5:3e44d8755e88 | 239 | BRKB=0; |
| dg81 | 0:5fb4c7e603cf | 240 | break; |
| dg81 | 0:5fb4c7e603cf | 241 | default : |
| dg81 | 0:5fb4c7e603cf | 242 | etat=0; |
| jdeschamps | 5:3e44d8755e88 | 243 | } // fin switch |
| dg81 | 0:5fb4c7e603cf | 244 | // printf ("etat = %d\n",etat); |
| dg81 | 0:5fb4c7e603cf | 245 | flag_timer_etat=0; |
| jdeschamps | 5:3e44d8755e88 | 246 | } // fin if timer |
| dg81 | 0:5fb4c7e603cf | 247 | if (flag_fc_haut==1){ // si j'ai un appui sur BP fc_haut : désactivation du L298 et position = 0 |
| dg81 | 3:b95fe07153f1 | 248 | Nb_pas=0; |
| dg81 | 0:5fb4c7e603cf | 249 | sens=0; |
| dg81 | 0:5fb4c7e603cf | 250 | ENA=0; |
| dg81 | 0:5fb4c7e603cf | 251 | ENB=0; |
| dg81 | 0:5fb4c7e603cf | 252 | flag_fc_haut=0; |
| dg81 | 0:5fb4c7e603cf | 253 | } |
| jdeschamps | 4:1d58769720c6 | 254 | if (flag_retour==1){ |
| jdeschamps | 4:1d58769720c6 | 255 | sens=-1; |
| jdeschamps | 4:1d58769720c6 | 256 | ENA=1; |
| jdeschamps | 4:1d58769720c6 | 257 | ENB=1; |
| jdeschamps | 5:3e44d8755e88 | 258 | printf("retour a zero \n"); |
| jdeschamps | 4:1d58769720c6 | 259 | flag_retour=0; |
| jdeschamps | 4:1d58769720c6 | 260 | } |
| jdeschamps | 5:3e44d8755e88 | 261 | if (flag_monte==1){ |
| jdeschamps | 5:3e44d8755e88 | 262 | wait(0.05); |
| jdeschamps | 5:3e44d8755e88 | 263 | sens=1; |
| jdeschamps | 5:3e44d8755e88 | 264 | ENA=1; |
| jdeschamps | 5:3e44d8755e88 | 265 | ENB=1; |
| jdeschamps | 5:3e44d8755e88 | 266 | printf("appui sur monte \n"); |
| jdeschamps | 5:3e44d8755e88 | 267 | flag_monte=0; |
| jdeschamps | 5:3e44d8755e88 | 268 | } |
| jdeschamps | 5:3e44d8755e88 | 269 | if (flag_descend==1){ |
| jdeschamps | 5:3e44d8755e88 | 270 | wait(0.05); |
| jdeschamps | 5:3e44d8755e88 | 271 | sens=-1; |
| jdeschamps | 5:3e44d8755e88 | 272 | ENA=1; |
| jdeschamps | 5:3e44d8755e88 | 273 | ENB=1; |
| jdeschamps | 5:3e44d8755e88 | 274 | printf("appui sur descend \n"); |
| jdeschamps | 5:3e44d8755e88 | 275 | flag_descend=0; |
| jdeschamps | 5:3e44d8755e88 | 276 | } |
| jdeschamps | 5:3e44d8755e88 | 277 | if (flag_stop==1){ |
| jdeschamps | 5:3e44d8755e88 | 278 | sens=0; |
| jdeschamps | 5:3e44d8755e88 | 279 | ENA=0; |
| jdeschamps | 5:3e44d8755e88 | 280 | ENB=0; |
| jdeschamps | 5:3e44d8755e88 | 281 | flag_stop=0; |
| jdeschamps | 5:3e44d8755e88 | 282 | } |
| dg81 | 0:5fb4c7e603cf | 283 | if (flag_contact==1){ // si j'ai un appui sur BP contact : désactivation du L298 et envoi de la position |
| dg81 | 3:b95fe07153f1 | 284 | sens=0; // si j'ai reçu "contact" désactivation du L298 et position = 0 |
| dg81 | 0:5fb4c7e603cf | 285 | ENA=0; |
| dg81 | 0:5fb4c7e603cf | 286 | ENB=0; |
| dg81 | 3:b95fe07153f1 | 287 | /***********************************************************************************************************/ |
| dg81 | 3:b95fe07153f1 | 288 | /******************** Traitement contact si firgelli *******************************************************/ |
| dg81 | 3:b95fe07153f1 | 289 | /***********************************************************************************************************/ |
| dg81 | 3:b95fe07153f1 | 290 | /*// en mode test sur système avec capteur de position |
| dg81 | 3:b95fe07153f1 | 291 | Vpos=ain1.read(); // lecture du capteur de position (firgelli) |
| dg81 | 3:b95fe07153f1 | 292 | position_mesuree=a*Vpos+b; // calcule la position (firgelli) |
| dg81 | 3:b95fe07153f1 | 293 | printf("Npas : %d , Vpos : %f , Position mesuree : %f \n", position,Vpos,position_mesuree); |
| dg81 | 3:b95fe07153f1 | 294 | // sur le vrai système |
| dg81 | 3:b95fe07153f1 | 295 | //position_mesuree=position*0.0125; |
| dg81 | 3:b95fe07153f1 | 296 | //printf("nb pas = %d\n", position_mesuree); */ |
| dg81 | 3:b95fe07153f1 | 297 | /***********************************************************************************************************/ |
| dg81 | 3:b95fe07153f1 | 298 | /******************** Traitement contact si moteur pas à pas ************************************************/ |
| dg81 | 3:b95fe07153f1 | 299 | /***********************************************************************************************************/ |
| dg81 | 3:b95fe07153f1 | 300 | // en mode test sur système avec capteur de position |
| jdeschamps | 5:3e44d8755e88 | 301 | position_mesuree=Nb_pas*0.0000125; |
| jdeschamps | 4:1d58769720c6 | 302 | printf("Npas : %d , Vpos : %f , Position mesuree : %f mm \n", Nb_pas,Vpos,position_mesuree); |
| jdeschamps | 4:1d58769720c6 | 303 | flag_contact=0; |
| dg81 | 0:5fb4c7e603cf | 304 | } |
| dg81 | 0:5fb4c7e603cf | 305 | if (flag_timer_reglage_vitesse==1){ |
| dg81 | 0:5fb4c7e603cf | 306 | Vpot=ain0.read(); // Vpot varie de 0 à 100% (0 à 1) en fonction du réglage vitesse |
| jdeschamps | 5:3e44d8755e88 | 307 | frequence= 1500*(Vpot+1); // frequence varie de 700 Hz à 1400Hz) |
| dg81 | 0:5fb4c7e603cf | 308 | periode=1/float(frequence); |
| dg81 | 0:5fb4c7e603cf | 309 | timer_etat.attach(&IT_timer_etat, periode); // maj vitesse moteur par potentiomètre |
| jdeschamps | 5:3e44d8755e88 | 310 | //printf("frequence : %f, periode : %f \n", frequence,periode); |
| dg81 | 0:5fb4c7e603cf | 311 | flag_timer_reglage_vitesse=0; |
| dg81 | 0:5fb4c7e603cf | 312 | } |
| dg81 | 0:5fb4c7e603cf | 313 | } |
| jdeschamps | 4:1d58769720c6 | 314 | } |
| jdeschamps | 5:3e44d8755e88 | 315 |