C'est pour toi

Dependencies:   mbed TextLCD

Committer:
Monzername
Date:
Thu Dec 20 18:56:23 2018 +0000
Revision:
0:d6e2c937698a
Tiens prends le

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Monzername 0:d6e2c937698a 1 #include "mbed.h"
Monzername 0:d6e2c937698a 2 #include "TextLCD.h"
Monzername 0:d6e2c937698a 3 #include "Timer.h"
Monzername 0:d6e2c937698a 4 #define moy 31 //rapport cyclique à baisser
Monzername 0:d6e2c937698a 5 #define Kp 16
Monzername 0:d6e2c937698a 6 #define Kd 1
Monzername 0:d6e2c937698a 7
Monzername 0:d6e2c937698a 8 void vitG (int, int, float, float, float, float);
Monzername 0:d6e2c937698a 9 void vitD (int, int, float, float, float, float);
Monzername 0:d6e2c937698a 10 void Confettis();
Monzername 0:d6e2c937698a 11 void Suivi_de_ligne(int,int);
Monzername 0:d6e2c937698a 12 void Carre();
Monzername 0:d6e2c937698a 13
Monzername 0:d6e2c937698a 14 DigitalIn fdc(D2);
Monzername 0:d6e2c937698a 15 DigitalIn jack(D3);
Monzername 0:d6e2c937698a 16 PwmOut moteur1(D6);
Monzername 0:d6e2c937698a 17 PwmOut moteur2(D8);
Monzername 0:d6e2c937698a 18 DigitalOut SensMot1(D7);
Monzername 0:d6e2c937698a 19 DigitalOut SensMot2(D9);
Monzername 0:d6e2c937698a 20 AnalogIn capteur1(A1);
Monzername 0:d6e2c937698a 21 AnalogIn capteur2(A2);
Monzername 0:d6e2c937698a 22 AnalogIn capteur3(A3);
Monzername 0:d6e2c937698a 23 AnalogIn capteur4(A4);
Monzername 0:d6e2c937698a 24 TextLCD lcd(D15,D14,D10,D11,D12,D13);
Monzername 0:d6e2c937698a 25 DigitalIn Bouton1(D4);
Monzername 0:d6e2c937698a 26 DigitalIn Bouton2(D5);
Monzername 0:d6e2c937698a 27
Monzername 0:d6e2c937698a 28 int main()
Monzername 0:d6e2c937698a 29 {
Monzername 0:d6e2c937698a 30 int bout_av1=0;
Monzername 0:d6e2c937698a 31 int bout_av2=0;
Monzername 0:d6e2c937698a 32 int bout_fdc=0;
Monzername 0:d6e2c937698a 33 int Prog=5, Sel=0, Regl=5, Vit=5, Coef=5;
Monzername 0:d6e2c937698a 34 int Moy=moy, kp=Kp;
Monzername 0:d6e2c937698a 35 while(1) {
Monzername 0:d6e2c937698a 36 switch(Sel) {
Monzername 0:d6e2c937698a 37 case 0 :
Monzername 0:d6e2c937698a 38 lcd.cls();
Monzername 0:d6e2c937698a 39 wait(0.001);
Monzername 0:d6e2c937698a 40 lcd.printf("Programm");
Monzername 0:d6e2c937698a 41 lcd.locate(0,1);
Monzername 0:d6e2c937698a 42 lcd.printf("e");
Monzername 0:d6e2c937698a 43 if(Bouton2.read() < bout_av2) {
Monzername 0:d6e2c937698a 44 Sel=1;
Monzername 0:d6e2c937698a 45 bout_av1=0;
Monzername 0:d6e2c937698a 46 wait(0.15);
Monzername 0:d6e2c937698a 47 break;
Monzername 0:d6e2c937698a 48 }
Monzername 0:d6e2c937698a 49 bout_av2=Bouton2.read();
Monzername 0:d6e2c937698a 50 wait_ms(10);
Monzername 0:d6e2c937698a 51 if(Bouton1.read() < bout_av1) {
Monzername 0:d6e2c937698a 52 Sel=1;
Monzername 0:d6e2c937698a 53 bout_av1=0;
Monzername 0:d6e2c937698a 54 wait(0.15);
Monzername 0:d6e2c937698a 55 break;
Monzername 0:d6e2c937698a 56 }
Monzername 0:d6e2c937698a 57 bout_av1=Bouton1.read();
Monzername 0:d6e2c937698a 58 wait_ms(10);
Monzername 0:d6e2c937698a 59 if(fdc.read() < bout_fdc) {
Monzername 0:d6e2c937698a 60 Sel=5;
Monzername 0:d6e2c937698a 61 Prog=0;
Monzername 0:d6e2c937698a 62 wait(0.15);
Monzername 0:d6e2c937698a 63 break;
Monzername 0:d6e2c937698a 64 }
Monzername 0:d6e2c937698a 65 bout_fdc=fdc.read();
Monzername 0:d6e2c937698a 66 wait_ms(10);
Monzername 0:d6e2c937698a 67 break;
Monzername 0:d6e2c937698a 68 case 1 :
Monzername 0:d6e2c937698a 69 lcd.cls();
Monzername 0:d6e2c937698a 70 wait(0.001);
Monzername 0:d6e2c937698a 71 lcd.printf("Reglage");
Monzername 0:d6e2c937698a 72
Monzername 0:d6e2c937698a 73 if(Bouton2.read() < bout_av2) {
Monzername 0:d6e2c937698a 74 Sel=0;
Monzername 0:d6e2c937698a 75 bout_av1=0;
Monzername 0:d6e2c937698a 76 wait(0.15);
Monzername 0:d6e2c937698a 77 break;
Monzername 0:d6e2c937698a 78 }
Monzername 0:d6e2c937698a 79 bout_av2=Bouton2.read();
Monzername 0:d6e2c937698a 80 wait_ms(10);
Monzername 0:d6e2c937698a 81 if(Bouton1.read() < bout_av1) {
Monzername 0:d6e2c937698a 82 Sel=0;
Monzername 0:d6e2c937698a 83 bout_av1=0;
Monzername 0:d6e2c937698a 84 wait(0.15);
Monzername 0:d6e2c937698a 85 break;
Monzername 0:d6e2c937698a 86 }
Monzername 0:d6e2c937698a 87 bout_av1=Bouton1.read();
Monzername 0:d6e2c937698a 88 wait_ms(10);
Monzername 0:d6e2c937698a 89 if(fdc.read() < bout_fdc) {
Monzername 0:d6e2c937698a 90 Sel=5;
Monzername 0:d6e2c937698a 91 Regl=0;
Monzername 0:d6e2c937698a 92 wait(0.15);
Monzername 0:d6e2c937698a 93 break;
Monzername 0:d6e2c937698a 94 }
Monzername 0:d6e2c937698a 95 bout_fdc=fdc.read();
Monzername 0:d6e2c937698a 96 wait_ms(10);
Monzername 0:d6e2c937698a 97 break;
Monzername 0:d6e2c937698a 98 default :
Monzername 0:d6e2c937698a 99 break;
Monzername 0:d6e2c937698a 100 }
Monzername 0:d6e2c937698a 101 switch(Prog) {
Monzername 0:d6e2c937698a 102 case 0 :
Monzername 0:d6e2c937698a 103 lcd.cls();
Monzername 0:d6e2c937698a 104 wait(0.001);
Monzername 0:d6e2c937698a 105 lcd.printf("Confetti");
Monzername 0:d6e2c937698a 106 lcd.locate(0,1);
Monzername 0:d6e2c937698a 107 lcd.printf("s");
Monzername 0:d6e2c937698a 108 if(fdc.read() < bout_fdc) {
Monzername 0:d6e2c937698a 109 Confettis();
Monzername 0:d6e2c937698a 110 Prog=5;
Monzername 0:d6e2c937698a 111 Sel=0;
Monzername 0:d6e2c937698a 112 wait(0.15);
Monzername 0:d6e2c937698a 113 break;
Monzername 0:d6e2c937698a 114 }
Monzername 0:d6e2c937698a 115 bout_fdc=fdc.read();
Monzername 0:d6e2c937698a 116 wait_ms(10);
Monzername 0:d6e2c937698a 117 if(Bouton2.read() < bout_av2) {
Monzername 0:d6e2c937698a 118 Prog=3;
Monzername 0:d6e2c937698a 119 wait(0.15);
Monzername 0:d6e2c937698a 120 break;
Monzername 0:d6e2c937698a 121 }
Monzername 0:d6e2c937698a 122 bout_av2=Bouton2.read();
Monzername 0:d6e2c937698a 123 wait_ms(10);
Monzername 0:d6e2c937698a 124 if(Bouton1.read() < bout_av1) {
Monzername 0:d6e2c937698a 125 Prog=1;
Monzername 0:d6e2c937698a 126 wait(0.15);
Monzername 0:d6e2c937698a 127 break;
Monzername 0:d6e2c937698a 128 }
Monzername 0:d6e2c937698a 129 bout_av1=Bouton1.read();
Monzername 0:d6e2c937698a 130 wait_ms(10);
Monzername 0:d6e2c937698a 131 break;
Monzername 0:d6e2c937698a 132 case 1 :
Monzername 0:d6e2c937698a 133 lcd.cls();
Monzername 0:d6e2c937698a 134 wait(0.001);
Monzername 0:d6e2c937698a 135 lcd.printf("Suivi de");
Monzername 0:d6e2c937698a 136 lcd.locate(0,1);
Monzername 0:d6e2c937698a 137 lcd.printf(" ligne");
Monzername 0:d6e2c937698a 138 if(fdc.read() < bout_fdc) {
Monzername 0:d6e2c937698a 139 Suivi_de_ligne(Moy,kp);
Monzername 0:d6e2c937698a 140 Prog=5;
Monzername 0:d6e2c937698a 141 Sel=0;
Monzername 0:d6e2c937698a 142 wait(0.15);
Monzername 0:d6e2c937698a 143 break;
Monzername 0:d6e2c937698a 144 }
Monzername 0:d6e2c937698a 145 bout_fdc=fdc.read();
Monzername 0:d6e2c937698a 146 wait_ms(10);
Monzername 0:d6e2c937698a 147 if(Bouton2.read() < bout_av2) {
Monzername 0:d6e2c937698a 148 Prog=0;
Monzername 0:d6e2c937698a 149 wait(0.15);
Monzername 0:d6e2c937698a 150 break;
Monzername 0:d6e2c937698a 151 }
Monzername 0:d6e2c937698a 152 bout_av2=Bouton2.read();
Monzername 0:d6e2c937698a 153 wait_ms(10);
Monzername 0:d6e2c937698a 154 if(Bouton1.read() < bout_av1) {
Monzername 0:d6e2c937698a 155 Prog=2;
Monzername 0:d6e2c937698a 156 wait(0.15);
Monzername 0:d6e2c937698a 157 }
Monzername 0:d6e2c937698a 158 bout_av1=Bouton1.read();
Monzername 0:d6e2c937698a 159 wait_ms(10);
Monzername 0:d6e2c937698a 160 break;
Monzername 0:d6e2c937698a 161 case 2 :
Monzername 0:d6e2c937698a 162 lcd.cls();
Monzername 0:d6e2c937698a 163 wait(0.001);
Monzername 0:d6e2c937698a 164 lcd.printf("Carre");
Monzername 0:d6e2c937698a 165 if(fdc.read() < bout_fdc) {
Monzername 0:d6e2c937698a 166 Carre();
Monzername 0:d6e2c937698a 167 Prog=5;
Monzername 0:d6e2c937698a 168 Sel=0;
Monzername 0:d6e2c937698a 169 wait(0.15);
Monzername 0:d6e2c937698a 170 break;
Monzername 0:d6e2c937698a 171 }
Monzername 0:d6e2c937698a 172 bout_fdc=fdc.read();
Monzername 0:d6e2c937698a 173 wait_ms(10);
Monzername 0:d6e2c937698a 174 if(Bouton2.read() < bout_av2) {
Monzername 0:d6e2c937698a 175 Prog=1;
Monzername 0:d6e2c937698a 176 wait(0.15);
Monzername 0:d6e2c937698a 177 break;
Monzername 0:d6e2c937698a 178 }
Monzername 0:d6e2c937698a 179 bout_av2=Bouton2.read();
Monzername 0:d6e2c937698a 180 wait_ms(10);
Monzername 0:d6e2c937698a 181 if(Bouton1.read() < bout_av1) {
Monzername 0:d6e2c937698a 182 Prog=3;
Monzername 0:d6e2c937698a 183 wait(0.15);
Monzername 0:d6e2c937698a 184 }
Monzername 0:d6e2c937698a 185 bout_av1=Bouton1.read();
Monzername 0:d6e2c937698a 186 wait_ms(10);
Monzername 0:d6e2c937698a 187 break;
Monzername 0:d6e2c937698a 188 case 3 :
Monzername 0:d6e2c937698a 189 lcd.cls();
Monzername 0:d6e2c937698a 190 wait(0.001);
Monzername 0:d6e2c937698a 191 lcd.printf("Quitter");
Monzername 0:d6e2c937698a 192 if(fdc.read() < bout_fdc) {
Monzername 0:d6e2c937698a 193 Prog=5;
Monzername 0:d6e2c937698a 194 Sel=0;
Monzername 0:d6e2c937698a 195 wait(0.15);
Monzername 0:d6e2c937698a 196 break;
Monzername 0:d6e2c937698a 197 }
Monzername 0:d6e2c937698a 198 bout_fdc=fdc.read();
Monzername 0:d6e2c937698a 199 wait_ms(10);
Monzername 0:d6e2c937698a 200 if(Bouton2.read() < bout_av2) {
Monzername 0:d6e2c937698a 201 Prog=2;
Monzername 0:d6e2c937698a 202 wait(0.15);
Monzername 0:d6e2c937698a 203 break;
Monzername 0:d6e2c937698a 204 }
Monzername 0:d6e2c937698a 205 bout_av2=Bouton2.read();
Monzername 0:d6e2c937698a 206 wait_ms(10);
Monzername 0:d6e2c937698a 207 if(Bouton1.read() < bout_av1) {
Monzername 0:d6e2c937698a 208 Prog=0;
Monzername 0:d6e2c937698a 209 wait(0.15);
Monzername 0:d6e2c937698a 210 }
Monzername 0:d6e2c937698a 211 bout_av1=Bouton1.read();
Monzername 0:d6e2c937698a 212 wait_ms(10);
Monzername 0:d6e2c937698a 213 break;
Monzername 0:d6e2c937698a 214 default :
Monzername 0:d6e2c937698a 215 break;
Monzername 0:d6e2c937698a 216 }
Monzername 0:d6e2c937698a 217 switch(Regl) {
Monzername 0:d6e2c937698a 218 case 0 :
Monzername 0:d6e2c937698a 219 lcd.cls();
Monzername 0:d6e2c937698a 220 wait(0.001);
Monzername 0:d6e2c937698a 221 lcd.printf("Vitesse");
Monzername 0:d6e2c937698a 222 if(fdc.read() < bout_fdc) {
Monzername 0:d6e2c937698a 223 Vit=0;
Monzername 0:d6e2c937698a 224 Regl=5;
Monzername 0:d6e2c937698a 225 wait(0.15);
Monzername 0:d6e2c937698a 226 break;
Monzername 0:d6e2c937698a 227 }
Monzername 0:d6e2c937698a 228 bout_fdc=fdc.read();
Monzername 0:d6e2c937698a 229 wait_ms(10);
Monzername 0:d6e2c937698a 230 if(Bouton2.read() < bout_av2) {
Monzername 0:d6e2c937698a 231 Regl=2;
Monzername 0:d6e2c937698a 232 wait(0.15);
Monzername 0:d6e2c937698a 233 break;
Monzername 0:d6e2c937698a 234 }
Monzername 0:d6e2c937698a 235 bout_av2=Bouton2.read();
Monzername 0:d6e2c937698a 236 wait_ms(10);
Monzername 0:d6e2c937698a 237 if(Bouton1.read() < bout_av1) {
Monzername 0:d6e2c937698a 238 Regl=1;
Monzername 0:d6e2c937698a 239 wait(0.15);
Monzername 0:d6e2c937698a 240 break;
Monzername 0:d6e2c937698a 241 }
Monzername 0:d6e2c937698a 242 bout_av1=Bouton1.read();
Monzername 0:d6e2c937698a 243 wait_ms(10);
Monzername 0:d6e2c937698a 244 break;
Monzername 0:d6e2c937698a 245 case 1 :
Monzername 0:d6e2c937698a 246 lcd.cls();
Monzername 0:d6e2c937698a 247 wait(0.001);
Monzername 0:d6e2c937698a 248 lcd.printf("Coeffici");
Monzername 0:d6e2c937698a 249 lcd.locate(0,1);
Monzername 0:d6e2c937698a 250 lcd.printf("ent");
Monzername 0:d6e2c937698a 251 if(fdc.read() < bout_fdc) {
Monzername 0:d6e2c937698a 252 Coef=0;
Monzername 0:d6e2c937698a 253 Regl=5;
Monzername 0:d6e2c937698a 254 wait(0.15);
Monzername 0:d6e2c937698a 255 break;
Monzername 0:d6e2c937698a 256 }
Monzername 0:d6e2c937698a 257 bout_fdc=fdc.read();
Monzername 0:d6e2c937698a 258 wait_ms(10);
Monzername 0:d6e2c937698a 259 if(Bouton2.read() < bout_av2) {
Monzername 0:d6e2c937698a 260 Regl=0;
Monzername 0:d6e2c937698a 261 wait(0.15);
Monzername 0:d6e2c937698a 262 break;
Monzername 0:d6e2c937698a 263 }
Monzername 0:d6e2c937698a 264 bout_av2=Bouton2.read();
Monzername 0:d6e2c937698a 265 wait_ms(10);
Monzername 0:d6e2c937698a 266 if(Bouton1.read() < bout_av1) {
Monzername 0:d6e2c937698a 267 Regl=2;
Monzername 0:d6e2c937698a 268 wait(0.15);
Monzername 0:d6e2c937698a 269 }
Monzername 0:d6e2c937698a 270 bout_av1=Bouton1.read();
Monzername 0:d6e2c937698a 271 wait_ms(10);
Monzername 0:d6e2c937698a 272 break;
Monzername 0:d6e2c937698a 273 case 2 :
Monzername 0:d6e2c937698a 274 lcd.cls();
Monzername 0:d6e2c937698a 275 wait(0.001);
Monzername 0:d6e2c937698a 276 lcd.printf("Quitter");
Monzername 0:d6e2c937698a 277 if(fdc.read() < bout_fdc) {
Monzername 0:d6e2c937698a 278 Regl=5;
Monzername 0:d6e2c937698a 279 Sel=0;
Monzername 0:d6e2c937698a 280 wait(0.15);
Monzername 0:d6e2c937698a 281 break;
Monzername 0:d6e2c937698a 282 }
Monzername 0:d6e2c937698a 283 bout_fdc=fdc.read();
Monzername 0:d6e2c937698a 284 wait_ms(10);
Monzername 0:d6e2c937698a 285 if(Bouton2.read() < bout_av2) {
Monzername 0:d6e2c937698a 286 Regl=1;
Monzername 0:d6e2c937698a 287 wait(0.15);
Monzername 0:d6e2c937698a 288 break;
Monzername 0:d6e2c937698a 289 }
Monzername 0:d6e2c937698a 290 bout_av2=Bouton2.read();
Monzername 0:d6e2c937698a 291 wait_ms(10);
Monzername 0:d6e2c937698a 292 if(Bouton1.read() < bout_av1) {
Monzername 0:d6e2c937698a 293 Regl=0;
Monzername 0:d6e2c937698a 294 wait(0.15);
Monzername 0:d6e2c937698a 295 }
Monzername 0:d6e2c937698a 296 bout_av1=Bouton1.read();
Monzername 0:d6e2c937698a 297 wait_ms(10);
Monzername 0:d6e2c937698a 298 break;
Monzername 0:d6e2c937698a 299 }
Monzername 0:d6e2c937698a 300 switch(Vit) {
Monzername 0:d6e2c937698a 301 case 0 :
Monzername 0:d6e2c937698a 302 if(fdc.read() < bout_fdc) {
Monzername 0:d6e2c937698a 303 Vit=5;
Monzername 0:d6e2c937698a 304 Regl=0;
Monzername 0:d6e2c937698a 305 wait(0.15);
Monzername 0:d6e2c937698a 306 break;
Monzername 0:d6e2c937698a 307 }
Monzername 0:d6e2c937698a 308 bout_fdc=fdc.read();
Monzername 0:d6e2c937698a 309 wait_ms(10);
Monzername 0:d6e2c937698a 310 if(Bouton1.read() < bout_av1) {
Monzername 0:d6e2c937698a 311 Moy++;
Monzername 0:d6e2c937698a 312 if (Moy>=101) {
Monzername 0:d6e2c937698a 313 Moy=0;
Monzername 0:d6e2c937698a 314 }
Monzername 0:d6e2c937698a 315 lcd.cls();
Monzername 0:d6e2c937698a 316 wait(0.001);
Monzername 0:d6e2c937698a 317 lcd.printf("Vitesse:");
Monzername 0:d6e2c937698a 318 lcd.locate(0,1);
Monzername 0:d6e2c937698a 319 lcd.printf(" %d ",Moy);
Monzername 0:d6e2c937698a 320 wait(0.15);
Monzername 0:d6e2c937698a 321
Monzername 0:d6e2c937698a 322 }
Monzername 0:d6e2c937698a 323 bout_av1=Bouton1.read();
Monzername 0:d6e2c937698a 324 wait_ms(10);
Monzername 0:d6e2c937698a 325 if(Bouton2.read() < bout_av2) {
Monzername 0:d6e2c937698a 326 Moy--;
Monzername 0:d6e2c937698a 327 if (Moy<=0) {
Monzername 0:d6e2c937698a 328 Moy=100;
Monzername 0:d6e2c937698a 329 }
Monzername 0:d6e2c937698a 330 lcd.cls();
Monzername 0:d6e2c937698a 331 wait(0.001);
Monzername 0:d6e2c937698a 332 lcd.printf("Vitesse:");
Monzername 0:d6e2c937698a 333 lcd.locate(0,1);
Monzername 0:d6e2c937698a 334 lcd.printf(" %d ",Moy);
Monzername 0:d6e2c937698a 335 wait(0.15);
Monzername 0:d6e2c937698a 336 }
Monzername 0:d6e2c937698a 337 bout_av2=Bouton2.read();
Monzername 0:d6e2c937698a 338 wait_ms(10);
Monzername 0:d6e2c937698a 339 default :
Monzername 0:d6e2c937698a 340 break;
Monzername 0:d6e2c937698a 341 }
Monzername 0:d6e2c937698a 342 switch(Coef) {
Monzername 0:d6e2c937698a 343 case 0 :
Monzername 0:d6e2c937698a 344 if(fdc.read() < bout_fdc) {
Monzername 0:d6e2c937698a 345 Coef=5;
Monzername 0:d6e2c937698a 346 Regl=1;
Monzername 0:d6e2c937698a 347 wait(0.15);
Monzername 0:d6e2c937698a 348 break;
Monzername 0:d6e2c937698a 349 }
Monzername 0:d6e2c937698a 350 bout_fdc=fdc.read();
Monzername 0:d6e2c937698a 351 wait_ms(10);
Monzername 0:d6e2c937698a 352 if(Bouton1.read() < bout_av1) {
Monzername 0:d6e2c937698a 353 kp++;
Monzername 0:d6e2c937698a 354 if (kp>50) {
Monzername 0:d6e2c937698a 355 kp=0;
Monzername 0:d6e2c937698a 356 }
Monzername 0:d6e2c937698a 357 lcd.cls();
Monzername 0:d6e2c937698a 358 wait(0.001);
Monzername 0:d6e2c937698a 359 lcd.printf("Coeffici");
Monzername 0:d6e2c937698a 360 lcd.locate(0,1);
Monzername 0:d6e2c937698a 361 lcd.printf("ent : %d",kp);
Monzername 0:d6e2c937698a 362
Monzername 0:d6e2c937698a 363 }
Monzername 0:d6e2c937698a 364 bout_av1=Bouton1.read();
Monzername 0:d6e2c937698a 365 wait_ms(10);
Monzername 0:d6e2c937698a 366 if(Bouton2.read() < bout_av2) {
Monzername 0:d6e2c937698a 367 kp--;
Monzername 0:d6e2c937698a 368 if (kp<0) {
Monzername 0:d6e2c937698a 369 kp=50;
Monzername 0:d6e2c937698a 370 }
Monzername 0:d6e2c937698a 371 lcd.cls();
Monzername 0:d6e2c937698a 372 wait(0.001);
Monzername 0:d6e2c937698a 373 lcd.printf("Coeffici");
Monzername 0:d6e2c937698a 374 lcd.locate(0,1);
Monzername 0:d6e2c937698a 375 lcd.printf("ent : %d",Kp);
Monzername 0:d6e2c937698a 376 }
Monzername 0:d6e2c937698a 377 bout_av2=Bouton2.read();
Monzername 0:d6e2c937698a 378 wait_ms(10);
Monzername 0:d6e2c937698a 379 break;
Monzername 0:d6e2c937698a 380 default :
Monzername 0:d6e2c937698a 381 break;
Monzername 0:d6e2c937698a 382 }
Monzername 0:d6e2c937698a 383 }
Monzername 0:d6e2c937698a 384 }
Monzername 0:d6e2c937698a 385
Monzername 0:d6e2c937698a 386 void Confettis()
Monzername 0:d6e2c937698a 387 {
Monzername 0:d6e2c937698a 388 moteur1.period_us(100);
Monzername 0:d6e2c937698a 389 moteur2.period_us(100);
Monzername 0:d6e2c937698a 390 int varJack ,etat=0 ;
Monzername 0:d6e2c937698a 391 float varCapt2, varCapt3;
Monzername 0:d6e2c937698a 392 lcd.cls();
Monzername 0:d6e2c937698a 393 wait(0.001);
Monzername 0:d6e2c937698a 394 lcd.printf("Confetti");
Monzername 0:d6e2c937698a 395 lcd.locate(0,1);
Monzername 0:d6e2c937698a 396 lcd.printf("s V");
Monzername 0:d6e2c937698a 397 while(etat!=3) {
Monzername 0:d6e2c937698a 398 varJack=jack.read();
Monzername 0:d6e2c937698a 399 varCapt2=capteur2.read();
Monzername 0:d6e2c937698a 400 varCapt3=capteur3.read();
Monzername 0:d6e2c937698a 401 switch(etat) {
Monzername 0:d6e2c937698a 402 case 0 :
Monzername 0:d6e2c937698a 403 if ( varJack == 1 ) { /* il n'y a plus le jack */
Monzername 0:d6e2c937698a 404 etat = 1;
Monzername 0:d6e2c937698a 405 }
Monzername 0:d6e2c937698a 406 break;
Monzername 0:d6e2c937698a 407 case 1 :
Monzername 0:d6e2c937698a 408 if ( varCapt2 <= 0.1 && varCapt3 <= 0.1 ) { /* Les capteurs détectent tout les deux LA zone "blanche" */
Monzername 0:d6e2c937698a 409 lcd.cls();
Monzername 0:d6e2c937698a 410 wait(0.001);
Monzername 0:d6e2c937698a 411 lcd.printf("Fini");
Monzername 0:d6e2c937698a 412 wait(0.15);
Monzername 0:d6e2c937698a 413 etat = 2;
Monzername 0:d6e2c937698a 414 }
Monzername 0:d6e2c937698a 415 break;
Monzername 0:d6e2c937698a 416 case 2 :
Monzername 0:d6e2c937698a 417 if ( varJack == 0 ) {
Monzername 0:d6e2c937698a 418 etat = 3;
Monzername 0:d6e2c937698a 419 }
Monzername 0:d6e2c937698a 420 break;
Monzername 0:d6e2c937698a 421 }
Monzername 0:d6e2c937698a 422 switch(etat) {
Monzername 0:d6e2c937698a 423 case 0 :
Monzername 0:d6e2c937698a 424 SensMot1=0;
Monzername 0:d6e2c937698a 425 SensMot2=0;
Monzername 0:d6e2c937698a 426 moteur1.pulsewidth_us(0);
Monzername 0:d6e2c937698a 427 moteur2.pulsewidth_us(0); // moteurs à l'arrêt
Monzername 0:d6e2c937698a 428 printf("Je suis a l'aret( de bus lol)\n\r");
Monzername 0:d6e2c937698a 429 break;
Monzername 0:d6e2c937698a 430 case 1 :
Monzername 0:d6e2c937698a 431 moteur1.pulsewidth_us(35);
Monzername 0:d6e2c937698a 432 moteur2.pulsewidth_us(35); // fonctionnement des moteurs
Monzername 0:d6e2c937698a 433 printf("Je roule\n\r");
Monzername 0:d6e2c937698a 434 break;
Monzername 0:d6e2c937698a 435 case 2 :
Monzername 0:d6e2c937698a 436 moteur1.pulsewidth_us(0);
Monzername 0:d6e2c937698a 437 moteur2.pulsewidth_us(0); // moteurs à l'arrêt
Monzername 0:d6e2c937698a 438 printf("J'attends\n\r");
Monzername 0:d6e2c937698a 439 break;
Monzername 0:d6e2c937698a 440 }
Monzername 0:d6e2c937698a 441 }
Monzername 0:d6e2c937698a 442 }
Monzername 0:d6e2c937698a 443
Monzername 0:d6e2c937698a 444
Monzername 0:d6e2c937698a 445 void Suivi_de_ligne(int Moy, int kp)
Monzername 0:d6e2c937698a 446 {
Monzername 0:d6e2c937698a 447 int etat=0;
Monzername 0:d6e2c937698a 448 int varJack, varFDC;
Monzername 0:d6e2c937698a 449 float Erreur;
Monzername 0:d6e2c937698a 450 //int cpt=0;
Monzername 0:d6e2c937698a 451 lcd.cls();
Monzername 0:d6e2c937698a 452 moteur1.period_us(100);
Monzername 0:d6e2c937698a 453 moteur2.period_us(100);
Monzername 0:d6e2c937698a 454 // moteurs à l'arret
Monzername 0:d6e2c937698a 455 moteur1.pulsewidth_us(0);
Monzername 0:d6e2c937698a 456 moteur2.pulsewidth_us(0);
Monzername 0:d6e2c937698a 457 wait(0.001);
Monzername 0:d6e2c937698a 458 lcd.printf("Suivi de");
Monzername 0:d6e2c937698a 459 lcd.locate(0,1);
Monzername 0:d6e2c937698a 460 lcd.printf(" ligne V");
Monzername 0:d6e2c937698a 461 Timer t;
Monzername 0:d6e2c937698a 462 float dt,derive, Erreur_old;
Monzername 0:d6e2c937698a 463 t.start();
Monzername 0:d6e2c937698a 464 while(etat!=6) {
Monzername 0:d6e2c937698a 465 dt=t.read_us();
Monzername 0:d6e2c937698a 466 t.reset();
Monzername 0:d6e2c937698a 467 varJack=jack.read();
Monzername 0:d6e2c937698a 468 varFDC=fdc.read();
Monzername 0:d6e2c937698a 469 Erreur = capteur2.read()- capteur3.read();
Monzername 0:d6e2c937698a 470 derive=(Erreur-Erreur_old)/t;
Monzername 0:d6e2c937698a 471 switch(etat) {
Monzername 0:d6e2c937698a 472 case 0 : {
Monzername 0:d6e2c937698a 473 if ( varJack == 1 ) {
Monzername 0:d6e2c937698a 474 /* Il n'y a plus le jack */
Monzername 0:d6e2c937698a 475 etat = 1 ;
Monzername 0:d6e2c937698a 476 break;
Monzername 0:d6e2c937698a 477 }
Monzername 0:d6e2c937698a 478 break;
Monzername 0:d6e2c937698a 479 }
Monzername 0:d6e2c937698a 480 case 1 : {
Monzername 0:d6e2c937698a 481 if ( varFDC == 0 ) {
Monzername 0:d6e2c937698a 482 lcd.cls();
Monzername 0:d6e2c937698a 483 wait(0.001);
Monzername 0:d6e2c937698a 484 lcd.printf("Fini");
Monzername 0:d6e2c937698a 485 wait(0.15);
Monzername 0:d6e2c937698a 486 moteur1.pulsewidth_us(0);
Monzername 0:d6e2c937698a 487 moteur2.pulsewidth_us(0);
Monzername 0:d6e2c937698a 488 wait(0.15);
Monzername 0:d6e2c937698a 489 SensMot1=1;
Monzername 0:d6e2c937698a 490 wait(0.15);
Monzername 0:d6e2c937698a 491 moteur1.pulsewidth_us(25);
Monzername 0:d6e2c937698a 492 moteur2.pulsewidth_us(25);
Monzername 0:d6e2c937698a 493 wait(2);
Monzername 0:d6e2c937698a 494 moteur1.pulsewidth_us(0);
Monzername 0:d6e2c937698a 495 moteur2.pulsewidth_us(0);
Monzername 0:d6e2c937698a 496 SensMot1=0;
Monzername 0:d6e2c937698a 497 SensMot2=0;
Monzername 0:d6e2c937698a 498 etat = 2 ;
Monzername 0:d6e2c937698a 499 break;
Monzername 0:d6e2c937698a 500 }
Monzername 0:d6e2c937698a 501 if ( capteur1.read() <= 0.5 && capteur2.read() <= 0.5 && capteur3.read() <= 0.5 && capteur4.read() <0.5) {
Monzername 0:d6e2c937698a 502 break;
Monzername 0:d6e2c937698a 503 }
Monzername 0:d6e2c937698a 504 if ( capteur1.read() <= 0.5 && (capteur2.read() >= 0.5 || capteur3.read() >= 0.5)) {
Monzername 0:d6e2c937698a 505 etat = 3;
Monzername 0:d6e2c937698a 506 break;
Monzername 0:d6e2c937698a 507 }
Monzername 0:d6e2c937698a 508 if ( capteur4.read() <= 0.5 && (capteur2.read() >= 0.5 || capteur3.read() >= 0.5)) {
Monzername 0:d6e2c937698a 509 etat = 4;
Monzername 0:d6e2c937698a 510 break;
Monzername 0:d6e2c937698a 511 }
Monzername 0:d6e2c937698a 512 /*if ( capteur1.read() <= 0.5 && capteur2.read() <= 0.5 && capteur4.read() >= 0.5) {
Monzername 0:d6e2c937698a 513 cpt++;
Monzername 0:d6e2c937698a 514 if ( cpt == 2 ) {
Monzername 0:d6e2c937698a 515 etat = 5;
Monzername 0:d6e2c937698a 516 break;
Monzername 0:d6e2c937698a 517 }
Monzername 0:d6e2c937698a 518 wait(0.05);
Monzername 0:d6e2c937698a 519 break;
Monzername 0:d6e2c937698a 520 }*/
Monzername 0:d6e2c937698a 521 break;
Monzername 0:d6e2c937698a 522 }
Monzername 0:d6e2c937698a 523 case 2 : {
Monzername 0:d6e2c937698a 524 if ( varJack == 0 ) {
Monzername 0:d6e2c937698a 525 etat = 6 ;
Monzername 0:d6e2c937698a 526 break;
Monzername 0:d6e2c937698a 527 }
Monzername 0:d6e2c937698a 528 break;
Monzername 0:d6e2c937698a 529 }
Monzername 0:d6e2c937698a 530 case 3 : {
Monzername 0:d6e2c937698a 531 if ( capteur3.read()<=0.5 ) {
Monzername 0:d6e2c937698a 532 etat = 1;
Monzername 0:d6e2c937698a 533 break;
Monzername 0:d6e2c937698a 534 }
Monzername 0:d6e2c937698a 535 if ( varFDC == 0 ) {
Monzername 0:d6e2c937698a 536 etat = 2 ;
Monzername 0:d6e2c937698a 537 break;
Monzername 0:d6e2c937698a 538 }
Monzername 0:d6e2c937698a 539 break;
Monzername 0:d6e2c937698a 540 }
Monzername 0:d6e2c937698a 541 case 4 : {
Monzername 0:d6e2c937698a 542 if ( capteur2.read()<=0.5 ) {
Monzername 0:d6e2c937698a 543 etat = 1;
Monzername 0:d6e2c937698a 544 break;
Monzername 0:d6e2c937698a 545 }
Monzername 0:d6e2c937698a 546 if ( varFDC == 0 ) {
Monzername 0:d6e2c937698a 547 etat = 2 ;
Monzername 0:d6e2c937698a 548 break;
Monzername 0:d6e2c937698a 549 }
Monzername 0:d6e2c937698a 550 }
Monzername 0:d6e2c937698a 551 case 5 :
Monzername 0:d6e2c937698a 552 etat = 1;
Monzername 0:d6e2c937698a 553 break;
Monzername 0:d6e2c937698a 554
Monzername 0:d6e2c937698a 555 }
Monzername 0:d6e2c937698a 556
Monzername 0:d6e2c937698a 557 switch(etat) {
Monzername 0:d6e2c937698a 558 case 0 :
Monzername 0:d6e2c937698a 559 moteur1.pulsewidth_us(0);
Monzername 0:d6e2c937698a 560 moteur2.pulsewidth_us(0); // moteurs à l'arrêt
Monzername 0:d6e2c937698a 561 break;
Monzername 0:d6e2c937698a 562 case 1 :
Monzername 0:d6e2c937698a 563 vitG (Moy,kp,Erreur,dt,t,derive);
Monzername 0:d6e2c937698a 564 vitD (Moy,kp,Erreur,dt,t,derive);
Monzername 0:d6e2c937698a 565 break;
Monzername 0:d6e2c937698a 566 case 2 :
Monzername 0:d6e2c937698a 567 moteur1.pulsewidth_us(0);
Monzername 0:d6e2c937698a 568 moteur2.pulsewidth_us(0); // moteurs à l'arrêt
Monzername 0:d6e2c937698a 569 break;
Monzername 0:d6e2c937698a 570 case 3 :
Monzername 0:d6e2c937698a 571 moteur1.pulsewidth_us(10);
Monzername 0:d6e2c937698a 572 moteur2.pulsewidth_us(25);
Monzername 0:d6e2c937698a 573 break;
Monzername 0:d6e2c937698a 574 case 4 :
Monzername 0:d6e2c937698a 575 moteur1.pulsewidth_us(25);
Monzername 0:d6e2c937698a 576 moteur2.pulsewidth_us(10);
Monzername 0:d6e2c937698a 577 break;
Monzername 0:d6e2c937698a 578 /*case 5 :
Monzername 0:d6e2c937698a 579 moteur1.pulsewidth_us(0);
Monzername 0:d6e2c937698a 580 moteur2.pulsewidth_us(0);
Monzername 0:d6e2c937698a 581 wait(0.001);
Monzername 0:d6e2c937698a 582 SensMot1=1;
Monzername 0:d6e2c937698a 583 SensMot2=0;
Monzername 0:d6e2c937698a 584 moteur1.pulsewidth_us(25);
Monzername 0:d6e2c937698a 585 moteur2.pulsewidth_us(25);
Monzername 0:d6e2c937698a 586 wait(35*0.067);
Monzername 0:d6e2c937698a 587 moteur1.pulsewidth_us(0);
Monzername 0:d6e2c937698a 588 moteur2.pulsewidth_us(0);
Monzername 0:d6e2c937698a 589 SensMot1=0;
Monzername 0:d6e2c937698a 590 SensMot2=0;
Monzername 0:d6e2c937698a 591 break;*/
Monzername 0:d6e2c937698a 592 }
Monzername 0:d6e2c937698a 593 Erreur_old = Erreur;
Monzername 0:d6e2c937698a 594
Monzername 0:d6e2c937698a 595 }
Monzername 0:d6e2c937698a 596 }
Monzername 0:d6e2c937698a 597
Monzername 0:d6e2c937698a 598
Monzername 0:d6e2c937698a 599 void vitG (int Moy, int kp, float erreur, float d, float t, float d_erreur)
Monzername 0:d6e2c937698a 600 {
Monzername 0:d6e2c937698a 601 int vitG;
Monzername 0:d6e2c937698a 602 vitG = Moy + (erreur*kp);
Monzername 0:d6e2c937698a 603 if ( vitG > 100 ) {
Monzername 0:d6e2c937698a 604 vitG = 100;
Monzername 0:d6e2c937698a 605 }
Monzername 0:d6e2c937698a 606 if ( vitG < 0 ) {
Monzername 0:d6e2c937698a 607 vitG = 0;
Monzername 0:d6e2c937698a 608 }
Monzername 0:d6e2c937698a 609 moteur1.pulsewidth_us((int)vitG);
Monzername 0:d6e2c937698a 610 }
Monzername 0:d6e2c937698a 611
Monzername 0:d6e2c937698a 612 void vitD (int Moy, int kp, float erreur, float d, float t, float d_erreur)
Monzername 0:d6e2c937698a 613 {
Monzername 0:d6e2c937698a 614 int vitD;
Monzername 0:d6e2c937698a 615 vitD = Moy - (erreur*kp);
Monzername 0:d6e2c937698a 616 if ( vitD > 100 ) {
Monzername 0:d6e2c937698a 617 vitD = 100;
Monzername 0:d6e2c937698a 618 }
Monzername 0:d6e2c937698a 619 if ( vitD < 0 ) {
Monzername 0:d6e2c937698a 620 vitD = 0;
Monzername 0:d6e2c937698a 621 }
Monzername 0:d6e2c937698a 622 moteur2.pulsewidth_us((int)vitD);
Monzername 0:d6e2c937698a 623 }
Monzername 0:d6e2c937698a 624
Monzername 0:d6e2c937698a 625
Monzername 0:d6e2c937698a 626
Monzername 0:d6e2c937698a 627
Monzername 0:d6e2c937698a 628 void Carre()
Monzername 0:d6e2c937698a 629 {
Monzername 0:d6e2c937698a 630 int bout_av1=0;
Monzername 0:d6e2c937698a 631
Monzername 0:d6e2c937698a 632 int bout_av2=0;
Monzername 0:d6e2c937698a 633 {
Monzername 0:d6e2c937698a 634 moteur1.period_us(100); /* moteur gauche */
Monzername 0:d6e2c937698a 635 moteur2.period_us(100); /* moteur droit */
Monzername 0:d6e2c937698a 636 int varJack, etat=0,iTaille, i;
Monzername 0:d6e2c937698a 637 lcd.cls();
Monzername 0:d6e2c937698a 638 wait(0.001);
Monzername 0:d6e2c937698a 639 lcd.printf("Taille :");
Monzername 0:d6e2c937698a 640 iTaille=60;
Monzername 0:d6e2c937698a 641 lcd.locate(0,1);
Monzername 0:d6e2c937698a 642 lcd.printf(" %d ",iTaille);
Monzername 0:d6e2c937698a 643 while(etat!=3) {
Monzername 0:d6e2c937698a 644 varJack=jack.read();
Monzername 0:d6e2c937698a 645 switch(etat) {
Monzername 0:d6e2c937698a 646 case 0 :
Monzername 0:d6e2c937698a 647 if(Bouton1.read() < bout_av1) {
Monzername 0:d6e2c937698a 648 iTaille++;
Monzername 0:d6e2c937698a 649 if (iTaille>200) {
Monzername 0:d6e2c937698a 650 iTaille=60;
Monzername 0:d6e2c937698a 651 }
Monzername 0:d6e2c937698a 652
Monzername 0:d6e2c937698a 653 lcd.cls();
Monzername 0:d6e2c937698a 654 wait(0.001);
Monzername 0:d6e2c937698a 655 lcd.printf("Taille :");
Monzername 0:d6e2c937698a 656 lcd.locate(0,1);
Monzername 0:d6e2c937698a 657 lcd.printf(" %d ",iTaille);
Monzername 0:d6e2c937698a 658
Monzername 0:d6e2c937698a 659 }
Monzername 0:d6e2c937698a 660 bout_av1=Bouton1.read();
Monzername 0:d6e2c937698a 661 wait_ms(10);
Monzername 0:d6e2c937698a 662 if(Bouton2.read() < bout_av2) {
Monzername 0:d6e2c937698a 663 iTaille--;
Monzername 0:d6e2c937698a 664 if (iTaille<60) {
Monzername 0:d6e2c937698a 665 iTaille=200;
Monzername 0:d6e2c937698a 666 }
Monzername 0:d6e2c937698a 667 lcd.cls();
Monzername 0:d6e2c937698a 668 wait(0.001);
Monzername 0:d6e2c937698a 669 lcd.printf("Taille :");
Monzername 0:d6e2c937698a 670 lcd.locate(0,1);
Monzername 0:d6e2c937698a 671 lcd.printf(" %d ",iTaille);
Monzername 0:d6e2c937698a 672 }
Monzername 0:d6e2c937698a 673 bout_av2=Bouton2.read();
Monzername 0:d6e2c937698a 674 wait_ms(10);
Monzername 0:d6e2c937698a 675 printf(" %d ",iTaille);
Monzername 0:d6e2c937698a 676 if ( varJack == 1) { /* Il n'y a plus le jack */
Monzername 0:d6e2c937698a 677 etat = 1;
Monzername 0:d6e2c937698a 678 break;
Monzername 0:d6e2c937698a 679 }
Monzername 0:d6e2c937698a 680 break;
Monzername 0:d6e2c937698a 681 case 1 :
Monzername 0:d6e2c937698a 682 if ( i == 4 ) {
Monzername 0:d6e2c937698a 683 lcd.cls();
Monzername 0:d6e2c937698a 684 wait(0.001);
Monzername 0:d6e2c937698a 685 lcd.printf("Fini");
Monzername 0:d6e2c937698a 686 wait(0.15);
Monzername 0:d6e2c937698a 687 etat = 2;
Monzername 0:d6e2c937698a 688 break;
Monzername 0:d6e2c937698a 689 }
Monzername 0:d6e2c937698a 690 case 2 :
Monzername 0:d6e2c937698a 691 if ( varJack == 0 ) {
Monzername 0:d6e2c937698a 692 etat = 3;
Monzername 0:d6e2c937698a 693 break;
Monzername 0:d6e2c937698a 694 }
Monzername 0:d6e2c937698a 695 }
Monzername 0:d6e2c937698a 696 switch(etat) {
Monzername 0:d6e2c937698a 697 case 0 :
Monzername 0:d6e2c937698a 698 moteur1.pulsewidth_us(0);
Monzername 0:d6e2c937698a 699 moteur2.pulsewidth_us(0); // moteurs à l'arrêt
Monzername 0:d6e2c937698a 700 break;
Monzername 0:d6e2c937698a 701 case 1 :
Monzername 0:d6e2c937698a 702 for (i=0; i<4; i++) {
Monzername 0:d6e2c937698a 703 SensMot1=0;
Monzername 0:d6e2c937698a 704 SensMot2=0;
Monzername 0:d6e2c937698a 705 moteur1.pulsewidth_us(26);
Monzername 0:d6e2c937698a 706 moteur2.pulsewidth_us(25); // fonctionnement des moteurs
Monzername 0:d6e2c937698a 707 wait(iTaille*0.018); // la taille du carré x le nombre de secondes par centimètre à 9V (75%)
Monzername 0:d6e2c937698a 708 moteur1.pulsewidth_us(0);
Monzername 0:d6e2c937698a 709 moteur2.pulsewidth_us(0);
Monzername 0:d6e2c937698a 710 wait(0.5);
Monzername 0:d6e2c937698a 711 SensMot1=0;
Monzername 0:d6e2c937698a 712 SensMot2=1;
Monzername 0:d6e2c937698a 713 moteur1.pulsewidth_us(23);
Monzername 0:d6e2c937698a 714 moteur2.pulsewidth_us(25);
Monzername 0:d6e2c937698a 715 wait((((37/2)*0.034)/2)+0.08); // besoin de la distance entre les deux roues
Monzername 0:d6e2c937698a 716 moteur1.pulsewidth_us(0);
Monzername 0:d6e2c937698a 717 moteur2.pulsewidth_us(0);
Monzername 0:d6e2c937698a 718 wait(0.5);
Monzername 0:d6e2c937698a 719 }
Monzername 0:d6e2c937698a 720 break;
Monzername 0:d6e2c937698a 721 case 2 :
Monzername 0:d6e2c937698a 722 SensMot1=0;
Monzername 0:d6e2c937698a 723 SensMot2=0;
Monzername 0:d6e2c937698a 724 moteur1.pulsewidth_us(0);
Monzername 0:d6e2c937698a 725 moteur2.pulsewidth_us(0); // moteurs à l'arrêt
Monzername 0:d6e2c937698a 726 break;
Monzername 0:d6e2c937698a 727 }
Monzername 0:d6e2c937698a 728 }
Monzername 0:d6e2c937698a 729 }
Monzername 0:d6e2c937698a 730 }