Strategie_13h30
Fork of CRAC-Strat_2017_homologation_gros_rob by
Embed:
(wiki syntax)
Show/hide line numbers
Strategie_big.cpp
00001 00002 #include "StrategieManager.h" 00003 #ifdef ROBOT_BIG 00004 #include "Config_big.h" 00005 00006 unsigned char isStopEnable = 1;//Permet de savoir si il faut autoriser le stop via les balises 00007 unsigned short telemetreDistance; 00008 /****************************************************************************************/ 00009 /* FUNCTION NAME: doFunnyAction */ 00010 /* DESCRIPTION : Permet de faire la funny action en fin de partie */ 00011 /****************************************************************************************/ 00012 void doFunnyAction(void) { 00013 //envoie de la funny action 00014 // 0x007, 01, 01 00015 CANMessage msgTx=CANMessage(); 00016 msgTx.id=GLOBAL_FUNNY_ACTION; 00017 msgTx.format=CANStandard; 00018 msgTx.type=CANData; 00019 msgTx.len=2; 00020 msgTx.data[0]=0x01; 00021 msgTx.data[1]=0x01; 00022 can1.write(msgTx); 00023 } 00024 00025 /****************************************************************************************/ 00026 /* FUNCTION NAME: doAction */ 00027 /* DESCRIPTION : Effectuer une action specifique */ 00028 /****************************************************************************************/ 00029 unsigned char doAction(unsigned char id, unsigned short speed, short angle) { 00030 CANMessage msgTx=CANMessage(); 00031 int localData = 0, localData2; 00032 switch(id) { 00033 case 100: // position initiale 00034 msgTx.id=SERVO_AX12_ACTION; 00035 msgTx.format=CANStandard; 00036 msgTx.type=CANData; 00037 msgTx.len=2; 00038 00039 if (InversStrat){ // si on est inversé, on echange les bras 00040 if (speed == BRAS_AVANT) speed = BRAS_ARRIERE; 00041 else speed = BRAS_AVANT; 00042 } 00043 00044 msgTx.data[0]=1; 00045 msgTx.data[1]=speed; 00046 can1.write(msgTx); 00047 break; 00048 00049 case 101: /// preparation prise 00050 msgTx.id=SERVO_AX12_ACTION; 00051 msgTx.format=CANStandard; 00052 msgTx.type=CANData; 00053 msgTx.len=2; 00054 00055 if (InversStrat){ // si on est inversé, on echange les bras 00056 if (speed == BRAS_AVANT) speed = BRAS_ARRIERE; 00057 else speed = BRAS_AVANT; 00058 } 00059 00060 msgTx.data[0]=2; 00061 msgTx.data[1]=speed; 00062 can1.write(msgTx); 00063 break; 00064 00065 case 102: // stockage haut 00066 msgTx.id=SERVO_AX12_ACTION; 00067 msgTx.format=CANStandard; 00068 msgTx.type=CANData; 00069 msgTx.len=2; 00070 00071 if (InversStrat){ // si on est inversé, on echange les bras 00072 if (speed == BRAS_AVANT) speed = BRAS_ARRIERE; 00073 else speed = BRAS_AVANT; 00074 } 00075 00076 msgTx.data[0]=3; 00077 msgTx.data[1]=speed; 00078 can1.write(msgTx); 00079 break; 00080 00081 case 103: // stockage bas 00082 msgTx.id=SERVO_AX12_ACTION; 00083 msgTx.format=CANStandard; 00084 msgTx.type=CANData; 00085 msgTx.len=2; 00086 00087 if (InversStrat){ // si on est inversé, on echange les bras 00088 if (speed == BRAS_AVANT) speed = BRAS_ARRIERE; 00089 else speed = BRAS_AVANT; 00090 } 00091 00092 msgTx.data[0]=4; 00093 msgTx.data[1]=speed; 00094 can1.write(msgTx); 00095 break; 00096 00097 case 104: // pousser module 00098 msgTx.id=SERVO_AX12_ACTION; 00099 msgTx.format=CANStandard; 00100 msgTx.type=CANData; 00101 msgTx.len=2; 00102 00103 if (InversStrat){ // si on est inversé, on echange les bras 00104 if (speed == BRAS_AVANT) speed = BRAS_ARRIERE; 00105 else speed = BRAS_AVANT; 00106 } 00107 00108 msgTx.data[0]=7; 00109 msgTx.data[1]=speed; 00110 can1.write(msgTx); 00111 break; 00112 00113 case 105: // preparation prise 00114 msgTx.id=SERVO_AX12_ACTION; 00115 msgTx.format=CANStandard; 00116 msgTx.type=CANData; 00117 msgTx.len=2; 00118 00119 if (InversStrat){ // si on est inversé, on echange les bras 00120 if (speed == BRAS_AVANT) speed = BRAS_ARRIERE; 00121 else speed = BRAS_AVANT; 00122 } 00123 00124 msgTx.data[0]=6; 00125 msgTx.data[1]=speed; 00126 can1.write(msgTx); 00127 break; 00128 00129 case 106: //deposer module 00130 msgTx.id=SERVO_AX12_ACTION; 00131 msgTx.format=CANStandard; 00132 msgTx.type=CANData; 00133 msgTx.len=2; 00134 00135 if (InversStrat){ // si on est inversé, on echange les bras 00136 if (speed == BRAS_AVANT) speed = BRAS_ARRIERE; 00137 else speed = BRAS_AVANT; 00138 } 00139 00140 msgTx.data[0]=5; 00141 msgTx.data[1]=speed; 00142 can1.write(msgTx); 00143 break; 00144 00145 case 110: // repos bras avant 00146 msgTx.id=SERVO_AX12_ACTION; 00147 msgTx.format=CANStandard; 00148 msgTx.type=CANData; 00149 msgTx.len=2; 00150 speed = BRAS_AVANT; 00151 if (InversStrat){ // si on est inversé, on echange les bras 00152 if (speed == BRAS_AVANT) speed = BRAS_ARRIERE; 00153 else speed = BRAS_AVANT; 00154 } 00155 if (speed == BRAS_AVANT)localData = 0x10; 00156 else localData = 0x24; 00157 00158 msgTx.data[0]=localData; 00159 msgTx.data[1]=speed; 00160 can1.write(msgTx); 00161 break; 00162 00163 case 111: // init bras module 00164 msgTx.id=SERVO_AX12_ACTION; 00165 msgTx.format=CANStandard; 00166 msgTx.type=CANData; 00167 msgTx.len=2; 00168 speed = BRAS_AVANT; 00169 if (InversStrat){ // si on est inversé, on echange les bras 00170 if (speed == BRAS_AVANT) speed = BRAS_ARRIERE; 00171 else speed = BRAS_AVANT; 00172 } 00173 if (speed == BRAS_AVANT)localData = 0x0A; 00174 else localData = 0x1E; 00175 00176 msgTx.data[0]=localData; 00177 msgTx.data[1]=speed; 00178 can1.write(msgTx); 00179 break; 00180 00181 case 112: // bouger module avant la gouttière 00182 msgTx.id=SERVO_AX12_ACTION; 00183 msgTx.format=CANStandard; 00184 msgTx.type=CANData; 00185 msgTx.len=2; 00186 speed = BRAS_AVANT; 00187 if (InversStrat){ // si on est inversé, on echange les bras 00188 if (speed == BRAS_AVANT) speed = BRAS_ARRIERE; 00189 else speed = BRAS_AVANT; 00190 } 00191 if (speed == BRAS_AVANT)localData = 0x0B; 00192 else localData = 0x1F; 00193 00194 msgTx.data[0]=localData; 00195 msgTx.data[1]=speed; 00196 can1.write(msgTx); 00197 break; 00198 00199 case 113: // deposer module 00200 msgTx.id=SERVO_AX12_ACTION; 00201 msgTx.format=CANStandard; 00202 msgTx.type=CANData; 00203 msgTx.len=2; 00204 localData2 = BRAS_AVANT; 00205 00206 if (InversStrat){ // si on est inversé, on echange les bras 00207 if (localData2 == BRAS_AVANT) localData2 = BRAS_ARRIERE; 00208 else localData2 = BRAS_AVANT; 00209 } 00210 00211 if(localData2 == BRAS_AVANT){ 00212 if(speed == INV){ 00213 localData = 0x0E; 00214 }else{ 00215 localData = 0x0C; 00216 } 00217 }else{ 00218 if(speed == INV){ 00219 localData = 0x22; 00220 }else{ 00221 localData = 0x20; 00222 } 00223 } 00224 00225 msgTx.data[0]=localData; 00226 msgTx.data[1]=localData2; 00227 can1.write(msgTx); 00228 break; 00229 00230 case 114: // repositionner bras avant 00231 msgTx.id=SERVO_AX12_ACTION; 00232 msgTx.format=CANStandard; 00233 msgTx.type=CANData; 00234 msgTx.len=2; 00235 speed = BRAS_AVANT; 00236 if (InversStrat){ // si on est inversé, on echange les bras 00237 if (speed == BRAS_AVANT) speed = BRAS_ARRIERE; 00238 else speed = BRAS_AVANT; 00239 } 00240 if (speed == BRAS_AVANT)localData = 0x0F; 00241 else localData = 0x23; 00242 00243 msgTx.data[0]=localData; 00244 msgTx.data[1]=speed; 00245 can1.write(msgTx); 00246 break; 00247 00248 case 115: // pompe avant ON 00249 msgTx.id=0x400; 00250 msgTx.format=CANStandard; 00251 msgTx.type=CANData; 00252 msgTx.len=2; 00253 localData = BRAS_AVANT; 00254 if (InversStrat){ // si on est inversé, on echange les bras 00255 if (localData == BRAS_AVANT) localData = BRAS_ARRIERE; 00256 else localData = BRAS_AVANT; 00257 } 00258 00259 msgTx.data[0]=1; 00260 msgTx.data[1]=localData; 00261 00262 can1.write(msgTx); 00263 wait_ms(1); 00264 can1.write(msgTx); 00265 waitingAckID= 0; 00266 waitingAckFrom = 0; 00267 break; 00268 00269 case 116: // pompe avant OFF 00270 msgTx.id=0x400; 00271 msgTx.format=CANStandard; 00272 msgTx.type=CANData; 00273 msgTx.len=2; 00274 localData = BRAS_AVANT; 00275 if (InversStrat){ // si on est inversé, on echange les bras 00276 if (localData == BRAS_AVANT) localData = BRAS_ARRIERE; 00277 else localData = BRAS_AVANT; 00278 } 00279 00280 msgTx.data[0]=0; 00281 msgTx.data[1]=localData; 00282 00283 can1.write(msgTx); 00284 wait_ms(1); 00285 can1.write(msgTx); 00286 waitingAckID= 0; 00287 waitingAckFrom = 0; 00288 break; 00289 00290 case 120: // repos bras arrière 00291 msgTx.id=SERVO_AX12_ACTION; 00292 msgTx.format=CANStandard; 00293 msgTx.type=CANData; 00294 msgTx.len=2; 00295 speed = BRAS_ARRIERE; 00296 if (InversStrat){ // si on est inversé, on echange les bras 00297 if (speed == BRAS_AVANT) speed = BRAS_ARRIERE; 00298 else speed = BRAS_AVANT; 00299 } 00300 if (speed == BRAS_AVANT)localData = 0x10; 00301 else localData = 0x24; 00302 00303 msgTx.data[0]=localData; 00304 msgTx.data[1]=speed; 00305 can1.write(msgTx); 00306 break; 00307 00308 case 121: // position d'init avant de prendre un module bras arriere 00309 msgTx.id=SERVO_AX12_ACTION; 00310 msgTx.format=CANStandard; 00311 msgTx.type=CANData; 00312 msgTx.len=2; 00313 speed = BRAS_ARRIERE; 00314 if (InversStrat){ // si on est inversé, on echange les bras 00315 if (speed == BRAS_AVANT) speed = BRAS_ARRIERE; 00316 else speed = BRAS_AVANT; 00317 } 00318 if (speed == BRAS_AVANT)localData = 0xA0; 00319 else localData = 0x1E; 00320 00321 msgTx.data[0]=localData; 00322 msgTx.data[1]=speed; 00323 can1.write(msgTx); 00324 break; 00325 00326 case 122: // bouger le bras arriere avant la gouttiere 00327 msgTx.id=SERVO_AX12_ACTION; 00328 msgTx.format=CANStandard; 00329 msgTx.type=CANData; 00330 msgTx.len=2; 00331 speed = BRAS_ARRIERE; 00332 if (InversStrat){ // si on est inversé, on echange les bras 00333 if (speed == BRAS_AVANT) speed = BRAS_ARRIERE; 00334 else speed = BRAS_AVANT; 00335 } 00336 if (speed == BRAS_AVANT)localData = 0x0B; 00337 else localData = 0x1F; 00338 00339 msgTx.data[0]=localData; 00340 msgTx.data[1]=speed; 00341 can1.write(msgTx); 00342 break; 00343 00344 case 123: // deposer module 00345 msgTx.id=SERVO_AX12_ACTION; 00346 msgTx.format=CANStandard; 00347 msgTx.type=CANData; 00348 msgTx.len=2; 00349 localData2 = BRAS_ARRIERE; 00350 00351 if (InversStrat){ // si on est inversé, on echange les bras 00352 if (localData2 == BRAS_AVANT) localData2 = BRAS_ARRIERE; 00353 else localData2 = BRAS_AVANT; 00354 } 00355 00356 if(localData2 == BRAS_AVANT){ 00357 if(speed == INV){ 00358 localData = 0x0E; 00359 }else{ 00360 localData = 0x0C; 00361 } 00362 }else{ 00363 if(speed == INV){ 00364 localData = 0x22; 00365 }else{ 00366 localData = 0x20; 00367 } 00368 } 00369 00370 msgTx.data[0]=localData; 00371 msgTx.data[1]=localData2; 00372 can1.write(msgTx); 00373 break; 00374 00375 case 124: // remettre le bras arriere en posiion initiale 00376 msgTx.id=SERVO_AX12_ACTION; 00377 msgTx.format=CANStandard; 00378 msgTx.type=CANData; 00379 msgTx.len=2; 00380 speed = BRAS_ARRIERE; 00381 if (InversStrat){ // si on est inversé, on echange les bras 00382 if (speed == BRAS_AVANT) speed = BRAS_ARRIERE; 00383 else speed = BRAS_AVANT; 00384 } 00385 if (speed == BRAS_AVANT)localData = 0x0F; 00386 else localData = 0x23; 00387 00388 msgTx.data[0]=localData; 00389 msgTx.data[1]=speed; 00390 can1.write(msgTx); 00391 break; 00392 00393 case 125: // pompe pwm arriere ON 00394 msgTx.id=0x400; 00395 msgTx.format=CANStandard; 00396 msgTx.type=CANData; 00397 msgTx.len=2; 00398 localData = BRAS_ARRIERE; 00399 if (InversStrat){ // si on est inversé, on echange les bras 00400 if (localData == BRAS_AVANT) localData = BRAS_ARRIERE; 00401 else localData = BRAS_AVANT; 00402 } 00403 00404 msgTx.data[0]=1; 00405 msgTx.data[1]=localData; 00406 00407 can1.write(msgTx); 00408 wait_ms(1); 00409 can1.write(msgTx); 00410 00411 waitingAckID= 0; 00412 waitingAckFrom = 0; 00413 break; 00414 00415 case 126: // pompe arriere pwm OFF 00416 msgTx.id=0x400; 00417 msgTx.format=CANStandard; 00418 msgTx.type=CANData; 00419 msgTx.len=2; 00420 localData = BRAS_ARRIERE; 00421 if (InversStrat){ // si on est inversé, on echange les bras 00422 if (localData == BRAS_AVANT) localData = BRAS_ARRIERE; 00423 else localData = BRAS_AVANT; 00424 } 00425 00426 msgTx.data[0]=0; 00427 msgTx.data[1]=localData; 00428 00429 can1.write(msgTx); 00430 wait_ms(1); 00431 can1.write(msgTx); 00432 waitingAckID= 0; 00433 waitingAckFrom = 0; 00434 break; 00435 00436 case 130: // baiser bras turbine 00437 msgTx.id=SERVO_AX12_ACTION; 00438 msgTx.format=CANStandard; 00439 msgTx.type=CANData; 00440 msgTx.len=2; 00441 msgTx.data[0]=0x14; 00442 msgTx.data[1]=BRAS_AVANT; 00443 can1.write(msgTx); 00444 break; 00445 00446 case 131: // lever bras turbine 00447 msgTx.id=SERVO_AX12_ACTION; 00448 msgTx.format=CANStandard; 00449 msgTx.type=CANData; 00450 msgTx.len=2; 00451 msgTx.data[0]=0x15; 00452 msgTx.data[1]=BRAS_AVANT; 00453 can1.write(msgTx); 00454 break; 00455 00456 case 132: // allumer turbine 00457 msgTx.id=0x403; 00458 msgTx.format=CANStandard; 00459 msgTx.type=CANData; 00460 msgTx.len=2; 00461 msgTx.data[0]=1; 00462 msgTx.data[1]=BRAS_AVANT; 00463 can1.write(msgTx); 00464 break; 00465 00466 case 133: // stop turbine 00467 msgTx.id=0x403; 00468 msgTx.format=CANStandard; 00469 msgTx.type=CANData; 00470 msgTx.len=2; 00471 msgTx.data[0]=0; 00472 msgTx.data[1]=BRAS_AVANT; 00473 can1.write(msgTx); 00474 break; 00475 00476 case 140:// lanceur ON 00477 msgTx.id=0x402; 00478 msgTx.format=CANStandard; 00479 msgTx.type=CANData; 00480 msgTx.len=2; 00481 00482 msgTx.data[0]=1; 00483 msgTx.data[1]=0x02; 00484 can1.write(msgTx); 00485 break; 00486 00487 case 141: // lanceur OFF 00488 msgTx.id=0x402; 00489 msgTx.format=CANStandard; 00490 msgTx.type=CANData; 00491 msgTx.len=2; 00492 00493 msgTx.data[0]=0; 00494 msgTx.data[1]=0x02; 00495 can1.write(msgTx); 00496 break; 00497 00498 case 150: 00499 msgTx.id=0x404; 00500 msgTx.format=CANStandard; 00501 msgTx.type=CANData; 00502 msgTx.len=2; 00503 00504 msgTx.data[0]=1; 00505 msgTx.data[1]=BRAS_AVANT; 00506 00507 can1.write(msgTx); 00508 break; 00509 00510 case 151: 00511 msgTx.id=0x404; 00512 msgTx.format=CANStandard; 00513 msgTx.type=CANData; 00514 msgTx.len=2; 00515 00516 msgTx.data[0]=0; 00517 msgTx.data[1]=BRAS_AVANT; 00518 00519 can1.write(msgTx); 00520 break; 00521 00522 case 10://Désactiver le stop 00523 isStopEnable = 0; 00524 break; 00525 case 11://Activer le stop 00526 isStopEnable = 1; 00527 break; 00528 case 20://Désactiver l'asservissement 00529 setAsservissementEtat(0); 00530 break; 00531 case 21://Activer l'asservissement 00532 setAsservissementEtat(1); 00533 break; 00534 00535 case 22://Changer la vitesse du robot 00536 SendSpeed(speed,(unsigned short)angle); 00537 break; 00538 00539 case 30://Action tempo 00540 wait_ms(speed); 00541 break; 00542 00543 /*case 40: // demande au telemetre la position d'un objet 00544 //SendRawId(TELEMETRE_RECHERCHE_OBJET); 00545 00546 modeTelemetre = 1; 00547 00548 //angle = angle /10; 00549 00550 msgTx.id=TELEMETRE_OBJET; 00551 msgTx.format=CANStandard; 00552 msgTx.type=CANData; 00553 msgTx.len=1; 00554 // indice du module sur le terrain 00555 msgTx.data[0] = (unsigned char)speed; 00556 00557 00558 // x sur 2 octets 00559 msgTx.data[0]=(unsigned char)speed; 00560 msgTx.data[1]=(unsigned char)(speed>>8); 00561 // y sur 2 octets 00562 msgTx.data[2]=(unsigned char)angle; 00563 msgTx.data[3]=(unsigned char)(angle>>8); 00564 // theta signé sur 2 octets 00565 //msgTx.data[4]=(unsigned char)theta; 00566 //msgTx.data[5]=(unsigned char)(theta>>8); 00567 msgTx.data[4]=0; 00568 msgTx.data[5]=0; 00569 00570 can1.write(msgTx); 00571 00572 break;*/ 00573 00574 /* case 130://Lancer mouvement de sortie de la zone de départ 00575 msgTx.id=ACTION_BIG_DEMARRAGE; 00576 msgTx.format=CANStandard; 00577 msgTx.type=CANData; 00578 msgTx.len=1; 00579 msgTx.data[0] = (unsigned char)speed; 00580 can1.write(msgTx); 00581 break;*/ 00582 00583 default: 00584 return 0;//L'action n'existe pas, il faut utiliser le CAN 00585 00586 } 00587 return 1;//L'action est spécifique. 00588 00589 } 00590 00591 /****************************************************************************************/ 00592 /* FUNCTION NAME: initRobot */ 00593 /* DESCRIPTION : initialiser le robot */ 00594 /****************************************************************************************/ 00595 void initRobot(void) 00596 { 00597 //Enregistrement de tous les AX12 présent sur la carte 00598 /*AX12_register(5, AX12_SERIAL2); 00599 AX12_register(18, AX12_SERIAL2); 00600 AX12_register(13, AX12_SERIAL2); 00601 AX12_register(1, AX12_SERIAL1); 00602 AX12_register(11, AX12_SERIAL1); 00603 AX12_register(8, AX12_SERIAL1); 00604 AX12_register(7, AX12_SERIAL2);*/ 00605 00606 //AX12_setGoal(AX12_ID_FUNNY_ACTION, AX12_ANGLE_FUNNY_ACTION_CLOSE,AX12_SPEED_FUNNY_ACTION); 00607 //AX12_processChange(); 00608 //runRobotTest(); 00609 00610 } 00611 00612 /****************************************************************************************/ 00613 /* FUNCTION NAME: initRobotActionneur */ 00614 /* DESCRIPTION : Initialiser la position des actionneurs du robot */ 00615 /****************************************************************************************/ 00616 void initRobotActionneur(void) 00617 { 00618 00619 } 00620 00621 /****************************************************************************************/ 00622 /* FUNCTION NAME: runTest */ 00623 /* DESCRIPTION : tester l'ensemble des actionneurs du robot */ 00624 /****************************************************************************************/ 00625 void runRobotTest(void) 00626 { 00627 /* 00628 int waitTime = 500; 00629 00630 //Test des AX12 dans l'ordre 00631 doAction(111,0,0);//Fermeture pince arrière haute 00632 wait_ms(waitTime); 00633 doAction(110,0,0);//Ouverture pince arrière haute 00634 wait_ms(waitTime); 00635 doAction(113,0,0);//Fermeture pince arrière basse 00636 wait_ms(waitTime); 00637 doAction(112,0,0);//Ouverture pince arrière basse 00638 wait_ms(waitTime); 00639 doAction(115,0,0);//Fermeture porte arrière 00640 wait_ms(waitTime); 00641 doAction(114,0,0);//Ouverture porte arrière 00642 wait_ms(waitTime); 00643 doAction(101,0,0);//Fermer les portes avant 00644 wait_ms(waitTime); 00645 doAction(100,0,0);//Ouvrir les portes avant 00646 wait_ms(waitTime); 00647 doAction(103,0,0);//Descendre le peigne 00648 wait_ms(waitTime); 00649 doAction(102,0,0);//Remonter le peigne*/ 00650 } 00651 00652 /****************************************************************************************/ 00653 /* FUNCTION NAME: SelectStrategy */ 00654 /* DESCRIPTION : Charger le fichier de stratégie correspondante à un id */ 00655 /* RETURN : 0=> Erreur, 1=> OK si le fichier existe */ 00656 /****************************************************************************************/ 00657 int SelectStrategy(unsigned char id) 00658 { 00659 switch(id) 00660 { 00661 // strat de match 00662 case 1: 00663 strcpy(cheminFileStart,"/local/strat1.txt"); 00664 return FileExists(cheminFileStart); 00665 case 2: 00666 strcpy(cheminFileStart,"/local/strat2.txt"); 00667 return FileExists(cheminFileStart); 00668 case 3: 00669 strcpy(cheminFileStart,"/local/strat3.txt"); 00670 return FileExists(cheminFileStart); 00671 case 4: 00672 strcpy(cheminFileStart,"/local/strat4.txt"); 00673 return FileExists(cheminFileStart); 00674 case 5: 00675 strcpy(cheminFileStart,"/local/strat5.txt"); 00676 return FileExists(cheminFileStart); 00677 case 6: 00678 strcpy(cheminFileStart,"/local/strat6.txt"); 00679 return FileExists(cheminFileStart); 00680 case 7: 00681 strcpy(cheminFileStart,"/local/strat7.txt"); 00682 return FileExists(cheminFileStart); 00683 case 8: 00684 strcpy(cheminFileStart,"/local/strat8.txt"); 00685 return FileExists(cheminFileStart); 00686 case 9: 00687 strcpy(cheminFileStart,"/local/strat9.txt"); 00688 return FileExists(cheminFileStart); 00689 case 10: 00690 strcpy(cheminFileStart,"/local/strat10.txt"); 00691 return FileExists(cheminFileStart); 00692 00693 // strat de demo 00694 case 0x10: 00695 strcpy(cheminFileStart,"/local/moteur.txt"); 00696 return FileExists(cheminFileStart); 00697 case 0x11: 00698 #ifdef ROBOT_BIG 00699 strcpy(cheminFileStart,"/local/bras.txt"); 00700 #else 00701 strcpy(cheminFileStart,"/local/porteAvant.txt"); 00702 #endif 00703 return FileExists(cheminFileStart); 00704 case 0x12: 00705 #ifdef ROBOT_BIG 00706 strcpy(cheminFileStart,"/local/balancier.txt"); 00707 #else 00708 strcpy(cheminFileStart,"/local/mainTourneuse.txt"); 00709 #endif 00710 return FileExists(cheminFileStart); 00711 default: 00712 strcpy(cheminFileStart,"/local/strat1.txt"); 00713 return 0; 00714 } 00715 } 00716 00717 /****************************************************************************************/ 00718 /* FUNCTION NAME: needToStop */ 00719 /* DESCRIPTION : Savoir si il faut autoriser le stop du robot via balise */ 00720 /****************************************************************************************/ 00721 unsigned char needToStop(void) 00722 { 00723 return isStopEnable; 00724 } 00725 00726 /****************************************************************************************/ 00727 /* FUNCTION NAME: doBeforeEndAction */ 00728 /* DESCRIPTION : Terminer les actions du robot 1s avant la fin du match */ 00729 /****************************************************************************************/ 00730 void doBeforeEndAction(void) 00731 { 00732 doAction(110,0,0);//Ouverture pince arrière haute 00733 doAction(112,0,0);//Ouverture pince arrière basse 00734 doAction(114,0,0);//Ouverture porte arrière 00735 doAction(100,0,0);//Ouvrir les portes avant 00736 doAction(102,0,0);//Remonter le peigne 00737 } 00738 00739 #endif
Generated on Tue Jul 12 2022 19:28:48 by 1.7.2