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: FSR Pousse_Seringue mbed
Fork of Pousse_seringue_Ulg by
main.cpp
00001 00002 #include "mbed.h" 00003 #include "Stepper.h" 00004 #include "FSR.h" 00005 #define pi 3.141592653589793 00006 00007 FSR gauge1(PA_1, 10); // A1 Strain gauge, a 10k resistor is used 00008 FSR gauge2(PA_4, 10); // A2 Strain gauge 00009 DigitalIn home(PA_9); // D8 00010 DigitalIn switch1(PB_3); // D3 Switch => Rouge 00011 DigitalIn switch2(PB_5); // D4 Switch => Noir 00012 InterruptIn switch3(PA_10); // D2 Switch => Vert 00013 Stepper mot(PB_6, PC_7); // D10 D9 motor :NEMA 17 00014 DigitalOut myled(LED2); 00015 Serial s(SERIAL_TX, SERIAL_RX); 00016 00017 00018 int main() 00019 { 00020 ////////////////// Initialisation ////////////////// 00021 float entree = 0; 00022 int mode = 0; // Pousser (1) ou tirer (2) 00023 float vitesse = 0; // vitesse d'avance 00024 float avance = 0; // avance, nombre de pas à realiser 00025 int vol_ou_deb = 0; // travailler en volume (1) ou en debit (2) 00026 float section = 0; // section de la seringue 00027 float volume = 0; // volume demande 00028 float debit = 0; // debit demande 00029 mot.setSpeed(80000); // vitesse max <!> NE PAS METTRE DE MICROPAS <!> 00030 int paire=0; 00031 int change=0; 00032 00033 ////////////////// Mode : Pousser ou tirer ? ////////////////// 00034 printf("Bonjour utilisateur, quel mode souhaitez-vous utiliser :\n"); 00035 printf("Pour vider une seringue de son contenu, tapez 1 \n"); 00036 printf("Pour remplir une seringue, tapez 2 \n"); 00037 scanf("%d", &mode); // Choix du mode 00038 while( mode != 1 && mode != 2) 00039 { // Verifie que l'entree est correcte 00040 printf("Une erreur s'est produite quelque part.\n"); 00041 printf("Pour vider une seringue de son contenu, tapez 1 \n"); 00042 printf("Pour remplir une seringue, tapez 2 \n"); 00043 scanf("%d", &mode); 00044 } 00045 00046 ////////////////// Si pousser : placement du chariot ////////////////// 00047 if (mode == 1) // On retourne vers le moteur puis on avance jusqu'à toucher la seringue 00048 { 00049 mot.rotate(0); // Sens de rotation : 1 = pousser, 0 = tirer 00050 while (switch2 == 0 && switch3 == 0) // Tant que pas à fond à gauche (côte moteur) ou switch3 pas enfonce, on continue 00051 { 00052 } 00053 mot.stop(); 00054 printf("Veuillez placez la seringue. \n Une fois la seringue mise en place, tapez 1\n"); 00055 scanf("%f", &entree); 00056 while( entree != 1) { // Verifie que l'entree est correcte 00057 printf("L'entree est incorrecte.\n"); 00058 printf("Une fois la seringue mise en place, tapez 1\n"); 00059 scanf("%f", &entree); 00060 } 00061 mot.rotate(1); // Puis on repart dans l'autre sens. 00062 while(gauge1.readRaw() <= 0.4 && switch1 == 0) //Tant que le contacte n'a pas eu lieu 00063 { 00064 } 00065 mot.stop(); 00066 printf("Le contact entre la seringue et la fixation est realise\n"); 00067 } 00068 00069 ////////////////// Si tirer : placement du chariot ////////////////// 00070 if (mode == 2) // Si tirer 00071 { 00072 mot.rotate(1); // Sens de rotation : 1 = pousser, 0 = tirer 00073 while (switch1 == 0 && switch3 == 0) // Tant que pas à fond à droite (côte seringue) ou switch3 pas enfonce, on continue 00074 { 00075 } 00076 mot.stop(); 00077 printf("Veuillez placez la seringue. \n Une fois la seringue mise en place, tapez 1\n"); 00078 scanf("%f", &entree); 00079 while( entree != 1) { // Verifie que l'entree est correcte 00080 printf("L'entree est incorrecte.\n"); 00081 printf("Une fois la seringue mise en place, tapez 1\n"); 00082 scanf("%f", &entree); 00083 } 00084 mot.rotate(0); // Puis on repart dans l'autre sens. 00085 while(gauge2.readRaw() <= 0.4 && switch2 == 0) //Tant que le contacte n'a pas eu lieu 00086 { 00087 } 00088 mot.stop(); 00089 printf("Le contact entre la seringue et la fixation est realise.\n"); 00090 } 00091 00092 ////////////////// Actionnement de la seringue ////////////////// 00093 00094 printf("Voulez-vous travailler en volume ou en debit?\n"); 00095 printf("Pour travailler en volume, tapez 1 \n"); 00096 printf("Pour travailler en debit, tapez 2 \n"); 00097 scanf("%d", &vol_ou_deb); // choix : travailler en volume ou en debit 00098 while( vol_ou_deb != 1 && vol_ou_deb != 2) // Verifie que l'entree est correcte 00099 { 00100 printf("Une erreur s'est produite quelque part \n"); 00101 printf("Pour travailler en volume, tapez 1 \n"); 00102 printf("Pour travailler en debit, tapez 2 \n"); 00103 scanf("%d", &vol_ou_deb); 00104 } 00105 00106 //>>>>>>> VOLUME 00107 if (vol_ou_deb == 1 ) 00108 { 00109 printf("Veuillez maintenant indiquer le diamètre de la seringue s'il vous plait [mm].\n"); 00110 scanf("%f", §ion); 00111 while( section < 0 || section > 1000) // Verifie que l'entree est correcte 00112 { 00113 printf("Une erreur s'est produite quelque part.\n"); 00114 printf("Veuillez indiquer le diametre de la seringue s'il vous plait [mm^2].\n"); 00115 scanf("%f", §ion); 00116 } 00117 printf("Merci, veuillez maintenant indiquer le volume voulu s'il vous plait [micro-litre].\n"); 00118 scanf("%f", &volume); 00119 while( volume < 0 && volume > 500000) // Verifie que l'entree est correcte 00120 { 00121 printf("Une erreur s'est produite quelque part.\n"); 00122 printf("Veuillez indiquer le volume voulu s'il vous plait [micro-litre]. \n"); 00123 scanf("%f", &volume); 00124 } 00125 avance = 192000*volume/(0.25*pi*section*section);//+1000; // Sans micro-pas : 376500 = 1mm; avec micro-pas 192000 = 1mm 00126 } 00127 //>>>>>>> DEBIT 00128 if (vol_ou_deb == 2 ) 00129 { 00130 printf("Veuillez maintenant indiquer le diametre de la seringue s'il vous plait [mm].\n"); 00131 scanf("%f", §ion); 00132 while( section < 0 || section > 1000) // Verifie que l'entree est correcte 00133 { 00134 printf("Une erreur s'est produite quelque part.\n"); 00135 printf("Veuillez indiquer le diametre de la seringue s'il vous plait [mm].\n"); 00136 scanf("%f", §ion); 00137 } 00138 printf("Merci, veuillez maintenant indiquer le debit voulu s'il vous plait [micro-litre/ seconde].\n"); 00139 scanf("%f", &debit); 00140 while( debit < 0 && debit > 2) // Verifie que l'entree est correcte 00141 { 00142 printf("Une erreur s'est produite quelque part.\n"); 00143 printf("Veuillez indiquer le debit voulu s'il vous plait [micro-litre/seconde]. \n"); 00144 scanf("%f", &debit); 00145 } 00146 vitesse = 192000*debit/(0.25*pi*section*section); //Si pas de micro-pas 192000 si micro-pas. 00147 } 00148 00149 /////////////////// Si pousser ////////////////// 00150 if (mode == 1) 00151 { 00152 //>>>>>>> VOLUME 00153 if (vol_ou_deb == 1) // Si on travaille en VOLUME 00154 { 00155 printf("Demarrage de l'operation.\n"); 00156 mot.rotate(1); // Sens de rotation : 1 = pousser 0 = tirer 00157 mot.setPositionZero(); 00158 mot.goesTo(avance); 00159 00160 while(switch1==0) 00161 { 00162 if(switch3==1 && paire==0) 00163 { 00164 mot.stop(); 00165 printf(" ");//printf("Arret temporaire"); 00166 change = 1; 00167 } 00168 if (switch3 == 0 & change == 1) 00169 { 00170 paire = paire +1; 00171 paire = paire % 2; 00172 change = 0; 00173 } 00174 if (switch3 == 1 && paire == 1) 00175 { 00176 printf(" ");//printf("Redemarrage"); 00177 mot.rotate(1); 00178 mot.goesTo(avance); 00179 change = 1; 00180 } 00181 } 00182 } 00183 00184 //>>>>>>> DEBIT 00185 if (vol_ou_deb == 2) // Si on travaille en debit 00186 { 00187 printf("Demarrage de l'operation.\n"); 00188 mot.setSpeed(vitesse); 00189 mot.rotate(1); // Sens de rotation : 1 = pousser 0 = tirer. 00190 while (switch1 == 0) // Arret si fin de course 00191 { 00192 if(switch3==1 && paire==0) 00193 { 00194 mot.stop(); 00195 printf(" ");//printf("Arret temporaire"); 00196 change = 1; 00197 } 00198 if (switch3 == 0 & change == 1) 00199 { 00200 paire = paire +1; 00201 paire = paire % 2; 00202 change = 0; 00203 } 00204 if (switch3 == 1 && paire == 1) 00205 { 00206 printf(" ");//printf("Redemarrage"); 00207 mot.setSpeed(vitesse); 00208 mot.rotate(1); 00209 change = 1; 00210 } 00211 } 00212 mot.stop(); 00213 printf("Fin de l'operation."); 00214 } 00215 } 00216 /////////////////// Si tirer ////////////////// 00217 00218 if (mode == 2) 00219 { 00220 //>>>>>>> VOLUME 00221 if (vol_ou_deb == 1) // Si on travaille en VOLUME 00222 { 00223 printf("Demarrage de l'operation.\n"); 00224 mot.rotate(0); // Sens de rotation : 1 = pousser 0 = tirer 00225 mot.setPositionZero(); 00226 mot.goesTo(avance); 00227 00228 while(switch2==0) 00229 { 00230 if(switch3==1 && paire==0) 00231 { 00232 mot.stop(); 00233 printf(" ");//printf("Arret temporaire"); 00234 change = 1; 00235 } 00236 if (switch3 == 0 & change == 1) 00237 { 00238 paire = paire +1; 00239 paire = paire % 2; 00240 change = 0; 00241 } 00242 if (switch3 == 1 && paire == 1) 00243 { 00244 printf(" ");//printf("Redemarrage"); 00245 mot.rotate(0); 00246 mot.goesTo(avance); 00247 change = 1; 00248 } 00249 } 00250 } 00251 00252 //>>>>>>> DEBIT 00253 if (vol_ou_deb == 2) // Si on travaille en debit 00254 { 00255 printf("Demarrage de l'operation.\n"); 00256 mot.setSpeed(vitesse); 00257 mot.rotate(0); // Sens de rotation : 1 = pousser 0 = tirer. 00258 //printf("Je tire. \n"); 00259 while (switch2 ==0) // Arret si fin de course 00260 { 00261 if(switch3==1 && paire==0) 00262 { 00263 mot.stop(); 00264 printf(" ");//printf("Arret temporaire"); 00265 change = 1; 00266 } 00267 if (switch3 == 0 & change == 1) 00268 { 00269 paire = paire +1; 00270 paire = paire % 2; 00271 change = 0; 00272 } 00273 if (switch3 == 1 && paire == 1) 00274 { 00275 printf(" ");//printf("Redemarrage"); 00276 mot.setSpeed(vitesse); 00277 mot.rotate(0); 00278 change = 1; 00279 } 00280 } 00281 } 00282 } 00283 }
Generated on Fri Jul 22 2022 16:50:00 by
1.7.2
