
code avec modifs, programme mit dans les robots pour les derniers matchs
Dependencies: mbed SerialHalfDuplex SDFileSystem liaison_Bluetooth ident_crac DISCO-F469NI_portrait
Diff: Strategie/Strategie.cpp
- Revision:
- 36:c37dbe2be916
- Parent:
- 35:2a745eeb7922
- Child:
- 37:ee2c72e76d9c
- Child:
- 38:9d6a3ccc0582
--- a/Strategie/Strategie.cpp Fri May 21 16:19:18 2021 +0000 +++ b/Strategie/Strategie.cpp Mon May 31 13:36:03 2021 +0000 @@ -49,6 +49,7 @@ //unsigned char FIFO_ecriture=0; //Position du fifo pour la reception CAN int flagSendCan=1; unsigned char Cote = 0; //0 -> JAUNE | 1 -> VIOLET +unsigned char Hauteur = 0; unsigned short angleRecalage = 0; unsigned char checkCurrent = 0; unsigned char countAliveCard = 0; @@ -101,8 +102,8 @@ unsigned short id_check[NOMBRE_CARTES]= {CHECK_MOTEUR,CHECK_BALISE}; unsigned short id_alive[NOMBRE_CARTES]= {ALIVE_MOTEUR,ALIVE_BALISE}; -InterruptIn jack(PG_11); // entrée numerique en interruption pour le jack (JackB1 sur la carte esclave) - +InterruptIn jackB1(PG_11); // entrée numerique en interruption pour le jack (JackB1 sur la carte esclave) +InterruptIn jackA1(PA_6); @@ -264,8 +265,10 @@ } //tactile_printf("Attente du JACK."); setAsservissementEtat(1);//On réactive l'asservissement - jack.mode(PullDown); // désactivation de la résistance interne du jack - jack.fall(&jack_ISR); // création de l'interrupt attachée au changement d'état (front descendant) sur le jack + jackB1.mode(PullDown); // désactivation de la résistance interne du jack + jackB1.fall(&jack_ISR); // création de l'interrupt attachée au changement d'état (front descendant) sur le jack + jackA1.mode(PullDown); // désactivation de la résistance interne du jack + jackA1.fall(&jack_ISR); // création de l'interrupt attachée au changement d'état (front descendant) sur le jack localData2 = POSITION_DEBUT_T; localData3 = POSITION_DEBUT_Y; @@ -286,7 +289,11 @@ SendRawId(RECALAGE_START); waitingAckID = ASSERVISSEMENT_RECALAGE; waitingAckFrom = ACKNOWLEDGE_MOTEUR; - GoStraight(3000, 1, MOITIEE_ROBOT, 0); //on se recale contre le mur donc il faut donner la valeur du centre du robot (les -5 qui trainent sont dus au tables pourraves sur place) + if(Hauteur==0) + localData3=2000-(MOITIEE_ROBOT); + else + localData3=MOITIEE_ROBOT; + GoStraight(1000, 1, localData3, 0); //on se recale contre le mur donc il faut donner la valeur du centre du robot (les -5 qui trainent sont dus au tables pourraves sur place) while(waitingAckID !=0 && waitingAckFrom !=0) canProcessRx(); waitingAckID_FIN=ASSERVISSEMENT_RECALAGE; @@ -312,11 +319,11 @@ case TOURNER: waitingAckID = ASSERVISSEMENT_ROTATION; waitingAckFrom = ACKNOWLEDGE_MOTEUR; - if(Cote==0) { - localData2 = 900; - } else { - localData2=-900; - } + if(Cote==0 && Hauteur==1) localData2 = 900; + else if(Cote == 0 && Hauteur==0 )localData2=-900; + else if(Cote==1 && Hauteur==1 )localData2=-900; + else if(Cote==1 && Hauteur==0 )localData2=900; + Rotate(localData2); while(waitingAckID !=0 && waitingAckFrom !=0) canProcessRx(); @@ -335,7 +342,7 @@ } else { localData3=MOITIEE_ROBOT; } - GoStraight(3000, 2,localData3, 0); //on se recale contre le mur donc il faut donner la valeur du centre du robot + GoStraight(1000, 2,localData3, 0); //on se recale contre le mur donc il faut donner la valeur du centre du robot while(waitingAckID !=0 && waitingAckFrom !=0) canProcessRx(); waitingAckID_FIN=ASSERVISSEMENT_RECALAGE; @@ -398,7 +405,8 @@ gameTimer.start(); } gameTimer.reset(); - jack.fall(NULL);//On désactive l'interruption du jack + jackB1.fall(NULL);//On désactive l'interruption du jack + jackA1.fall(NULL);//On désactive l'interruption du jack //SendRawId(GLOBAL_START); Jack=0; //à envoyer sur le CAN et en direct pour l'automate de l'ihm ou sur CANV //tactile_printf("Start");//Pas vraiment utile mais bon @@ -674,7 +682,7 @@ waitingAckID = ASSERVISSEMENT_RECALAGE; waitingAckFrom = ACKNOWLEDGE_MOTEUR; - localData2 = (((instruction.direction == FORWARD)?1:-1)*3000);//On indique une distance de 3000 pour etre sur que le robot va ce recaler + localData2 = (((instruction.direction == FORWARD)?1:-1)*1000);//On indique une distance de 3000 pour etre sur que le robot va ce recaler if(instruction.precision == RECALAGE_Y) { localData5 = 2;