carte_strategie_2019

Dependencies:   mbed SerialHalfDuplex SDFileSystem DISCO-F469NI_portrait liaison_Bluetooth ident_crac

Committer:
Artiom
Date:
Sun May 26 12:49:15 2019 +0000
Revision:
67:96f914f92d2d
Parent:
56:95c329e42200
Child:
71:67cce4efd33d
bezier

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Sitkah 29:41e02746041d 1 #include "global.h"
Sitkah 29:41e02746041d 2 #ifdef ROBOT_BIG
ClementBreteau 15:c2fc239e85df 3
Sitkah 29:41e02746041d 4
antbig 12:14729d584500 5 unsigned char isStopEnable = 1;//Permet de savoir si il faut autoriser le stop via les balises
antbig 12:14729d584500 6
antbig 0:ad97421fb1fb 7 /****************************************************************************************/
antbig 0:ad97421fb1fb 8 /* FUNCTION NAME: doFunnyAction */
antbig 0:ad97421fb1fb 9 /* DESCRIPTION : Permet de faire la funny action en fin de partie */
antbig 0:ad97421fb1fb 10 /****************************************************************************************/
antbig 0:ad97421fb1fb 11 void doFunnyAction(void) {
ClementBreteau 18:cc5fec34ed9c 12 //envoie de la funny action
ClementBreteau 18:cc5fec34ed9c 13 // 0x007, 01, 01
ClementBreteau 18:cc5fec34ed9c 14 CANMessage msgTx=CANMessage();
ClementBreteau 18:cc5fec34ed9c 15 msgTx.id=GLOBAL_FUNNY_ACTION;
ClementBreteau 18:cc5fec34ed9c 16 msgTx.format=CANStandard;
ClementBreteau 18:cc5fec34ed9c 17 msgTx.type=CANData;
ClementBreteau 18:cc5fec34ed9c 18 msgTx.len=2;
ClementBreteau 18:cc5fec34ed9c 19 msgTx.data[0]=0x01;
ClementBreteau 18:cc5fec34ed9c 20 msgTx.data[1]=0x01;
ClementBreteau 18:cc5fec34ed9c 21 can1.write(msgTx);
antbig 0:ad97421fb1fb 22 }
antbig 0:ad97421fb1fb 23
antbig 0:ad97421fb1fb 24 /****************************************************************************************/
antbig 0:ad97421fb1fb 25 /* FUNCTION NAME: doAction */
antbig 0:ad97421fb1fb 26 /* DESCRIPTION : Effectuer une action specifique */
antbig 0:ad97421fb1fb 27 /****************************************************************************************/
Sitkah 30:a1e37af4bbde 28 unsigned char doAction(unsigned char id, unsigned short var1, short var2) {
antbig 12:14729d584500 29 CANMessage msgTx=CANMessage();
Sitkah 30:a1e37af4bbde 30 msgTx.format=CANStandard;
Sitkah 30:a1e37af4bbde 31 msgTx.type=CANData;
Sitkah 30:a1e37af4bbde 32 //affichage_debug(id);
Sitkah 30:a1e37af4bbde 33
antbig 0:ad97421fb1fb 34 switch(id) {
Sitkah 30:a1e37af4bbde 35 /////////////////////////////////////////////////////////100 à 108 : ACTIONS HERKULEX/////////////////////////////////////////////
Artiom 67:96f914f92d2d 36 case 100:
Artiom 67:96f914f92d2d 37 SendRawId(VIDER_BALANCE);
Sitkah 38:76f886a1c8e6 38 break;
ClementBreteau 15:c2fc239e85df 39
Artiom 67:96f914f92d2d 40 case 101:
Artiom 67:96f914f92d2d 41
Sitkah 30:a1e37af4bbde 42 break;
Sitkah 30:a1e37af4bbde 43 case 102: //Relever l'attrape bloc arrière
Artiom 67:96f914f92d2d 44
Sitkah 30:a1e37af4bbde 45 break;
Sitkah 30:a1e37af4bbde 46 case 103: //
Artiom 67:96f914f92d2d 47
Sitkah 30:a1e37af4bbde 48 break;
Sitkah 30:a1e37af4bbde 49 case 104:
Artiom 67:96f914f92d2d 50
Sitkah 30:a1e37af4bbde 51 break;
Sitkah 30:a1e37af4bbde 52 case 105:
Artiom 67:96f914f92d2d 53
Sitkah 30:a1e37af4bbde 54 break;
Sitkah 30:a1e37af4bbde 55 case 106:
Artiom 67:96f914f92d2d 56
Sitkah 30:a1e37af4bbde 57 break;
Sitkah 30:a1e37af4bbde 58 case 107:
Artiom 67:96f914f92d2d 59
Sitkah 41:b029ddc4d60e 60 break;
Sitkah 38:76f886a1c8e6 61 case 108:
Artiom 67:96f914f92d2d 62
Sitkah 38:76f886a1c8e6 63 break;
Sitkah 38:76f886a1c8e6 64 case 109:
Artiom 67:96f914f92d2d 65
Sitkah 38:76f886a1c8e6 66 break;
Sitkah 30:a1e37af4bbde 67 case 111:
Artiom 67:96f914f92d2d 68
Sitkah 30:a1e37af4bbde 69 break;
Sitkah 30:a1e37af4bbde 70 case 112:
Artiom 67:96f914f92d2d 71
Sitkah 30:a1e37af4bbde 72 break;
Sitkah 41:b029ddc4d60e 73 case 113:
Sitkah 41:b029ddc4d60e 74 msgTx.id=LIRE_PANNEAU;
Sitkah 41:b029ddc4d60e 75 msgTx.len=1;
Sitkah 41:b029ddc4d60e 76 msgTx.data[0]=var1;
Sitkah 41:b029ddc4d60e 77 can2.write(msgTx);
Sitkah 41:b029ddc4d60e 78 break;
Sitkah 38:76f886a1c8e6 79
Sitkah 38:76f886a1c8e6 80 case 150:
Sitkah 38:76f886a1c8e6 81 SCORE_GR+=var1;
Sitkah 38:76f886a1c8e6 82 SCORE_GLOBAL=SCORE_GR+SCORE_PR;
Sitkah 40:21bb685b553b 83 //liaison_Tx.envoyer_short(0x30,SCORE_GLOBAL);
Sitkah 38:76f886a1c8e6 84 waitingAckFrom = 0;
Sitkah 38:76f886a1c8e6 85 waitingAckID = 0;
Sitkah 38:76f886a1c8e6 86 break;
Sitkah 38:76f886a1c8e6 87
ClementBreteau 18:cc5fec34ed9c 88
Artiom 67:96f914f92d2d 89 case 11://0 Désactiver le stop,1 Activer le stop saut de strat,2 Activer le stop avec evitement
Artiom 67:96f914f92d2d 90 isStopEnable =(unsigned char) arg1;
Artiom 67:96f914f92d2d 91 SendMsgCan(0x5BC, &isStopEnable,1);
Artiom 67:96f914f92d2d 92 waitingAckFrom = 0;
Artiom 67:96f914f92d2d 93 waitingAckID =0;
Artiom 67:96f914f92d2d 94 break;
antbig 12:14729d584500 95 case 20://Désactiver l'asservissement
antbig 12:14729d584500 96 setAsservissementEtat(0);
antbig 12:14729d584500 97 break;
Artiom 67:96f914f92d2d 98
antbig 12:14729d584500 99 case 21://Activer l'asservissement
antbig 12:14729d584500 100 setAsservissementEtat(1);
antbig 12:14729d584500 101 break;
antbig 12:14729d584500 102
antbig 12:14729d584500 103 case 22://Changer la vitesse du robot
Sitkah 30:a1e37af4bbde 104 SendSpeed(var1,(unsigned short)var2);
ClementBreteau 26:2f4fcc2354f3 105 waitingAckFrom = 0;
ClementBreteau 26:2f4fcc2354f3 106 waitingAckID = 0;
ClementBreteau 26:2f4fcc2354f3 107 wait(0.2);
antbig 12:14729d584500 108 break;
antbig 12:14729d584500 109
antbig 12:14729d584500 110 case 30://Action tempo
Sitkah 30:a1e37af4bbde 111 wait_ms(var1);
Sitkah 40:21bb685b553b 112 waitingAckFrom = 0;
Sitkah 40:21bb685b553b 113 waitingAckID = 0;
antbig 12:14729d584500 114 break;
antbig 12:14729d584500 115
Artiom 67:96f914f92d2d 116
antbig 12:14729d584500 117
antbig 0:ad97421fb1fb 118 default:
antbig 0:ad97421fb1fb 119 return 0;//L'action n'existe pas, il faut utiliser le CAN
antbig 0:ad97421fb1fb 120
antbig 0:ad97421fb1fb 121 }
antbig 0:ad97421fb1fb 122 return 1;//L'action est spécifique.
antbig 0:ad97421fb1fb 123
antbig 0:ad97421fb1fb 124 }
antbig 0:ad97421fb1fb 125
antbig 0:ad97421fb1fb 126 /****************************************************************************************/
antbig 0:ad97421fb1fb 127 /* FUNCTION NAME: initRobot */
antbig 0:ad97421fb1fb 128 /* DESCRIPTION : initialiser le robot */
antbig 0:ad97421fb1fb 129 /****************************************************************************************/
antbig 9:d0042422d95a 130 void initRobot(void)
antbig 9:d0042422d95a 131 {
antbig 9:d0042422d95a 132 //Enregistrement de tous les AX12 présent sur la carte
ClementBreteau 15:c2fc239e85df 133 /*AX12_register(5, AX12_SERIAL2);
antbig 8:0edc7dfb7f7e 134 AX12_register(18, AX12_SERIAL2);
antbig 8:0edc7dfb7f7e 135 AX12_register(13, AX12_SERIAL2);
antbig 12:14729d584500 136 AX12_register(1, AX12_SERIAL1);
antbig 12:14729d584500 137 AX12_register(11, AX12_SERIAL1);
antbig 12:14729d584500 138 AX12_register(8, AX12_SERIAL1);
ClementBreteau 15:c2fc239e85df 139 AX12_register(7, AX12_SERIAL2);*/
antbig 9:d0042422d95a 140
antbig 12:14729d584500 141 //AX12_setGoal(AX12_ID_FUNNY_ACTION, AX12_ANGLE_FUNNY_ACTION_CLOSE,AX12_SPEED_FUNNY_ACTION);
antbig 12:14729d584500 142 //AX12_processChange();
antbig 11:ed13a480ddca 143 //runRobotTest();
ClementBreteau 16:7321fb3bb396 144
antbig 9:d0042422d95a 145 }
antbig 9:d0042422d95a 146
antbig 9:d0042422d95a 147 /****************************************************************************************/
antbig 12:14729d584500 148 /* FUNCTION NAME: initRobotActionneur */
antbig 12:14729d584500 149 /* DESCRIPTION : Initialiser la position des actionneurs du robot */
antbig 12:14729d584500 150 /****************************************************************************************/
antbig 12:14729d584500 151 void initRobotActionneur(void)
antbig 12:14729d584500 152 {
ClementBreteau 23:ab87d308eaf9 153 /*doAction(100,1,0);
ClementBreteau 23:ab87d308eaf9 154 doAction(100,2,0);
ClementBreteau 23:ab87d308eaf9 155 doAction(110,0,0);
ClementBreteau 23:ab87d308eaf9 156 doAction(120,0,0);
ClementBreteau 23:ab87d308eaf9 157 doAction(131,0,0);*/
ClementBreteau 23:ab87d308eaf9 158
antbig 12:14729d584500 159 }
antbig 12:14729d584500 160
antbig 12:14729d584500 161 /****************************************************************************************/
antbig 9:d0042422d95a 162 /* FUNCTION NAME: runTest */
antbig 9:d0042422d95a 163 /* DESCRIPTION : tester l'ensemble des actionneurs du robot */
antbig 9:d0042422d95a 164 /****************************************************************************************/
antbig 9:d0042422d95a 165 void runRobotTest(void)
antbig 9:d0042422d95a 166 {
ClementBreteau 18:cc5fec34ed9c 167 /*
antbig 12:14729d584500 168 int waitTime = 500;
antbig 12:14729d584500 169
antbig 9:d0042422d95a 170 //Test des AX12 dans l'ordre
antbig 9:d0042422d95a 171 doAction(111,0,0);//Fermeture pince arrière haute
antbig 12:14729d584500 172 wait_ms(waitTime);
antbig 9:d0042422d95a 173 doAction(110,0,0);//Ouverture pince arrière haute
antbig 12:14729d584500 174 wait_ms(waitTime);
antbig 9:d0042422d95a 175 doAction(113,0,0);//Fermeture pince arrière basse
antbig 12:14729d584500 176 wait_ms(waitTime);
antbig 9:d0042422d95a 177 doAction(112,0,0);//Ouverture pince arrière basse
antbig 12:14729d584500 178 wait_ms(waitTime);
antbig 9:d0042422d95a 179 doAction(115,0,0);//Fermeture porte arrière
antbig 12:14729d584500 180 wait_ms(waitTime);
antbig 9:d0042422d95a 181 doAction(114,0,0);//Ouverture porte arrière
antbig 12:14729d584500 182 wait_ms(waitTime);
antbig 12:14729d584500 183 doAction(101,0,0);//Fermer les portes avant
antbig 12:14729d584500 184 wait_ms(waitTime);
antbig 12:14729d584500 185 doAction(100,0,0);//Ouvrir les portes avant
antbig 12:14729d584500 186 wait_ms(waitTime);
antbig 12:14729d584500 187 doAction(103,0,0);//Descendre le peigne
antbig 12:14729d584500 188 wait_ms(waitTime);
ClementBreteau 18:cc5fec34ed9c 189 doAction(102,0,0);//Remonter le peigne*/
antbig 0:ad97421fb1fb 190 }
antbig 3:19f2285a4757 191
antbig 4:88431b537477 192 /****************************************************************************************/
antbig 4:88431b537477 193 /* FUNCTION NAME: SelectStrategy */
antbig 4:88431b537477 194 /* DESCRIPTION : Charger le fichier de stratégie correspondante à un id */
antbig 4:88431b537477 195 /* RETURN : 0=> Erreur, 1=> OK si le fichier existe */
antbig 4:88431b537477 196 /****************************************************************************************/
Sitkah 29:41e02746041d 197 /*int SelectStrategy(unsigned char id)
antbig 4:88431b537477 198 {
antbig 4:88431b537477 199 switch(id)
antbig 4:88431b537477 200 {
ClementBreteau 15:c2fc239e85df 201 // strat de match
antbig 4:88431b537477 202 case 1:
antbig 11:ed13a480ddca 203 strcpy(cheminFileStart,"/local/strat1.txt");
antbig 11:ed13a480ddca 204 return FileExists(cheminFileStart);
antbig 11:ed13a480ddca 205 case 2:
antbig 11:ed13a480ddca 206 strcpy(cheminFileStart,"/local/strat2.txt");
antbig 11:ed13a480ddca 207 return FileExists(cheminFileStart);
antbig 11:ed13a480ddca 208 case 3:
antbig 11:ed13a480ddca 209 strcpy(cheminFileStart,"/local/strat3.txt");
antbig 11:ed13a480ddca 210 return FileExists(cheminFileStart);
antbig 12:14729d584500 211 case 4:
antbig 12:14729d584500 212 strcpy(cheminFileStart,"/local/strat4.txt");
antbig 12:14729d584500 213 return FileExists(cheminFileStart);
antbig 12:14729d584500 214 case 5:
antbig 12:14729d584500 215 strcpy(cheminFileStart,"/local/strat5.txt");
antbig 12:14729d584500 216 return FileExists(cheminFileStart);
ClementBreteau 14:c8fc06c4887f 217 case 6:
ClementBreteau 14:c8fc06c4887f 218 strcpy(cheminFileStart,"/local/strat6.txt");
ClementBreteau 14:c8fc06c4887f 219 return FileExists(cheminFileStart);
ClementBreteau 14:c8fc06c4887f 220 case 7:
ClementBreteau 14:c8fc06c4887f 221 strcpy(cheminFileStart,"/local/strat7.txt");
ClementBreteau 14:c8fc06c4887f 222 return FileExists(cheminFileStart);
ClementBreteau 14:c8fc06c4887f 223 case 8:
ClementBreteau 14:c8fc06c4887f 224 strcpy(cheminFileStart,"/local/strat8.txt");
ClementBreteau 14:c8fc06c4887f 225 return FileExists(cheminFileStart);
ClementBreteau 14:c8fc06c4887f 226 case 9:
ClementBreteau 14:c8fc06c4887f 227 strcpy(cheminFileStart,"/local/strat9.txt");
ClementBreteau 14:c8fc06c4887f 228 return FileExists(cheminFileStart);
ClementBreteau 14:c8fc06c4887f 229 case 10:
ClementBreteau 14:c8fc06c4887f 230 strcpy(cheminFileStart,"/local/strat10.txt");
ClementBreteau 14:c8fc06c4887f 231 return FileExists(cheminFileStart);
ClementBreteau 14:c8fc06c4887f 232
ClementBreteau 15:c2fc239e85df 233 // strat de demo
ClementBreteau 14:c8fc06c4887f 234 case 0x10:
ClementBreteau 14:c8fc06c4887f 235 strcpy(cheminFileStart,"/local/moteur.txt");
ClementBreteau 14:c8fc06c4887f 236 return FileExists(cheminFileStart);
ClementBreteau 14:c8fc06c4887f 237 case 0x11:
ClementBreteau 15:c2fc239e85df 238 #ifdef ROBOT_BIG
ClementBreteau 15:c2fc239e85df 239 strcpy(cheminFileStart,"/local/bras.txt");
ClementBreteau 15:c2fc239e85df 240 #else
ClementBreteau 15:c2fc239e85df 241 strcpy(cheminFileStart,"/local/porteAvant.txt");
ClementBreteau 15:c2fc239e85df 242 #endif
ClementBreteau 14:c8fc06c4887f 243 return FileExists(cheminFileStart);
ClementBreteau 15:c2fc239e85df 244 case 0x12:
ClementBreteau 15:c2fc239e85df 245 #ifdef ROBOT_BIG
ClementBreteau 15:c2fc239e85df 246 strcpy(cheminFileStart,"/local/balancier.txt");
ClementBreteau 15:c2fc239e85df 247 #else
ClementBreteau 15:c2fc239e85df 248 strcpy(cheminFileStart,"/local/mainTourneuse.txt");
ClementBreteau 15:c2fc239e85df 249 #endif
ClementBreteau 15:c2fc239e85df 250 return FileExists(cheminFileStart);
antbig 11:ed13a480ddca 251 default:
antbig 12:14729d584500 252 strcpy(cheminFileStart,"/local/strat1.txt");
antbig 11:ed13a480ddca 253 return 0;
antbig 4:88431b537477 254 }
Sitkah 29:41e02746041d 255 }*/
antbig 4:88431b537477 256
antbig 12:14729d584500 257 /****************************************************************************************/
antbig 12:14729d584500 258 /* FUNCTION NAME: needToStop */
antbig 12:14729d584500 259 /* DESCRIPTION : Savoir si il faut autoriser le stop du robot via balise */
antbig 12:14729d584500 260 /****************************************************************************************/
antbig 12:14729d584500 261 unsigned char needToStop(void)
antbig 12:14729d584500 262 {
antbig 12:14729d584500 263 return isStopEnable;
antbig 12:14729d584500 264 }
antbig 12:14729d584500 265
antbig 12:14729d584500 266 /****************************************************************************************/
antbig 12:14729d584500 267 /* FUNCTION NAME: doBeforeEndAction */
antbig 12:14729d584500 268 /* DESCRIPTION : Terminer les actions du robot 1s avant la fin du match */
antbig 12:14729d584500 269 /****************************************************************************************/
antbig 12:14729d584500 270 void doBeforeEndAction(void)
antbig 12:14729d584500 271 {
antbig 12:14729d584500 272 doAction(110,0,0);//Ouverture pince arrière haute
antbig 12:14729d584500 273 doAction(112,0,0);//Ouverture pince arrière basse
antbig 12:14729d584500 274 doAction(114,0,0);//Ouverture porte arrière
antbig 12:14729d584500 275 doAction(100,0,0);//Ouvrir les portes avant
antbig 12:14729d584500 276 doAction(102,0,0);//Remonter le peigne
antbig 12:14729d584500 277 }
antbig 12:14729d584500 278
antbig 3:19f2285a4757 279 #endif