code avec la sortie d'évitement en plus géré par un ticker, ce code et le code "avec_modifs" buggent en match avec seulement la stratégie agressive.

Dependencies:   mbed SerialHalfDuplex SDFileSystem liaison_Bluetooth ident_crac DISCO-F469NI_portrait

Revision:
7:44eec996a76e
Parent:
5:81aac085516f
Child:
10:1964bb91b925
--- a/Strategie/Strategie.cpp	Fri Jan 31 15:12:18 2020 +0000
+++ b/Strategie/Strategie.cpp	Mon Feb 03 10:07:50 2020 +0000
@@ -82,7 +82,6 @@
 signed short x_robot,y_robot,theta_robot;//La position du robot
 signed short target_x_robot, target_y_robot, target_theta_robot;
 E_InstructionType actionPrecedente;
-signed short start_move_x,start_move_y,start_move_theta;//La position du robot lors du début d'un mouvement, utilisé pour reprendre le mouvement apres stop balise
 //unsigned char FIFO_ecriture=0; //Position du fifo pour la reception CAN
 int flagSendCan=1;
 unsigned char Cote = 0; //0 -> JAUNE | 1 -> VIOLET
@@ -119,7 +118,7 @@
 float cptf;
 int cpt,cpt1;
 
-typedef enum {INIT, ATT, CHOIX, DEMO, TEST_TELEMETRE, TEST_CAPTEURS, TEST_SERVO, TEST_TIR, DEMO_IMMEUBLE,DEMO_TRIEUR, SELECT_SIDE, TACTIQUE, DETAILS,LECTURE, LAUNCH, AFF_WAIT_JACK, WAIT_JACK, COMPTEUR, FIN} T_etat;
+typedef enum {INIT, ATT, CHOIX, DEMO, TEST_TELEMETRE, TEST_COULEUR, TEST_SERVO_BRAS, TEST_VENTOUSE, SELECT_SIDE, TACTIQUE, DETAILS,LECTURE, LAUNCH, AFF_WAIT_JACK, WAIT_JACK, COMPTEUR, FIN} T_etat;
 T_etat etat = INIT;
 E_stratGameEtat     gameEtat  = ETAT_CHECK_CARTES;
 E_stratGameEtat     memGameEtat= gameEtat;
@@ -127,8 +126,6 @@
 E_Stratposdebut etat_pos=RECALAGE_1;
 
 /////////////////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--");
@@ -136,33 +133,19 @@
 Button CHECK (0, 420, 400, 200, "Valider");
 Button MATCH (0, 50, 400, 320, "Match");
 Button DEMONSTRATION (0, 400, 400, 320, "Demo");
-Button TEST_HERKULEX(0, 25, 400, 100, "Test servos");
-Button TEST_LASER(0, 135, 400, 100, "Test telemetre");
-Button TEST_COULEURS(0,245,400,100,"Test capteurs");
-Button TEST_TIR_BALLE(0,355,400,100,"Test Lanceur");
-Button TEST_IMMEUBLE(0,465,400,100,"Test immeuble");
-Button TEST_TRIEUR(0,575,400,100,"Test aiguilleur");
-Button TIR_CHATEAU(0, 25, 400, 100, "Tir chateau");
-Button EPURATION(0, 150, 400, 100, "epuration");
-Button LANCEUR_ON(0,275,400,100,"allumer le lanceur");
-Button LANCEUR_OFF(0,400,400,100,"eteindre le lanceur");
-Button ABAISSE_BLOC(0, 25, 400, 100, "Ramasser blocs");
-Button RELEVE_BLOC(0, 135, 400, 100, "lacher blocs");
-Button BRAS_ABEILLE_ON(0,245,400,100,"bras abeille");
-Button BRAS_ABEILLE_OFF(0,355,400,100,"baisser bras abeille");
-Button INTERRUPTEUR_ON(0,465,400,100,"baisser bras interrupt");
-Button INTERRUPTEUR_OFF(0,575,400,100,"baisser bras interrupt");
+
+Button TEST_VENT(0, 25, 400, 100, "Test ventouses");
+Button TEST_TELE(0, 135, 400, 100, "Test telemetre");
+Button TEST_COUL(0,245,400,100,"Test capteurs couleur");
+Button TEST_BRAS(0,355,400,100,"Test Bras");
+
+Button TEST_BRAS_GABARIT(0,25,400,100,"Test Gabarit");
+Button TEST_BRAS_GABARITD(0,135,400,100,"Test Gabarit deploye");
+Button TEST_BRAS_PRESENTOIR(0,245,400,100,"Test Presentoir");
+
+
 Button FORCE_LAUNCH(0, 50, 400, 320, "Force Launch");
-Button TRI(0, 25, 400, 100, "Test tri");
-Button AIGUILLEUR_D(0, 150, 400, 100, "aiguilleur droite");
-Button AIGUILLEUR_G(0,275,400,100,"aiguilleur gauche");
-Button AIGUILLEUR_CTRE(0,400,400,100,"aiguilleur centre");
 Button SUIVANT(0,380,200,100,"Suivant");
-Button COLOR_ORANGE (0, 230, 190, 110,"");
-Button COLOR_JAUNE (210, 230, 190, 110,"");
-Button COLOR_VERT (0, 350, 190, 110,"");
-Button COLOR_BLEU (210, 350, 190, 110,"");
-Button COLOR_NOIR (105, 470, 190, 110,"");
 ////////////////////////////////////////////////////////////
 
 void SendRawId (unsigned short id);
@@ -407,140 +390,88 @@
             break;
 
         case DEMO :
-            lcd.Clear(LCD_COLOR_WHITE);
+            lcd.Clear (LCD_COLOR_WHITE);
+            lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"DEMO", LEFT_MODE);
             RETOUR.Draw(0xFFFF0000, 0);
-            TEST_HERKULEX.Draw(VERT, 0);
-            TEST_LASER.Draw(VERT, 0);
-            TEST_COULEURS.Draw(VERT, 0);
-            TEST_TIR_BALLE.Draw(VERT, 0);
-            TEST_IMMEUBLE.Draw(VERT,0);
-            TEST_TRIEUR.Draw(VERT,0);
-            if(gameEtat == ETAT_CONFIG) {//C'est bon on a le droit de modifier les config//
-                InversStrat = 0;//Pas d'inversion de la couleur
-            }
-            while (etat == DEMO) {      ////////////////////////////LISTE DES DIFFERENTES DEMOS POSSIBLES///////////////////////////////////////////
+            TEST_VENT.Draw(VERT, 0);
+            TEST_TELE.Draw(VERT, 0);
+            TEST_COUL.Draw(VERT, 0);
+            TEST_BRAS.Draw(VERT, 0);
+            while (etat == DEMO) {
                 canProcessRx();
-                if(TEST_HERKULEX.Touched()) {
-                    //Strat = 0x10;
-                    while(TEST_HERKULEX.Touched());
-                    CANMessage trame_Tx = CANMessage();
-                    trame_Tx.len = 1;
-                    trame_Tx.format = CANStandard;
-                    trame_Tx.type = CANData;
-                    trame_Tx.id=CHOICE_COLOR;
-                    trame_Tx.data[0]=0x2;
-                    can2.write(trame_Tx);
-                    TEST_HERKULEX.Draw(0xFFF0F0F0, 0);
-                    etat = TEST_SERVO;
-                    lcd.Clear(LCD_COLOR_WHITE);
-                    ModeDemo=1;
-                } else if(TEST_LASER.Touched()) {
-                    //Strat = 0x11;
-                    while(TEST_LASER.Touched());
-                    TEST_LASER.Draw(0xFFF0F0F0, 0);
+                if(TEST_VENT.Touched()) {
+                    while(TEST_VENT.Touched());
+                    etat = TEST_VENTOUSE;
+                } else if(TEST_TELE.Touched()) {
+                    while(TEST_TELE.Touched());
                     etat = TEST_TELEMETRE;
-                } else if (TEST_COULEURS.Touched()) {
-                    while(TEST_COULEURS.Touched());
-                    TEST_LASER.Draw(0xFFF0F0F0, 0);
-                    etat =TEST_CAPTEURS ;
-                }
-
-                else if (TEST_TIR_BALLE.Touched()) {
-                    while(TEST_TIR_BALLE.Touched());
-                    while(1) {
-                        TEST_TIR_BALLE.Draw(0xFFF0F0F0, 0);
-                        // rn42_Tx.printf("A");//experience
-                        liaison_Tx.envoyer_short(0x30,666);
-                        pc.printf("data\r");
-
-                    }
-                    //ModeDemo=1;
-                } else if(TEST_IMMEUBLE.Touched()) {
-                    while(TEST_IMMEUBLE.Touched());
-                    TEST_IMMEUBLE.Draw(0xFFF0F0F0, 0);
-                    etat =DEMO_IMMEUBLE;
-                    lcd.Clear(LCD_COLOR_WHITE);
-                } else if(TEST_TRIEUR.Touched()) {
-                    while(TEST_TRIEUR.Touched());
-                    etat=DEMO_TRIEUR;
-                    lcd.Clear(LCD_COLOR_WHITE);
-                }
-                if(RETOUR.Touched()) {
+                } else if (TEST_COUL.Touched()) {
+                    while(TEST_COUL.Touched());
+                    etat =TEST_COULEUR ;
+                } else if (TEST_BRAS.Touched()) {
+                    while(TEST_BRAS.Touched());
+                    etat =TEST_SERVO_BRAS ;
+                } else if(RETOUR.Touched()) {
+                    while(RETOUR.Touched());
                     etat = CHOIX;
-                    while(RETOUR.Touched());
-
-                }
-                if(gameEtat == ETAT_CONFIG) {//C'est bon on a le droit de modifier les config
-                    Ack_strat = 1;
-                    wait_ms(10);
                 }
             }
             break;
 
 
-        case TEST_SERVO:        //TEST DU RESTE DES SERVOS DISPO HORS TIR
-            lcd.SetBackColor(LCD_COLOR_WHITE);
-            lcd.DisplayStringAt(20, LINE(2), (uint8_t *)"DEMONSTRATION COURS", LEFT_MODE);
-            ABAISSE_BLOC.Draw(VERT, 0);
-            RELEVE_BLOC.Draw(VERT, 0);
-            BRAS_ABEILLE_ON.Draw(VERT, 0);
-            BRAS_ABEILLE_OFF.Draw(VERT, 0);
-            INTERRUPTEUR_ON.Draw(VERT, 0);
-            INTERRUPTEUR_OFF.Draw(VERT, 0);
+        case TEST_VENTOUSE:      
+            lcd.Clear (LCD_COLOR_WHITE);
+            lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"Test Ventouse", LEFT_MODE);
             RETOUR.Draw(0xFFFF0000,0);
-            while(etat==TEST_SERVO) {
+            while(etat==TEST_VENTOUSE) {
+                if(RETOUR.Touched()) {
+                    while (RETOUR.Touched());
+                    etat=DEMO;
+                } 
+            }
+            break;
+            
+        case TEST_SERVO_BRAS:      
+            lcd.Clear (LCD_COLOR_WHITE);
+            lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"Test Bras", LEFT_MODE);
+            RETOUR.Draw(0xFFFF0000,0);
+            TEST_BRAS_PRESENTOIR.Draw(BLEU, BLANC);
+            TEST_BRAS_GABARIT.Draw(BLEU, BLANC);
+            TEST_BRAS_GABARITD.Draw(BLEU, BLANC);
+            while(etat==TEST_SERVO_BRAS) {
                 if(RETOUR.Touched()) {
                     while (RETOUR.Touched());
                     etat=DEMO;
-                } else if(ABAISSE_BLOC.Touched()) {
-                    while (ABAISSE_BLOC.Touched());
-                    SendRawId(GABARIT_PETIT_ROBOT);
-                    break;
-                } else if(RELEVE_BLOC.Touched()) {
-                    while (RELEVE_BLOC.Touched());
-                    SendRawId(PRESENTOIR_AVANT);
-                    break;
-                } else if(BRAS_ABEILLE_ON.Touched()) {
-                    while (BRAS_ABEILLE_ON.Touched());
-                    //SendRawId(BRAS_ABEILLE_UP);
-                    break;
-
-                } else if(BRAS_ABEILLE_OFF.Touched()) {
-                    while (BRAS_ABEILLE_OFF.Touched());
-                    //SendRawId(BRAS_ABEILLE_DOWN);
-                    break;
-                } else if(INTERRUPTEUR_ON.Touched()) {
-                    while (INTERRUPTEUR_ON.Touched());
-                    //SendRawId(ALLUMER_PANNEAU_UP);
-                    break;
-                } else if(INTERRUPTEUR_OFF.Touched()) {
-                    while (INTERRUPTEUR_OFF.Touched());
-                    //SendRawId(ALLUMER_PANNEAU_DOWN);
-                    break;
+                } else if(TEST_BRAS_PRESENTOIR.Touched()) {
+                    while (TEST_BRAS_PRESENTOIR.Touched());
+                    SendRawId(PRESENTOIR);
+                } else if(TEST_BRAS_GABARIT.Touched()) {
+                    while (TEST_BRAS_GABARIT.Touched());
+                    SendRawId(GABARIT);
+                } else if(TEST_BRAS_GABARITD.Touched()) {
+                    while (TEST_BRAS_GABARITD.Touched());
+                    SendRawId(GABARIT_D);
                 }
             }
             break;
-
-        case TEST_TIR:  // TEST DES FONCTIONS LIEES AUX TIRS
-            lcd.SetBackColor(LCD_COLOR_WHITE);
-            lcd.DisplayStringAt(20, LINE(2), (uint8_t *)"DEMONSTRATION COURS", LEFT_MODE);
-            TIR_CHATEAU.Draw(VERT, 0);
-            EPURATION.Draw(VERT, 0);
-            LANCEUR_ON.Draw(VERT, 0);
-            LANCEUR_OFF.Draw(VERT, 0);
-            RETOUR.Draw(ROUGE, 0);
-
-            etat=DEMO;
-
+        
+        case TEST_COULEUR:      
+            lcd.Clear (LCD_COLOR_WHITE);
+            lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"Test Couleur", LEFT_MODE);
+            RETOUR.Draw(0xFFFF0000,0);
+            while(etat==TEST_COULEUR) {
+                if(RETOUR.Touched()) {
+                    while (RETOUR.Touched());
+                    etat=DEMO;
+                    lcd.Clear (LCD_COLOR_WHITE);
+                } 
+            }
             break;
 
-
-
         case TEST_TELEMETRE:    //AFFICHAGE DE LA VALEUR LUE PAR LES 4 TELEMETRES
             ModeDemo=1;
-            lcd.Clear(LCD_COLOR_WHITE);
-            lcd.SetBackColor(LCD_COLOR_WHITE);
-            lcd.DisplayStringAt(20, LINE(2), (uint8_t *)"DEMONSTRATION COURS", LEFT_MODE);
+            lcd.Clear (LCD_COLOR_WHITE);
+            lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"Test Telemetre", LEFT_MODE);
             RETOUR.Draw(0xFFFF0000, 0);
             while(etat==TEST_TELEMETRE) {
                 SendRawId(DATA_RECALAGE);
@@ -550,7 +481,7 @@
                 if(RETOUR.Touched()) {
                     while( RETOUR.Touched());
                     etat=DEMO;
-                    lcd.Clear(LCD_COLOR_WHITE);
+                    ModeDemo=0;
                 }
             }
             break;      ///////////////////////////////////////////FIN DES DEMOS/////////////////////////////////////////////////
@@ -841,7 +772,7 @@
             SendRawId(GLOBAL_START);
 
             gameEtat = ETAT_GAME_WAIT_FOR_JACK;
-            if (etat == TEST_TELEMETRE|| etat ==TEST_CAPTEURS || etat == TEST_SERVO || etat ==TEST_TIR || etat == DEMO_IMMEUBLE) {
+            if (etat == TEST_TELEMETRE|| etat ==TEST_VENTOUSE || etat == TEST_COULEUR || etat ==TEST_SERVO_BRAS) {
                 SendRawId(DEBUG_FAKE_JAKE);
             } else {
                 etat = AFF_WAIT_JACK;