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

Dependencies:   mbed SerialHalfDuplex SDFileSystem liaison_Bluetooth ident_crac DISCO-F469NI_portrait

Revision:
10:1964bb91b925
Parent:
1:7e925468f9d9
--- /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