Programme carte strategie (disco)

Dependencies:   mbed SerialHalfDuplex SDFileSystem DISCO-F469NI_portrait liaison_Bluetooth ident_crac

Revision:
58:faef8d1b8ed8
Parent:
55:1e3dab1f90f4
--- a/Strategie/Strategie.cpp	Thu May 23 10:16:44 2019 +0000
+++ b/Strategie/Strategie.cpp	Thu May 23 13:22:02 2019 +0000
@@ -10,11 +10,12 @@
 #define VERT 0xFF00FF00
 #define ROUGE 0xFFFF0000
 #define BLEU 0xFF0000FF
-#define JAUNE 0xFFFEFE00
+#define JAUNE 0xFFFDD835//FEFE00
 #define BLANC 0xFF000000
 #define ORANGE 0xFFFFA500
 #define NOIR 0xFF000000
 #define DIY_GREY 0xFFDFDFDF
+#define VIOLET 0xFF4527A0
 
 char tableau_aff[10][50];
 char tableau_etat[22][50]= {
@@ -124,6 +125,8 @@
 /////////////////DEFINITION DES BOUTONS////////////////////
 Button COTE_VERT(0, 25, 400, 300, "JAUNE");
 Button COTE_ORANGE(0, 350, 400, 300, "VIOLET");
+Button COTE_JAUNE(0, 25, 400, 300, "JAUNE");
+Button COTE_VIOLET(0, 350, 400, 300, "VIOLET");
 Button RETOUR  (0, 680, 400, 110, "--Precedent--");
 Button LANCER  (0, 200, 400, 200, "--LANCER--");
 Button CHECK (0, 420, 400, 200, "Valider");
@@ -790,14 +793,14 @@
             lcd.SetTextColor(LCD_COLOR_BLACK);
 
             lcd.DisplayStringAt(70, LINE(0), (uint8_t *)"Choisir le cote", LEFT_MODE);
-            COTE_VERT.Draw(LCD_COLOR_YELLOW, 0);
-            COTE_ORANGE.Draw(LCD_COLOR_DARKMAGENTA, 0);
+            COTE_JAUNE.Draw(JAUNE , 0);
+            COTE_VIOLET.Draw(VIOLET , 0);
             RETOUR.Draw(LCD_COLOR_RED, 0);
 
 
             while (etat == SELECT_SIDE) {
                 canProcessRx();
-                if(COTE_VERT.Touched()) {
+                if(COTE_JAUNE.Touched()) {
                     Cote = 0x0;
                     InversStrat = Cote;
                     etat = TACTIQUE;
@@ -808,11 +811,11 @@
                     trame_Tx.id=CHOICE_COLOR;
                     trame_Tx.data[0]=Cote;
                     can2.write(trame_Tx);
-                    while(COTE_VERT.Touched());
+                    while(COTE_JAUNE.Touched());
 
                 }
 
-                if(COTE_ORANGE.Touched()) {
+                if(COTE_VIOLET.Touched()) {
                     Cote = 0x1;
                     InversStrat= Cote;
                     etat = TACTIQUE;
@@ -823,7 +826,7 @@
                     trame_Tx.id=CHOICE_COLOR;
                     trame_Tx.data[0]=Cote;
                     can2.write(trame_Tx);
-                    while(COTE_ORANGE.Touched());
+                    while(COTE_VIOLET.Touched());
                 }
 
                 if(RETOUR.Touched()) {
@@ -836,11 +839,11 @@
 
         case TACTIQUE : //AFFICHE LA LISTE DES STRATS AFIN DE SELECTIONNER CELLE VOULUE
             if (Cote == 0) {
-                lcd.Clear(VERT);
-                lcd.SetBackColor(VERT);
+                lcd.Clear(JAUNE);
+                lcd.SetBackColor(JAUNE);
             } else if (Cote == 1) {
-                lcd.Clear(ORANGE);
-                lcd.SetBackColor(ORANGE);
+                lcd.Clear(VIOLET);
+                lcd.SetBackColor(VIOLET);
             } else {
                 lcd.Clear(BLEU);
                 lcd.SetBackColor(BLEU);
@@ -1315,7 +1318,7 @@
 
                     break;
                 case MV_TURN: //Rotation sur place
-                    if(instruction.direction == RELATIVE) {
+                    /*if(instruction.direction == RELATIVE) {
                         localData2 = instruction.arg3;
                     } else {//C'est un rotation absolu, il faut la convertir en relative
                         localData2 = instruction.arg3;
@@ -1330,7 +1333,26 @@
                     }
                     if(InversStrat == 1 && ingnorInversionOnce == 0) {
                         localData2 = -localData2;
+                    }*/
+                    
+                   
+                    localData2 = instruction.arg3; 
+                    
+                    if(InversStrat == 1 && ingnorInversionOnce == 0)
+                    {
+                        localData2 = -localData2;
                     }
+                        
+                    if(instruction.direction == ABSOLUTE)
+                    {//C'est un rotation absolu, il faut la convertir en relative
+                        
+                        localData2 = (localData2 - theta_robot)%3600;
+                        if(localData2 > 1800) localData2 = localData2-3600;
+                        
+                        else if(localData2 <-1800) localData2 = localData2+3600;
+                    }
+                    
+                    
                     waitingAckID = ASSERVISSEMENT_ROTATION;
                     waitingAckFrom = ACKNOWLEDGE_MOTEUR;
                     Rotate(localData2);