Programme carte strategie (disco)

Dependencies:   mbed SerialHalfDuplex SDFileSystem DISCO-F469NI_portrait liaison_Bluetooth ident_crac

Committer:
Sitkah
Date:
Wed May 09 19:36:20 2018 +0000
Revision:
38:76f886a1c8e6
Parent:
36:6dd30780bd8e
Child:
42:657b6a573e11
test avant match

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Sitkah 29:41e02746041d 1 #include "global.h"
Sitkah 38:76f886a1c8e6 2
antbig 3:19f2285a4757 3 #ifdef ROBOT_SMALL
Sitkah 29:41e02746041d 4
antbig 3:19f2285a4757 5
antbig 12:14729d584500 6 unsigned char isStopEnable = 1;//Permet de savoir si il faut autoriser le stop via les balises
ClementBreteau 21:590cdacb6a35 7 //unsigned short telemetreDistance;
ClementBreteau 18:cc5fec34ed9c 8
antbig 12:14729d584500 9
antbig 3:19f2285a4757 10 /****************************************************************************************/
antbig 3:19f2285a4757 11 /* FUNCTION NAME: doFunnyAction */
antbig 3:19f2285a4757 12 /* DESCRIPTION : Permet de faire la funny action en fin de partie */
antbig 3:19f2285a4757 13 /****************************************************************************************/
antbig 3:19f2285a4757 14 void doFunnyAction(void) {
antbig 3:19f2285a4757 15
antbig 3:19f2285a4757 16
antbig 3:19f2285a4757 17 }
antbig 3:19f2285a4757 18
ClementBreteau 18:cc5fec34ed9c 19
antbig 3:19f2285a4757 20 /****************************************************************************************/
antbig 3:19f2285a4757 21 /* FUNCTION NAME: doAction */
antbig 3:19f2285a4757 22 /* DESCRIPTION : Effectuer une action specifique */
antbig 3:19f2285a4757 23 /****************************************************************************************/
Sitkah 34:6aa4b46b102e 24 unsigned char doAction(unsigned char id, unsigned short arg1, short arg2) {
ClementBreteau 18:cc5fec34ed9c 25 int retour = 1;
Sitkah 34:6aa4b46b102e 26 CANMessage msgTx=CANMessage();
Sitkah 34:6aa4b46b102e 27 msgTx.format=CANStandard;
Sitkah 34:6aa4b46b102e 28 msgTx.type=CANData;
antbig 3:19f2285a4757 29 switch(id) {
Sitkah 30:a1e37af4bbde 30 case 101: //baisser attrape bloc avant
Sitkah 30:a1e37af4bbde 31 SendRawId(BAISSER_ATTRAPE_BLOC);
Sitkah 30:a1e37af4bbde 32 break;
Sitkah 30:a1e37af4bbde 33 case 102: //Relever attrape bloc avant
Sitkah 30:a1e37af4bbde 34 SendRawId(RELEVER_ATTRAPE_BLOC);
Sitkah 30:a1e37af4bbde 35 break;
Sitkah 30:a1e37af4bbde 36 case 115: //allumer panneau
Sitkah 30:a1e37af4bbde 37 SendRawId(ALLUMER_PANNEAU_UP);
Sitkah 30:a1e37af4bbde 38 break;
Sitkah 30:a1e37af4bbde 39 case 116: //range le bras qui allume le panneau
Sitkah 30:a1e37af4bbde 40 SendRawId(ALLUMER_PANNEAU_DOWN);
Sitkah 30:a1e37af4bbde 41 break;
Sitkah 30:a1e37af4bbde 42 case 117: //lève le bras pour pousser l'abeille
Sitkah 30:a1e37af4bbde 43 SendRawId(BRAS_ABEILLE_UP);
Sitkah 30:a1e37af4bbde 44 break;
Sitkah 30:a1e37af4bbde 45 case 118: //abaisse le bras qui pousse l'abeille
Sitkah 30:a1e37af4bbde 46 SendRawId(BRAS_ABEILLE_DOWN);
Sitkah 30:a1e37af4bbde 47 break;
Sitkah 30:a1e37af4bbde 48 case 130: //Inclinaison pour viser le chateau d'eau
Sitkah 30:a1e37af4bbde 49 SendRawId(INCLINAISON_CHATEAU);
Sitkah 30:a1e37af4bbde 50 break;
Sitkah 30:a1e37af4bbde 51 case 131: //inclinaison pour deverser les balles sales
Sitkah 30:a1e37af4bbde 52 SendRawId(INCLINAISON_EPURATION);
Sitkah 30:a1e37af4bbde 53 break;
Sitkah 30:a1e37af4bbde 54 case 132: //blocage des balles
Sitkah 30:a1e37af4bbde 55 SendRawId(BLOCAGE_BALLE);
Sitkah 30:a1e37af4bbde 56 break;
Sitkah 30:a1e37af4bbde 57 case 133: //lance le pwm de tir
Sitkah 34:6aa4b46b102e 58 msgTx.id=LANCEMENT_MOTEUR_TIR_ON;
Sitkah 34:6aa4b46b102e 59
Sitkah 34:6aa4b46b102e 60 msgTx.len=1;
Sitkah 34:6aa4b46b102e 61 msgTx.data[0]=arg1;
Sitkah 34:6aa4b46b102e 62 can2.write(msgTx);
Sitkah 30:a1e37af4bbde 63 break;
Sitkah 30:a1e37af4bbde 64 case 134: ///Arrete le pwm de tir
Sitkah 30:a1e37af4bbde 65 SendRawId(LANCEMENT_MOTEUR_TIR_OFF);
Sitkah 30:a1e37af4bbde 66 break;
Sitkah 30:a1e37af4bbde 67 case 135://position aiguilleur au centre
Sitkah 30:a1e37af4bbde 68 SendRawId(AIGUILLEUR_CENTRE);
Sitkah 30:a1e37af4bbde 69 break;
Sitkah 30:a1e37af4bbde 70 case 136://position aiguilleur à gauche
Sitkah 30:a1e37af4bbde 71 SendRawId(AIGUILLEUR_GAUCHE);
Sitkah 30:a1e37af4bbde 72 break;
Sitkah 30:a1e37af4bbde 73 case 137://position aiguilleur à droite
Sitkah 30:a1e37af4bbde 74 SendRawId(AIGUILLEUR_DROITE);
Sitkah 30:a1e37af4bbde 75 break;
Sitkah 30:a1e37af4bbde 76 case 138://position aiguilleur au centre
Sitkah 30:a1e37af4bbde 77 SendRawId(TRI_BALLE);
Sitkah 30:a1e37af4bbde 78 break;
Sitkah 34:6aa4b46b102e 79 case 139:
Sitkah 34:6aa4b46b102e 80 SendRawId(VIBRO);
Sitkah 34:6aa4b46b102e 81 break;
Sitkah 34:6aa4b46b102e 82
Sitkah 38:76f886a1c8e6 83 case 150:
Sitkah 38:76f886a1c8e6 84 SCORE_PR+=arg1;
Sitkah 38:76f886a1c8e6 85 liaison_Tx.envoyer_short(0x30,SCORE_PR);
Sitkah 38:76f886a1c8e6 86 waitingAckFrom = 0;
Sitkah 38:76f886a1c8e6 87 waitingAckID = 0;
Sitkah 38:76f886a1c8e6 88 break;
Sitkah 38:76f886a1c8e6 89
ClementBreteau 16:7321fb3bb396 90
ClementBreteau 18:cc5fec34ed9c 91 case 200 :
Sitkah 30:a1e37af4bbde 92 SendRawId(DATA_TELEMETRE);
Sitkah 30:a1e37af4bbde 93 /*telemetreDistance = dataTelemetre();
ClementBreteau 18:cc5fec34ed9c 94 wait_ms(1);
ClementBreteau 18:cc5fec34ed9c 95 telemetreDistance = dataTelemetre();
Sitkah 30:a1e37af4bbde 96 telemetreDistance = telemetreDistance - 170;*/
ClementBreteau 18:cc5fec34ed9c 97 break;
ClementBreteau 18:cc5fec34ed9c 98
ClementBreteau 18:cc5fec34ed9c 99 case 201 :
Sitkah 30:a1e37af4bbde 100 SendRawId(0x99);
ClementBreteau 18:cc5fec34ed9c 101 retour = 2;
antbig 10:a788d9cf60f2 102 break;
ClementBreteau 15:c2fc239e85df 103
antbig 12:14729d584500 104 case 10://Désactiver le stop
antbig 12:14729d584500 105 isStopEnable = 0;
antbig 12:14729d584500 106 break;
antbig 12:14729d584500 107 case 11://Activer le stop
antbig 12:14729d584500 108 isStopEnable = 1;
antbig 12:14729d584500 109 break;
antbig 12:14729d584500 110 case 20://Désactiver l'asservissement
antbig 12:14729d584500 111 setAsservissementEtat(0);
antbig 12:14729d584500 112 break;
antbig 12:14729d584500 113 case 21://Activer l'asservissement
antbig 12:14729d584500 114 setAsservissementEtat(1);
ClementBreteau 16:7321fb3bb396 115 break;
ClementBreteau 16:7321fb3bb396 116
Sitkah 34:6aa4b46b102e 117 case 22://Changer la vitesse du robot
Sitkah 34:6aa4b46b102e 118 SendSpeed(arg1,(unsigned short)arg2);
ClementBreteau 18:cc5fec34ed9c 119 wait_us(200);
antbig 28:acd18776ed2d 120 waitingAckFrom = 0;
antbig 28:acd18776ed2d 121 waitingAckID = 0;
antbig 28:acd18776ed2d 122 break;
antbig 28:acd18776ed2d 123
antbig 28:acd18776ed2d 124 case 19: // CHANGER LA VITESSE + DECELERATION
Sitkah 34:6aa4b46b102e 125 SendSpeedDecel(arg1,(unsigned short) arg2);
antbig 28:acd18776ed2d 126 wait_us(200);
antbig 28:acd18776ed2d 127 waitingAckFrom = 0;
antbig 28:acd18776ed2d 128 waitingAckID =0;
ClementBreteau 16:7321fb3bb396 129 break;
ClementBreteau 16:7321fb3bb396 130
ClementBreteau 16:7321fb3bb396 131 case 30://Action tempo
Sitkah 34:6aa4b46b102e 132 wait_ms(arg1);
antbig 12:14729d584500 133 break;
Sitkah 34:6aa4b46b102e 134
antbig 3:19f2285a4757 135 default:
ClementBreteau 18:cc5fec34ed9c 136 retour = 0;//L'action n'existe pas, il faut utiliser le CAN
antbig 3:19f2285a4757 137
antbig 3:19f2285a4757 138 }
ClementBreteau 18:cc5fec34ed9c 139 return retour;//L'action est spécifique.
antbig 3:19f2285a4757 140
antbig 3:19f2285a4757 141 }
antbig 3:19f2285a4757 142
antbig 3:19f2285a4757 143 /****************************************************************************************/
antbig 3:19f2285a4757 144 /* FUNCTION NAME: initRobot */
antbig 3:19f2285a4757 145 /* DESCRIPTION : initialiser le robot */
antbig 3:19f2285a4757 146 /****************************************************************************************/
Sitkah 30:a1e37af4bbde 147 //void initRobot(void) {
antbig 3:19f2285a4757 148 /**
antbig 3:19f2285a4757 149 On enregistre les id des AX12 présent sur la carte
antbig 3:19f2285a4757 150 **/
ClementBreteau 15:c2fc239e85df 151 /*AX12_register(1,AX12_SERIAL1,0x0FF);
antbig 5:dcd817534b57 152 AX12_register(2,AX12_SERIAL1);
antbig 5:dcd817534b57 153 AX12_register(18,AX12_SERIAL1);
antbig 5:dcd817534b57 154 AX12_register(4,AX12_SERIAL2);
antbig 5:dcd817534b57 155 AX12_register(16,AX12_SERIAL2);
ClementBreteau 15:c2fc239e85df 156 AX12_register(17,AX12_SERIAL2,0x0FF);*/
antbig 12:14729d584500 157
antbig 12:14729d584500 158 //runRobotTest();
antbig 12:14729d584500 159
antbig 5:dcd817534b57 160 /*
antbig 5:dcd817534b57 161 AX12_setGoal(AX12_ID_BRAS_BASE_INV,278,0x0FF);
antbig 5:dcd817534b57 162 AX12_setGoal(AX12_ID_BRAS_RELACHEUR_INV,160);//fermer le bras
antbig 5:dcd817534b57 163 AX12_setGoal(AX12_ID_BRAS_BASE,278,0x0FF);
antbig 5:dcd817534b57 164 AX12_setGoal(AX12_ID_BRAS_RELACHEUR,160);//fermer le bras
antbig 5:dcd817534b57 165 AX12_processChange();*/
ClementBreteau 16:7321fb3bb396 166
Sitkah 30:a1e37af4bbde 167 //initialisation_AX12();
ClementBreteau 18:cc5fec34ed9c 168
Sitkah 30:a1e37af4bbde 169 //}
antbig 3:19f2285a4757 170
antbig 4:88431b537477 171 /****************************************************************************************/
antbig 12:14729d584500 172 /* FUNCTION NAME: initRobotActionneur */
antbig 12:14729d584500 173 /* DESCRIPTION : Initialiser la position des actionneurs du robot */
antbig 12:14729d584500 174 /****************************************************************************************/
Sitkah 30:a1e37af4bbde 175 /*void initRobotActionneur(void)
antbig 12:14729d584500 176 {
ClementBreteau 18:cc5fec34ed9c 177 moteurGauchePWM(0);
ClementBreteau 18:cc5fec34ed9c 178 moteurDroitPWM(0);
ClementBreteau 18:cc5fec34ed9c 179 AX12_automate(AX12_PINCE_CENTRALE_POSITION_INITIALE);
ClementBreteau 18:cc5fec34ed9c 180 AX12_automate(AX12_GAUCHE_CROC_INITIALE);
ClementBreteau 18:cc5fec34ed9c 181 AX12_automate(AX12_DROIT_CROC_INITIALE);
ClementBreteau 18:cc5fec34ed9c 182 AX12_automate(AX12_TOURNANTE_GAUCHE_POSITION_INITIALE);
ClementBreteau 18:cc5fec34ed9c 183 AX12_automate(AX12_TOURNANTE_DROIT_POSITION_INITIALE);
antbig 12:14729d584500 184 }
Sitkah 30:a1e37af4bbde 185 */
antbig 12:14729d584500 186 /****************************************************************************************/
antbig 9:d0042422d95a 187 /* FUNCTION NAME: runTest */
antbig 9:d0042422d95a 188 /* DESCRIPTION : tester l'ensemble des actionneurs du robot */
antbig 9:d0042422d95a 189 /****************************************************************************************/
antbig 9:d0042422d95a 190 void runRobotTest(void)
antbig 9:d0042422d95a 191 {
ClementBreteau 18:cc5fec34ed9c 192
antbig 9:d0042422d95a 193 }
antbig 9:d0042422d95a 194
antbig 9:d0042422d95a 195 /****************************************************************************************/
antbig 4:88431b537477 196 /* FUNCTION NAME: SelectStrategy */
antbig 4:88431b537477 197 /* DESCRIPTION : Charger le fichier de stratégie correspondante à un id */
antbig 4:88431b537477 198 /* RETURN : 0=> Erreur, 1=> OK si le fichier existe */
antbig 4:88431b537477 199 /****************************************************************************************/
antbig 4:88431b537477 200 int SelectStrategy(unsigned char id)
antbig 4:88431b537477 201 {
antbig 12:14729d584500 202
antbig 4:88431b537477 203 switch(id)
antbig 4:88431b537477 204 {
antbig 4:88431b537477 205 case 1:
Sitkah 29:41e02746041d 206 strcpy(cheminFileStart,"/sd/strat1.txt");
antbig 4:88431b537477 207 return FileExists(cheminFileStart);
antbig 4:88431b537477 208 case 2:
Sitkah 29:41e02746041d 209 strcpy(cheminFileStart,"/sd/strat2.txt");
antbig 4:88431b537477 210 return FileExists(cheminFileStart);
antbig 7:dcce34c7e06e 211 case 3:
Sitkah 29:41e02746041d 212 strcpy(cheminFileStart,"/sd/strat3.txt");
antbig 7:dcce34c7e06e 213 return FileExists(cheminFileStart);
antbig 11:ed13a480ddca 214 case 4:
Sitkah 29:41e02746041d 215 strcpy(cheminFileStart,"/sd/strat4.txt");
antbig 11:ed13a480ddca 216 return FileExists(cheminFileStart);
antbig 11:ed13a480ddca 217 case 5:
Sitkah 29:41e02746041d 218 strcpy(cheminFileStart,"/sd/strat5.txt");
antbig 11:ed13a480ddca 219 return FileExists(cheminFileStart);
antbig 12:14729d584500 220 case 6:
Sitkah 29:41e02746041d 221 strcpy(cheminFileStart,"/sd/strat6.txt");
antbig 12:14729d584500 222 return FileExists(cheminFileStart);
ClementBreteau 16:7321fb3bb396 223 case 7:
Sitkah 29:41e02746041d 224 strcpy(cheminFileStart,"/sd/strat7.txt");
ClementBreteau 16:7321fb3bb396 225 return FileExists(cheminFileStart);
ClementBreteau 16:7321fb3bb396 226 case 8:
Sitkah 29:41e02746041d 227 strcpy(cheminFileStart,"/sd/strat8.txt");
ClementBreteau 16:7321fb3bb396 228 return FileExists(cheminFileStart);
ClementBreteau 16:7321fb3bb396 229 case 9:
Sitkah 29:41e02746041d 230 strcpy(cheminFileStart,"/sd/strat9.txt");
ClementBreteau 16:7321fb3bb396 231 return FileExists(cheminFileStart);
antbig 12:14729d584500 232 case 10:
Sitkah 29:41e02746041d 233 strcpy(cheminFileStart,"/sd/strat10.txt");
ClementBreteau 16:7321fb3bb396 234 return FileExists(cheminFileStart);
ClementBreteau 16:7321fb3bb396 235 case 11:
Sitkah 29:41e02746041d 236 strcpy(cheminFileStart,"/sd/grand_8.txt");
antbig 12:14729d584500 237 return FileExists(cheminFileStart);
ClementBreteau 16:7321fb3bb396 238
ClementBreteau 16:7321fb3bb396 239 case 0x10:
Sitkah 29:41e02746041d 240 strcpy(cheminFileStart,"/sd/demoBras.txt");
ClementBreteau 16:7321fb3bb396 241 return FileExists(cheminFileStart);
ClementBreteau 16:7321fb3bb396 242
antbig 4:88431b537477 243 default:
Sitkah 29:41e02746041d 244 strcpy(cheminFileStart,"/sd/strat1.txt");
ClementBreteau 16:7321fb3bb396 245 SendRawId(0x258);
antbig 4:88431b537477 246 return 0;
antbig 4:88431b537477 247 }
antbig 4:88431b537477 248 }
antbig 4:88431b537477 249
antbig 12:14729d584500 250 /****************************************************************************************/
antbig 12:14729d584500 251 /* FUNCTION NAME: needToStop */
antbig 12:14729d584500 252 /* DESCRIPTION : Savoir si il faut autoriser le stop du robot via balise */
antbig 12:14729d584500 253 /****************************************************************************************/
antbig 12:14729d584500 254 unsigned char needToStop(void)
antbig 12:14729d584500 255 {
antbig 12:14729d584500 256 return isStopEnable;
antbig 12:14729d584500 257 }
antbig 12:14729d584500 258
antbig 12:14729d584500 259 /****************************************************************************************/
antbig 12:14729d584500 260 /* FUNCTION NAME: doBeforeEndAction */
antbig 12:14729d584500 261 /* DESCRIPTION : Terminer les actions du robot 1s avant la fin du match */
antbig 12:14729d584500 262 /****************************************************************************************/
antbig 12:14729d584500 263 void doBeforeEndAction(void)
antbig 12:14729d584500 264 {
antbig 12:14729d584500 265
antbig 12:14729d584500 266 }
antbig 12:14729d584500 267
antbig 3:19f2285a4757 268 #endif