code avec modifs, programme mit dans les robots pour les derniers matchs

Dependencies:   mbed SerialHalfDuplex SDFileSystem liaison_Bluetooth ident_crac DISCO-F469NI_portrait

Files at this revision

API Documentation at this revision

Comitter:
gabrieltetar
Date:
Tue Mar 03 16:41:33 2020 +0000
Parent:
9:5c8be2a80d35
Child:
11:848ea39838bf
Commit message:
restructred demo menu - features added

Changed in this revision

Debug/debug.cpp Show annotated file Show diff for this revision Revisions of this file
Debug/debug.h Show annotated file Show diff for this revision Revisions of this file
Evitement/Evitement.cpp Show annotated file Show diff for this revision Revisions of this file
Globals/ident_crac.lib Show annotated file Show diff for this revision Revisions of this file
Robots/Strategie_big.cpp Show annotated file Show diff for this revision Revisions of this file
Robots/Strategie_small.cpp Show annotated file Show diff for this revision Revisions of this file
Strategie/Strategie.cpp Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/Debug/debug.cpp	Mon Feb 10 08:07:17 2020 +0000
+++ b/Debug/debug.cpp	Tue Mar 03 16:41:33 2020 +0000
@@ -1,6 +1,13 @@
 #include "global.h"
 
-
+//debug audio
+void Debug_Audio(unsigned char repertoire, unsigned char track){
+    unsigned char data[3];
+    data[0]=0x01;
+    data[1]=repertoire;
+    data[2]=track;
+    SendMsgCan(SOMO, data,3);
+}
 //azezaea
 
 void debug_Instruction(struct S_Instruction instruction)
--- a/Debug/debug.h	Mon Feb 10 08:07:17 2020 +0000
+++ b/Debug/debug.h	Tue Mar 03 16:41:33 2020 +0000
@@ -2,7 +2,7 @@
 #define CRAC_DEBUG
 //debug
 #include "global.h"
-
+void Debug_Audio(unsigned char repertoire, unsigned char track);
 void debug_Instruction(struct S_Instruction instruction);
 
 char* InstructionTypeToString(enum E_InstructionType type);
--- a/Evitement/Evitement.cpp	Mon Feb 10 08:07:17 2020 +0000
+++ b/Evitement/Evitement.cpp	Tue Mar 03 16:41:33 2020 +0000
@@ -38,7 +38,7 @@
     signed char fin_angle_detection;
     signed char debut_angle_detection;
     float angle_moyen_balise_IR = 0.0;
-    
+    Debug_Audio(3,2);
     //on recupere l'info d'angle de detection--------------------------------------
     if(msgRxBuffer[FIFO_lecture].data[0]!=0) { //data balise Petit Robot Detecte
         fin_angle_detection = msgRxBuffer[FIFO_lecture].data[0] & 0x0F;
@@ -74,6 +74,7 @@
 /* DESCRIPTION  : FIFO -> BALISE_END_DANGER                                             */
 /****************************************************************************************/
 unsigned short balise_end_danger(S_Instruction* instruction,S_Dodge_queue* dodgeq, E_stratGameEtat* gameEtat, signed short target_x_robot, signed short target_y_robot, signed short target_theta_robot, signed short theta_robot,signed short x_robot,signed short y_robot){
+    Debug_Audio(3,1);
     switch(instruction->order){
         case MV_LINE:
             *gameEtat=ETAT_GAME_PROCESS_INSTRUCTION;
--- a/Globals/ident_crac.lib	Mon Feb 10 08:07:17 2020 +0000
+++ b/Globals/ident_crac.lib	Tue Mar 03 16:41:33 2020 +0000
@@ -1,1 +1,1 @@
-https://os.mbed.com/teams/CRAC-Team/code/ident_crac/#3d8d4041ce79
+https://os.mbed.com/teams/CRAC-Team/code/ident_crac/#b3e08bf1288d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Robots/Strategie_big.cpp	Tue Mar 03 16:41:33 2020 +0000
@@ -0,0 +1,305 @@
+#include "global.h"
+#ifdef ROBOT_BIG
+
+unsigned short x;
+unsigned short y;
+unsigned char isStopEnable = 1;//Permet de savoir si il faut autoriser le stop via les balises
+
+/****************************************************************************************/
+/* FUNCTION NAME: doFunnyAction                                                         */
+/* DESCRIPTION  : Permet de faire la funny action en fin de partie                      */
+/****************************************************************************************/
+void doFunnyAction(void)
+{
+    //envoie de la funny action
+    // 0x007, 01, 01
+    CANMessage msgTx=CANMessage();
+    msgTx.id=GLOBAL_FUNNY_ACTION;
+    msgTx.format=CANStandard;
+    msgTx.type=CANData;
+    msgTx.len=2;
+    msgTx.data[0]=0x01;
+    msgTx.data[1]=0x01;
+    can1.write(msgTx);
+}
+
+/****************************************************************************************/
+/* FUNCTION NAME: doAction                                                              */
+/* DESCRIPTION  : Effectuer une action specifique                                       */
+/****************************************************************************************/
+unsigned char doAction(unsigned char id, unsigned short var1, short var2)
+{
+    CANMessage msgTx=CANMessage();
+    msgTx.format=CANStandard;
+    msgTx.type=CANData;
+    //affichage_debug(id);
+
+    switch(id) {
+        /////////////////////////////////////////////////////////100 à 108 : ACTIONS HERKULEX/////////////////////////////////////////////
+        case 118:
+            SendRawId(VENTOUSE_AV_CENTRE_BALANCE);
+            break;
+
+        case 201:
+            unsigned char var_tempo;
+            var_tempo = (unsigned char)var1;//0auto 1forceon 2 forceoff
+            SendMsgCan(ASCENSEUR, &var_tempo,1);
+            waitingAckFrom = 0;
+            waitingAckID =0;
+            break;
+
+        case 202:
+            msgTx.id=VIDER_CONVOYEUR;
+            msgTx.len=1;
+            msgTx.data[0]=(unsigned char)var1; //
+            can2.write(msgTx);
+            break;
+
+        case 203:
+            x = var1;
+            if(InversStrat == 1) {
+                y = 3000 - var2;
+            } else {
+                y = var2;
+            }
+            Send2Short(GOLDENIUM_AVANT, x, y);
+            break;
+
+        case 204:
+            unsigned char arg_tempo;
+            if(InversStrat == 1) {
+                switch(var1) {
+                    case AV_DROIT:
+                        arg_tempo = AV_GAUCHE;
+                        break;
+                    case AV_GAUCHE:
+                        arg_tempo = AV_DROIT;
+                        break;
+                    default :
+                        arg_tempo =(unsigned char)var1;
+                        break;
+                }
+
+            } else arg_tempo =(unsigned char)var1;
+            SendMsgCan(HACHEUR_RELEASE_ATOM, &arg_tempo,1);
+            waitingAckFrom = 0;
+            waitingAckID =0;
+            break;
+
+        case 205:
+            SendRawId(PRESENTOIR_AVANT);
+            break;
+            
+        case 206:
+            SendMsgCan(RATEAU, (unsigned char*)&var1,1);
+            break;
+
+
+        case 150:
+            SCORE_GR+=var1;
+            SCORE_GLOBAL=SCORE_GR+SCORE_PR;
+            //liaison_Tx.envoyer_short(0x30,SCORE_GLOBAL);
+            waitingAckFrom = 0;
+            waitingAckID = 0;
+            break;
+
+
+        case 11://0 Désactiver le stop,1 Activer le stop saut de strat,2 Activer le stop avec evitement
+            isStopEnable =(unsigned char) var1;
+            // SendMsgCan(0x5BC, &isStopEnable,1);
+            waitingAckFrom = 0;
+            waitingAckID =0;
+            break;
+
+        case 20://Désactiver l'asservissement
+            setAsservissementEtat(0);
+            break;
+
+        case 21://Activer l'asservissement
+            setAsservissementEtat(1);
+            break;
+
+        case 22://Changer la vitesse du robot
+            SendSpeed(var1);
+            waitingAckFrom = 0;
+            waitingAckID = 0;
+            wait(0.2);
+            break;
+
+        case 23:
+            SendAccel((unsigned short)var1,(unsigned short)var2);//,(unsigned short)arg2, (unsigned short)arg2);
+            wait_us(200);
+            waitingAckFrom = 0;
+            waitingAckID = 0;
+            break;
+
+        case 30://Action tempo
+            wait_ms(var1);
+            waitingAckFrom = 0;
+            waitingAckID = 0;
+            break;
+
+
+
+        default:
+            return 0;//L'action n'existe pas, il faut utiliser le CAN
+
+    }
+    return 1;//L'action est spécifique.
+
+}
+
+/****************************************************************************************/
+/* FUNCTION NAME: initRobot                                                             */
+/* DESCRIPTION  : initialiser le robot                                                  */
+/****************************************************************************************/
+void initRobot(void)
+{
+    //Enregistrement de tous les AX12 présent sur la carte
+    /*AX12_register(5,  AX12_SERIAL2);
+    AX12_register(18, AX12_SERIAL2);
+    AX12_register(13, AX12_SERIAL2);
+    AX12_register(1,  AX12_SERIAL1);
+    AX12_register(11,  AX12_SERIAL1);
+    AX12_register(8,  AX12_SERIAL1);
+    AX12_register(7,  AX12_SERIAL2);*/
+
+    //AX12_setGoal(AX12_ID_FUNNY_ACTION, AX12_ANGLE_FUNNY_ACTION_CLOSE,AX12_SPEED_FUNNY_ACTION);
+    //AX12_processChange();
+    //runRobotTest();
+
+}
+
+/****************************************************************************************/
+/* FUNCTION NAME: initRobotActionneur                                                   */
+/* DESCRIPTION  : Initialiser la position des actionneurs du robot                      */
+/****************************************************************************************/
+void initRobotActionneur(void)
+{
+    /*doAction(100,1,0);
+    doAction(100,2,0);
+    doAction(110,0,0);
+    doAction(120,0,0);
+    doAction(131,0,0);*/
+
+}
+
+/****************************************************************************************/
+/* FUNCTION NAME: runTest                                                               */
+/* DESCRIPTION  : tester l'ensemble des actionneurs du robot                            */
+/****************************************************************************************/
+void runRobotTest(void)
+{
+    /*
+    int waitTime = 500;
+
+    //Test des AX12 dans l'ordre
+    doAction(111,0,0);//Fermeture pince arrière haute
+    wait_ms(waitTime);
+    doAction(110,0,0);//Ouverture pince arrière haute
+    wait_ms(waitTime);
+    doAction(113,0,0);//Fermeture pince arrière basse
+    wait_ms(waitTime);
+    doAction(112,0,0);//Ouverture pince arrière basse
+    wait_ms(waitTime);
+    doAction(115,0,0);//Fermeture porte arrière
+    wait_ms(waitTime);
+    doAction(114,0,0);//Ouverture porte arrière
+    wait_ms(waitTime);
+    doAction(101,0,0);//Fermer les portes avant
+    wait_ms(waitTime);
+    doAction(100,0,0);//Ouvrir les portes avant
+    wait_ms(waitTime);
+    doAction(103,0,0);//Descendre le peigne
+    wait_ms(waitTime);
+    doAction(102,0,0);//Remonter le peigne*/
+}
+
+/****************************************************************************************/
+/* FUNCTION NAME: SelectStrategy                                                        */
+/* DESCRIPTION  : Charger le fichier de stratégie correspondante à un id                */
+/* RETURN       : 0=> Erreur, 1=> OK si le fichier existe                               */
+/****************************************************************************************/
+/*int SelectStrategy(unsigned char id)
+{
+    switch(id)
+    {
+        // strat de match
+        case 1:
+            strcpy(cheminFileStart,"/local/strat1.txt");
+            return FileExists(cheminFileStart);
+        case 2:
+            strcpy(cheminFileStart,"/local/strat2.txt");
+            return FileExists(cheminFileStart);
+        case 3:
+            strcpy(cheminFileStart,"/local/strat3.txt");
+            return FileExists(cheminFileStart);
+        case 4:
+            strcpy(cheminFileStart,"/local/strat4.txt");
+            return FileExists(cheminFileStart);
+        case 5:
+            strcpy(cheminFileStart,"/local/strat5.txt");
+            return FileExists(cheminFileStart);
+        case 6:
+            strcpy(cheminFileStart,"/local/strat6.txt");
+            return FileExists(cheminFileStart);
+        case 7:
+            strcpy(cheminFileStart,"/local/strat7.txt");
+            return FileExists(cheminFileStart);
+        case 8:
+            strcpy(cheminFileStart,"/local/strat8.txt");
+            return FileExists(cheminFileStart);
+        case 9:
+            strcpy(cheminFileStart,"/local/strat9.txt");
+            return FileExists(cheminFileStart);
+        case 10:
+            strcpy(cheminFileStart,"/local/strat10.txt");
+            return FileExists(cheminFileStart);
+
+        // strat de demo
+        case 0x10:
+            strcpy(cheminFileStart,"/local/moteur.txt");
+            return FileExists(cheminFileStart);
+        case 0x11:
+#ifdef ROBOT_BIG
+            strcpy(cheminFileStart,"/local/bras.txt");
+#else
+            strcpy(cheminFileStart,"/local/porteAvant.txt");
+#endif
+            return FileExists(cheminFileStart);
+        case 0x12:
+#ifdef ROBOT_BIG
+            strcpy(cheminFileStart,"/local/balancier.txt");
+#else
+            strcpy(cheminFileStart,"/local/mainTourneuse.txt");
+#endif
+            return FileExists(cheminFileStart);
+        default:
+            strcpy(cheminFileStart,"/local/strat1.txt");
+            return 0;
+    }
+}*/
+
+/****************************************************************************************/
+/* FUNCTION NAME: needToStop                                                            */
+/* DESCRIPTION  : Savoir si il faut autoriser le stop du robot via balise               */
+/****************************************************************************************/
+unsigned char needToStop(void)
+{
+    return isStopEnable;
+}
+
+/****************************************************************************************/
+/* FUNCTION NAME: doBeforeEndAction                                                     */
+/* DESCRIPTION  : Terminer les actions du robot 1s avant la fin du match                */
+/****************************************************************************************/
+void doBeforeEndAction(void)
+{
+    doAction(110,0,0);//Ouverture pince arrière haute
+    doAction(112,0,0);//Ouverture pince arrière basse
+    doAction(114,0,0);//Ouverture porte arrière
+    doAction(100,0,0);//Ouvrir les portes avant
+    doAction(102,0,0);//Remonter le peigne
+}
+
+#endif
--- a/Robots/Strategie_small.cpp	Mon Feb 10 08:07:17 2020 +0000
+++ b/Robots/Strategie_small.cpp	Tue Mar 03 16:41:33 2020 +0000
@@ -1,5 +1,7 @@
 #include "global.h"
 
+#ifdef ROBOT_SMALL
+
 unsigned short distance_recalage;
 unsigned short distance_revenir;
 
@@ -229,3 +231,5 @@
 {
 
 }
+
+#endif
--- a/Strategie/Strategie.cpp	Mon Feb 10 08:07:17 2020 +0000
+++ b/Strategie/Strategie.cpp	Tue Mar 03 16:41:33 2020 +0000
@@ -118,7 +118,7 @@
 float cptf;
 int cpt,cpt1;
 
-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;
+typedef enum {INIT, ATT, CHOIX, DEMO, TEST_TELEMETRE, TEST_COULEUR, TEST_SERVO_BRAS, TEST_VENTOUSE, TEST_ELECTROV, 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;
@@ -133,15 +133,21 @@
 Button CHECK (0, 420, 400, 200, "Valider");
 Button MATCH (0, 50, 400, 320, "Match");
 Button DEMONSTRATION (0, 400, 400, 320, "Demo");
-
+//menu demo
 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 TEST_AUDIO(0,465,400,100,"Test Audio");
+Button TEST_ELECTRV(0,465,400,100,"Test Electro Vannes");
+//menu demo/demo/
+Button TEST_A(0,25,195,100,"A");
+Button TEST_B(205,25,195,100,"B");
+Button TEST_C(0,135,195,100,"C");
+Button TEST_D(205,135,195,100,"D");
+Button TEST_NUM(0,245,400,100,"Bras num");
+Button TEST_PLUS(205,355,195,100,"+");
+Button TEST_MOINS(0,355,195,100,"-");
 
 
 Button FORCE_LAUNCH(0, 50, 400, 320, "Force Launch");
@@ -275,7 +281,7 @@
 
 void Setflag(void)
 {
-    flagSendCan = 1;
+    flagSendCan = 1;//gab le zgeg
 }
 
 
@@ -325,7 +331,9 @@
 /****************************************************************************************/
 void automate_etat_ihm(void)
 {
+    char toto[2]; 
     int j;
+    unsigned char maximilien=1;
     if (j==0) {
         ts.Init(lcd.GetXSize(), lcd.GetYSize());
         j++;
@@ -390,6 +398,8 @@
             break;
 
         case DEMO :
+            lcd.SetBackColor(LCD_COLOR_WHITE);
+            lcd.SetTextColor(LCD_COLOR_BLACK);
             lcd.Clear (LCD_COLOR_WHITE);
             lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"DEMO", LEFT_MODE);
             RETOUR.Draw(0xFFFF0000, 0);
@@ -397,6 +407,8 @@
             TEST_TELE.Draw(VERT, 0);
             TEST_COUL.Draw(VERT, 0);
             TEST_BRAS.Draw(VERT, 0);
+            TEST_AUDIO.Draw(VERT, 0);
+            TEST_ELECTRV.Draw(VERT, 0);
             while (etat == DEMO) {
                 canProcessRx();
                 if(TEST_VENT.Touched()) {
@@ -405,12 +417,19 @@
                 } else if(TEST_TELE.Touched()) {
                     while(TEST_TELE.Touched());
                     etat = TEST_TELEMETRE;
+                } else if(TEST_ELECTRV.Touched()) {
+                    while(TEST_ELECTRV.Touched());
+                    etat = TEST_ELECTROV;
                 } 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(TEST_AUDIO.Touched()) {
+                    while(TEST_AUDIO.Touched());
+                    TEST_AUDIO.Draw(VERT, 0);
+                    Debug_Audio(3,2);
                 } else if(RETOUR.Touched()) {
                     while(RETOUR.Touched());
                     etat = CHOIX;
@@ -419,38 +438,210 @@
             break;
 
 
-        case TEST_VENTOUSE:      
+        case TEST_VENTOUSE:   
+            lcd.SetBackColor(LCD_COLOR_WHITE);
+            lcd.SetTextColor(LCD_COLOR_BLACK);
+            lcd.Clear (LCD_COLOR_WHITE);   
             lcd.Clear (LCD_COLOR_WHITE);
             lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"Test Ventouse", LEFT_MODE);
+            sprintf(toto,"%hd",maximilien);
+            lcd.DisplayStringAt(50, LINE(20), (unsigned char *)toto, LEFT_MODE);
             RETOUR.Draw(0xFFFF0000,0);
-            while(etat==TEST_VENTOUSE) {
+            TEST_A.Draw(BLEU, BLANC);
+            TEST_NUM.Draw(BLEU, BLANC);
+            TEST_PLUS.Draw(BLEU, BLANC);
+            TEST_MOINS.Draw(BLEU, BLANC);
+            while(etat==TEST_SERVO_BRAS) {
                 if(RETOUR.Touched()) {
                     while (RETOUR.Touched());
                     etat=DEMO;
-                } 
+                } else if(TEST_A.Touched()) {
+                    while (TEST_A.Touched());
+                    SendRawId(TEST_VENT_A);
+                    TEST_A.Draw(BLEU, BLANC);
+                }  else if(TEST_NUM.Touched()) {
+                    while (TEST_NUM.Touched());
+                    TEST_NUM.Draw(BLEU, BLANC);
+                    switch(maximilien){
+                    case 1:
+                    SendRawId(TEST_VENT_1);
+                    break;
+                    case 2:
+                    SendRawId(TEST_VENT_2);
+                    break;
+                    case 3:
+                    SendRawId(TEST_VENT_3);
+                    break;
+                    case 4:
+                    SendRawId(TEST_VENT_4);
+                    break;
+                    case 5:
+                    SendRawId(TEST_VENT_5);
+                    break;
+                    case 6:
+                    SendRawId(TEST_VENT_6);
+                    break;
+                    }
+                } else if(TEST_PLUS.Touched()) {
+                    while (TEST_PLUS.Touched());
+                    TEST_PLUS.Draw(BLEU, BLANC);
+                    if(maximilien!=6)maximilien++;
+                    sprintf(toto,"%hd",maximilien);
+                    lcd.SetBackColor(LCD_COLOR_WHITE);
+                    lcd.SetTextColor(LCD_COLOR_BLACK);
+                    lcd.DisplayStringAt(50, LINE(20), (unsigned char *)toto, LEFT_MODE);
+                } else if(TEST_MOINS.Touched()) {
+                    while (TEST_MOINS.Touched());
+                    TEST_MOINS.Draw(BLEU, BLANC);
+                    if(maximilien!=1)maximilien--;
+                    sprintf(toto,"%hd",maximilien);
+                    lcd.SetBackColor(LCD_COLOR_WHITE);
+                    lcd.SetTextColor(LCD_COLOR_BLACK);
+                    lcd.DisplayStringAt(50, LINE(20), (unsigned char *)toto, LEFT_MODE);
+                }
             }
             break;
-            
-        case TEST_SERVO_BRAS:      
+        
+        case TEST_ELECTROV:
+            lcd.SetBackColor(LCD_COLOR_WHITE);
+            lcd.SetTextColor(LCD_COLOR_BLACK);
+            lcd.Clear (LCD_COLOR_WHITE);   
             lcd.Clear (LCD_COLOR_WHITE);
-            lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"Test Bras", LEFT_MODE);
+            lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"Test Electro Vannes", LEFT_MODE);
+            sprintf(toto,"%hd",maximilien);
+            lcd.DisplayStringAt(50, LINE(20), (unsigned char *)toto, LEFT_MODE);
             RETOUR.Draw(0xFFFF0000,0);
-            TEST_BRAS_PRESENTOIR.Draw(BLEU, BLANC);
-            TEST_BRAS_GABARIT.Draw(BLEU, BLANC);
-            TEST_BRAS_GABARITD.Draw(BLEU, BLANC);
+            TEST_A.Draw(BLEU, BLANC);
+            TEST_NUM.Draw(BLEU, BLANC);
+            TEST_PLUS.Draw(BLEU, BLANC);
+            TEST_MOINS.Draw(BLEU, BLANC);
             while(etat==TEST_SERVO_BRAS) {
                 if(RETOUR.Touched()) {
                     while (RETOUR.Touched());
                     etat=DEMO;
-                } 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);
+                } else if(TEST_A.Touched()) {
+                    while (TEST_A.Touched());
+                    SendRawId(TEST_ELECTROV_A);
+                    TEST_A.Draw(BLEU, BLANC);
+                }  else if(TEST_NUM.Touched()) {
+                    while (TEST_NUM.Touched());
+                    TEST_NUM.Draw(BLEU, BLANC);
+                    switch(maximilien){
+                    case 1:
+                    SendRawId(TEST_ELECTROV_1);
+                    break;
+                    case 2:
+                    SendRawId(TEST_ELECTROV_2);
+                    break;
+                    case 3:
+                    SendRawId(TEST_ELECTROV_3);
+                    break;
+                    case 4:
+                    SendRawId(TEST_ELECTROV_4);
+                    break;
+                    case 5:
+                    SendRawId(TEST_ELECTROV_5);
+                    break;
+                    case 6:
+                    SendRawId(TEST_ELECTROV_6);
+                    break;
+                    }
+                } else if(TEST_PLUS.Touched()) {
+                    while (TEST_PLUS.Touched());
+                    TEST_PLUS.Draw(BLEU, BLANC);
+                    if(maximilien!=6)maximilien++;
+                    sprintf(toto,"%hd",maximilien);
+                    lcd.SetBackColor(LCD_COLOR_WHITE);
+                    lcd.SetTextColor(LCD_COLOR_BLACK);
+                    lcd.DisplayStringAt(50, LINE(20), (unsigned char *)toto, LEFT_MODE);
+                } else if(TEST_MOINS.Touched()) {
+                    while (TEST_MOINS.Touched());
+                    TEST_MOINS.Draw(BLEU, BLANC);
+                    if(maximilien!=1)maximilien--;
+                    sprintf(toto,"%hd",maximilien);
+                    lcd.SetBackColor(LCD_COLOR_WHITE);
+                    lcd.SetTextColor(LCD_COLOR_BLACK);
+                    lcd.DisplayStringAt(50, LINE(20), (unsigned char *)toto, LEFT_MODE);
+                }
+            }
+            break;
+        
+        case TEST_SERVO_BRAS:  
+              
+            lcd.SetBackColor(LCD_COLOR_WHITE);
+            lcd.SetTextColor(LCD_COLOR_BLACK);
+            lcd.Clear (LCD_COLOR_WHITE);   
+            lcd.Clear (LCD_COLOR_WHITE);
+            lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"Test Bras", LEFT_MODE);
+            sprintf(toto,"%hd",maximilien);
+            lcd.DisplayStringAt(50, LINE(20), (unsigned char *)toto, LEFT_MODE);
+            RETOUR.Draw(0xFFFF0000,0);
+            TEST_A.Draw(BLEU, BLANC);
+            TEST_B.Draw(BLEU, BLANC);
+            TEST_C.Draw(BLEU, BLANC);
+            TEST_D.Draw(BLEU, BLANC);
+            TEST_NUM.Draw(BLEU, BLANC);
+            TEST_PLUS.Draw(BLEU, BLANC);
+            TEST_MOINS.Draw(BLEU, BLANC);
+            while(etat==TEST_SERVO_BRAS) {
+                if(RETOUR.Touched()) {
+                    while (RETOUR.Touched());
+                    etat=DEMO;
+                } else if(TEST_A.Touched()) {
+                    while (TEST_A.Touched());
+                    SendRawId(TEST_BRAS_A);
+                    TEST_A.Draw(BLEU, BLANC);
+                } else if(TEST_B.Touched()) {
+                    while (TEST_B.Touched());
+                    SendRawId(TEST_BRAS_B);
+                    TEST_B.Draw(BLEU, BLANC);
+                } else if(TEST_C.Touched()) {
+                    while (TEST_C.Touched());
+                    SendRawId(TEST_BRAS_C);
+                    TEST_C.Draw(BLEU, BLANC);
+                } else if(TEST_D.Touched()) {
+                    while (TEST_D.Touched());
+                    SendRawId(TEST_BRAS_D);
+                    TEST_D.Draw(BLEU, BLANC);
+                }  else if(TEST_NUM.Touched()) {
+                    while (TEST_NUM.Touched());
+                    TEST_NUM.Draw(BLEU, BLANC);
+                    switch(maximilien){
+                    case 1:
+                    SendRawId(TEST_BRAS_1);
+                    break;
+                    case 2:
+                    SendRawId(TEST_BRAS_2);
+                    break;
+                    case 3:
+                    SendRawId(TEST_BRAS_3);
+                    break;
+                    case 4:
+                    SendRawId(TEST_BRAS_4);
+                    break;
+                    case 5:
+                    SendRawId(TEST_BRAS_5);
+                    break;
+                    case 6:
+                    SendRawId(TEST_BRAS_6);
+                    break;
+                    }
+                } else if(TEST_PLUS.Touched()) {
+                    while (TEST_PLUS.Touched());
+                    TEST_PLUS.Draw(BLEU, BLANC);
+                    if(maximilien!=6)maximilien++;
+                    sprintf(toto,"%hd",maximilien);
+                    lcd.SetBackColor(LCD_COLOR_WHITE);
+                    lcd.SetTextColor(LCD_COLOR_BLACK);
+                    lcd.DisplayStringAt(50, LINE(20), (unsigned char *)toto, LEFT_MODE);
+                } else if(TEST_MOINS.Touched()) {
+                    while (TEST_MOINS.Touched());
+                    TEST_MOINS.Draw(BLEU, BLANC);
+                    if(maximilien!=1)maximilien--;
+                    sprintf(toto,"%hd",maximilien);
+                    lcd.SetBackColor(LCD_COLOR_WHITE);
+                    lcd.SetTextColor(LCD_COLOR_BLACK);
+                    lcd.DisplayStringAt(50, LINE(20), (unsigned char *)toto, LEFT_MODE);
                 }
             }
             break;
@@ -772,6 +963,7 @@
             SendRawId(GLOBAL_START);
 
             gameEtat = ETAT_GAME_WAIT_FOR_JACK;
+            Debug_Audio(3,7);
             if (etat == TEST_TELEMETRE|| etat ==TEST_VENTOUSE || etat == TEST_COULEUR || etat ==TEST_SERVO_BRAS) {
                 SendRawId(DEBUG_FAKE_JAKE);
             } else {
@@ -905,7 +1097,7 @@
 
             break;
         case ETAT_GAME_START:
-
+            Debug_Audio(3,3);
             gameEtat = ETAT_GAME_LOAD_NEXT_INSTRUCTION;
 
             if (ModeDemo == 0) {
@@ -1016,6 +1208,7 @@
                     break;
                 }
                 case MV_COURBURE://C'est un rayon de courbure
+                    Debug_Audio(3,6);
                     float alpha=0, theta=0;
                     unsigned short alph=0;
                     actionPrecedente = MV_COURBURE;
@@ -1169,6 +1362,7 @@
 
 
                 case MV_LINE://Ligne droite
+                    Debug_Audio(3,8);
                     waitingAckID = ASSERVISSEMENT_RECALAGE;
                     waitingAckFrom = ACKNOWLEDGE_MOTEUR;
                     if(instruction.nextActionType == ENCHAINEMENT) {
@@ -1191,6 +1385,7 @@
 
                     break;
                 case MV_TURN: //Rotation sur place
+                    Debug_Audio(3,9);
                     target_x_robot = x_robot;
                     target_y_robot = y_robot;
                     target_theta_robot = theta_robot + localData2;
@@ -1217,6 +1412,7 @@
 
                     break;
                 case MV_XYT:
+                    Debug_Audio(3,10);
                     if(instruction.direction == BACKWARD) {
                         localData1 = -1;
                     } else {
@@ -1286,11 +1482,10 @@
                 
                     waitingAckID_FIN = 0;
                     waitingAckFrom_FIN = 0;
-
                     int tempo = 0;
                     waitingAckID= ACK_ACTION;       //On veut un ack de type action
                     waitingAckFrom = ACKNOWLEDGE_HERKULEX; //de la part des herkulex
-                    tempo = doAction(instruction.arg1,instruction.arg2,instruction.arg3);
+                    //tempo = doAction(instruction.arg1,instruction.arg2,instruction.arg3);
                     //  unsigned char test=(unsigned char) tempo;
                     // SendMsgCan(0x5BD, &test,1);
                     if(tempo == 1) {
@@ -1486,6 +1681,7 @@
             break;
         
         case ETAT_END:
+            Debug_Audio(3,4);
             if (ModeDemo) {
                 gameEtat = ETAT_CHECK_CARTE_SCREEN;
                 ModeDemo = 1;
@@ -1752,6 +1948,10 @@
                 }
 
                 break;
+                case SOMO:
+                break;
+                default:
+                break;
                 /*
                             case NO_BLOC: //il n'y a pas de bloc, on saute les étapes liées à l'attrape bloc
                                 actual_instruction = instruction.nextLineError;
--- a/main.cpp	Mon Feb 10 08:07:17 2020 +0000
+++ b/main.cpp	Tue Mar 03 16:41:33 2020 +0000
@@ -69,7 +69,7 @@
     lcd.DisplayStringAt(0, 0,(uint8_t *)"Initialisation", LEFT_MODE);
     led1 = 1;
     bluetooth_init();
-    //lecture_fichier(); //bloquant si pas de carte SD
+    lecture_fichier(); //bloquant si pas de carte SD
     led1 = 0;
     wait_ms(2000);//Attente pour que toutes les cartes se lancent et surtout le CANBlue
     while(true) {