Programme carte strategie (disco)
Dependencies: mbed SerialHalfDuplex SDFileSystem DISCO-F469NI_portrait liaison_Bluetooth ident_crac
Diff: Strategie/Strategie.cpp
- 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);