Programme carte strategie (disco)

Dependencies:   mbed SerialHalfDuplex SDFileSystem DISCO-F469NI_portrait liaison_Bluetooth ident_crac

Revision:
40:21bb685b553b
Parent:
38:76f886a1c8e6
Child:
41:b029ddc4d60e
--- a/Strategie/Strategie.cpp	Wed May 09 19:36:42 2018 +0000
+++ b/Strategie/Strategie.cpp	Thu May 10 18:49:25 2018 +0000
@@ -67,8 +67,8 @@
 char counter = 0;
 char check;
 char Jack = 1;
-short SCORE_GLOBAL=10;
-short SCORE_GR=0;
+short SCORE_GLOBAL=0;
+short SCORE_GR=20;
 short SCORE_PR=0;
 
 int flag = 0, flag_strat = 0, flag_timer;
@@ -198,11 +198,6 @@
     SendRawId(GLOBAL_GAME_END);//Indication fin de match
     etat=FIN;
     gameTimer.stop();//Arret du timer
-
-#ifdef ROBOT_BIG
-    wait_ms(2000);
-    doFunnyAction();
-#endif
     
     while(1);//On bloque la programme dans l'interruption
 }
@@ -296,7 +291,7 @@
         ligne=0;
     char aff[10]="toto";
     sprintf(aff,"%lf ",Var);
-    lcd.DisplayStringAt(120, LINE(15+(ligne)), (uint8_t *)aff, LEFT_MODE);
+    lcd.DisplayStringAt(120, LINE(20+(ligne)), (uint8_t *)aff, LEFT_MODE);
     //ligne++;
     
 }
@@ -965,7 +960,7 @@
             if(cpt != cpt1){
                 lcd.Clear(VERT);
                // affichage_compteur(100-cpt);
-                affichage_compteur(SCORE_PR);
+                //affichage_compteur(SCORE_PR);
                 #ifdef ROBOT_BIG
                     affichage_var(SCORE_GR);
                 #else 
@@ -991,10 +986,12 @@
             lcd.Clear (LCD_COLOR_WHITE);
             lcd.SetBackColor(LCD_COLOR_WHITE);
             #ifdef ROBOT_BIG
-                affichage_compteur(SCORE_GR);
-                liaison_Tx.envoyer_short(PAQUET_IDENTIFIANT_FINMATCH,SCORE_GLOBAL);
+               // affichage_compteur(SCORE_GR);
+                affichage_var(SCORE_GR);
+                //liaison_Tx.envoyer_short(PAQUET_IDENTIFIANT_FINMATCH,SCORE_GLOBAL);
             #else 
-                affichage_compteur(SCORE_PR);
+                //affichage_compteur(SCORE_PR);
+                affichage_var(SCORE_PR);
             #endif
             while(1); // force le redemarage du robot  
             //break;
@@ -1158,7 +1155,7 @@
                         #ifdef ROBOT_SMALL
                         GoStraight(3000, 1,MOITIEE_ROBOT-5, 0);  //on se recale contre le mur donc il faut donner la valeur du centre du robot
                         #else
-                        GoStraight(-3000, 1,MOITIEE_ROBOT, 0);
+                        GoStraight(-3000, 1,MOITIEE_ROBOT-5, 0);
                         #endif
                         while(waitingAckID !=0 && waitingAckFrom !=0)
                             canProcessRx();
@@ -1209,7 +1206,7 @@
                         waitingAckID = ASSERVISSEMENT_RECALAGE;
                         waitingAckFrom = ACKNOWLEDGE_MOTEUR; 
                         if(Cote==1)
-                            localData3=3000-MOITIEE_ROBOT;    
+                            localData3=3000-(MOITIEE_ROBOT-5);    
                         else
                             localData3=MOITIEE_ROBOT;
                         #ifdef ROBOT_SMALL
@@ -1546,9 +1543,16 @@
                     }
                 } 
                 else if(instruction.nextActionType == WAIT) {   ///Actualisation des waiting ack afin d'attendre la fin des actions
-                    SetOdometrie(0x28, x_robot, y_robot, theta_robot);
-                     gameEtat = ETAT_GAME_WAIT_END_INSTRUCTION;
-                     switch(instruction.order)
+                    wait_ms(200);
+                    #ifdef ROBOT_BIG
+                        SetOdometrie(ODOMETRIE_BIG_POSITION, x_robot, y_robot, theta_robot);
+                    #else
+                        SetOdometrie(ODOMETRIE_SMALL_POSITION, x_robot, y_robot, theta_robot);
+                    #endif
+                    wait_ms(200);
+                    
+                    gameEtat = ETAT_GAME_WAIT_END_INSTRUCTION;
+                    switch(instruction.order)
                     {
                         case MV_COURBURE:
                             waitingAckID_FIN = ASSERVISSEMENT_COURBURE;
@@ -1671,9 +1675,7 @@
         case ETAT_WARNING_TIMEOUT://Attente de la trame fin de danger ou du timeout de 2s
             if(timeoutWarning.read_ms() >= BALISE_TIMEOUT)//ça fait plus de 2s, il faut changer de stratégie
             {
-                if(instruction.nextLineOK == instruction.nextLineError)                
-                    gameEtat = ETAT_EVITEMENT;
-                else
+                if(instruction.nextLineOK != instruction.nextLineError)
                 {
                     actual_instruction = instruction.nextLineError;
                     gameEtat = ETAT_GAME_LOAD_NEXT_INSTRUCTION;
@@ -1697,6 +1699,14 @@
 #endif      
             gameEtat = ETAT_END;*/
             
+            wait_ms(200);
+            #ifdef ROBOT_BIG
+                SetOdometrie(ODOMETRIE_BIG_POSITION, x_robot, y_robot, theta_robot);
+            #else
+                SetOdometrie(ODOMETRIE_SMALL_POSITION, x_robot, y_robot, theta_robot);
+            #endif
+            wait_ms(200);
+            
             switch(actionPrecedente){
                 case MV_LINE:
                 
@@ -2213,7 +2223,7 @@
     dizaine = nombre/10;
     unite = nombre-(10*dizaine);
     print_segment(unite,-50);
-    print_segment(dizaine,125);
+    print_segment(dizaine,100);
     if(centaine!=0){
         print_segment(centaine,350);
     }