
code avec modifs, programme mit dans les robots pour les derniers matchs
Dependencies: mbed SerialHalfDuplex SDFileSystem liaison_Bluetooth ident_crac DISCO-F469NI_portrait
Robots/Strategie_small.cpp
- Committer:
- gabrieltetar
- Date:
- 2020-03-03
- Revision:
- 10:1964bb91b925
- Parent:
- 6:ef2418d23a06
- Child:
- 12:227c15c7ebe6
File content as of revision 10:1964bb91b925:
#include "global.h" #ifdef ROBOT_SMALL unsigned short distance_recalage; unsigned short distance_revenir; unsigned short x; unsigned short y; unsigned char isStopEnable = 1;//Permet de savoir si il faut autoriser le stop via les balises //unsigned short telemetreDistance; /****************************************************************************************/ /* FUNCTION NAME: doFunnyAction */ /* DESCRIPTION : Permet de faire la funny action en fin de partie */ /****************************************************************************************/ void doFunnyAction(void) { } /*************************************************************************************************/ /* FUNCTION NAME: doAction */ /* DESCRIPTION : Effectuer une action specifique correspondant au numéro dans le fichier strat */ /*************************************************************************************************/ unsigned char doAction(unsigned char id, unsigned short arg1, short arg2) { int retour = 1; CANMessage msgTx=CANMessage(); msgTx.format=CANStandard; msgTx.type=CANData; //SendMsgCan(0x5BB, &id,1); switch(id) { case 101: //bras gabarit SendRawId(GABARIT_PETIT_ROBOT); break; case 102: //attraper presentoir avant SendRawId(PRESENTOIR_AVANT); break; case 103: //attraper presentoir arriere SendRawId(PRESENTOIR_ARRIERE); break; case 104: //balance avant SendRawId(BALANCE_AVANT); break; case 105: //balance arriere SendRawId(BALANCE_ARRIERE); break; case 106: //accelerateur avant //SendRawId(ACCELERATEUR_AVANT); distance_recalage=arg1; distance_revenir=arg2; Send2Short(ACCELERATEUR_AVANT, distance_recalage,distance_revenir); break; case 107: //accelerateur arriere distance_recalage=arg1; distance_revenir=arg2; Send2Short(ACCELERATEUR_ARRIERE, distance_recalage,distance_revenir); break; case 108: //goldenium avant //SendRawId(GOLDENIUM_AVANT); x = arg1; if(InversStrat == 1) { y = 3000 - arg2; } else { y = arg2; } Send2Short(GOLDENIUM_AVANT, x, y); break; case 109: //goldenium arriere x=arg1; y=arg2; Send2Short(GOLDENIUM_ARRIERE, x,y); break; case 110: //sol avant SendRawId(SOL_AVANT); break; case 111: //sol arriere SendRawId(SOL_ARRIERE); break; case 112: //sol avant relache SendRawId(SOL_AVANT_RELACHE); break; case 113: //sol arriere relache SendRawId(SOL_ARRIERE_RELACHE); break; case 114://relache les 3 ventouses avants SendRawId(AVANT_RELACHE); break; case 115://relache les 3 ventouses arrieres SendRawId(ARRIERE_RELACHE); break; case 116://relache une pompe unsigned char arg_tempo; if(InversStrat == 1) { switch(arg1) { case AV_DROIT: arg_tempo = AV_GAUCHE; break; case AV_GAUCHE: arg_tempo = AV_DROIT; break; case AR_DROIT: arg_tempo = AR_GAUCHE; break; case AR_GAUCHE: arg_tempo = AR_DROIT; break; default : arg_tempo =(unsigned char)arg1; break; } } else arg_tempo =(unsigned char)arg1; SendMsgCan(HACHEUR_RELEASE_ATOM, &arg_tempo,1); waitingAckFrom = 0; waitingAckID =0; break; case 117: SendRawId(RECROQUEVILLER); break; case 118: SendRawId(VENTOUSE_AV_CENTRE_BALANCE); break; case 119: SendRawId(VENTOUSE_AR_CENTRE_BALANCE); break; case 120: SendRawId(ACCELERATEUR_INSERTION_AVANT_GAUCHE); break; case 121: SendRawId(ACCELERATEUR_INSERTION_ARRIERE_GAUCHE); break; case 150: SCORE_PR+=arg1; liaison_Tx.envoyer_short(0x30,SCORE_PR); waitingAckFrom = 0; waitingAckID = 0; break; case 200 : SendRawId(DATA_TELEMETRE); /*telemetreDistance = dataTelemetre(); wait_ms(1); telemetreDistance = dataTelemetre(); telemetreDistance = telemetreDistance - 170;*/ break; case 201 : SendRawId(0x99);// retour = 2; break; case 11://0 Désactiver le stop,1 Activer le stop saut de strat,2 Activer le stop avec evitement isStopEnable =(unsigned char) arg1; // SendMsgCan(0x5BC, &isStopEnable,1); waitingAckFrom = 0; waitingAckID =0; break; case 20://Désactiver l'asservissement setAsservissementEtat(0); break; case 21://Activer l'asservissement setAsservissementEtat(1); break; case 22://Changer la vitesse du robot SendSpeed(arg1);//,(unsigned short)arg2, (unsigned short)arg2); wait_us(200); waitingAckFrom = 0; waitingAckID = 0; break; case 23: SendAccel(arg1,(unsigned short)arg2);//,(unsigned short)arg2, (unsigned short)arg2); wait_us(200); waitingAckFrom = 0; waitingAckID = 0; break; case 19: // CHANGER LA VITESSE + DECELERATION //SendSpeedDecel(arg1,(unsigned short) arg2); wait_us(200); waitingAckFrom = 0; waitingAckID =0; break; case 30://Action tempo wait_ms(arg1); waitingAckFrom = 0; waitingAckID = 0; break; default: retour = 0;//L'action n'existe pas, il faut utiliser le CAN } return retour;//L'action est spécifique. } /****************************************************************************************/ /* FUNCTION NAME: needToStop */ /* DESCRIPTION : Savoir si il faut autoriser le stop du robot via balise */ /****************************************************************************************/ unsigned char needToStop(void) { return isStopEnable; } /****************************************************************************************/ /* FUNCTION NAME: doBeforeEndAction */ /* DESCRIPTION : Terminer les actions du robot 1s avant la fin du match */ /****************************************************************************************/ void doBeforeEndAction(void) { } #endif