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:
goldmas
Date:
Mon May 31 13:36:03 2021 +0000
Parent:
35:2a745eeb7922
Child:
37:ee2c72e76d9c
Child:
38:9d6a3ccc0582
Commit message:
dernier code vallable;

Changed in this revision

Compteur_points/Compteur.cpp Show annotated file Show diff for this revision Revisions of this file
Globals/global.h 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
IHM/ihm.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
Strategie/Strategie.h Show annotated file Show diff for this revision Revisions of this file
--- a/Compteur_points/Compteur.cpp	Fri May 21 16:19:18 2021 +0000
+++ b/Compteur_points/Compteur.cpp	Mon May 31 13:36:03 2021 +0000
@@ -119,7 +119,7 @@
             
     //chenal vert port ext bleu  
     else if((x_robot+x_offset >= 1700-DEMI_GOBELET)&&(x_robot+x_offset <= 2000+DEMI_GOBELET)
-            && (y_robot+y_offset >= 1650-DEMI_GOBELET)&&(y_robot+y_offset <= 1750+DEMI_GOBELET)) gobelet_vert++;               
+            && (y_robot+y_offset >= 1650-DEMI_GOBELET)&&(y_robot+y_offset <= 1750+DEMI_GOBELET)) gobelet_vert++;         
     //chenal rouge port ext bleu  
     else if((x_robot+x_offset >= 1700-DEMI_GOBELET)&&(x_robot+x_offset <= 2000+DEMI_GOBELET)
             && (y_robot+y_offset >= 1850-DEMI_GOBELET)&&(y_robot+y_offset <= 1950+DEMI_GOBELET)) gobelet_rouge++;
--- a/Globals/global.h	Fri May 21 16:19:18 2021 +0000
+++ b/Globals/global.h	Mon May 31 13:36:03 2021 +0000
@@ -42,6 +42,7 @@
 extern unsigned short flag_check_carte;
 extern int ack_bluetooth;
 extern unsigned char Cote;
+extern unsigned char Hauteur;
 extern DigitalOut led1,led2,led3,led4;
 extern LCD_DISCO_F469NI lcd;
 extern char cheminFileStart[SIZE+8]; //Le chemin du fichier de strat, utiliser strcpy(cheminFileStart,"/local/strat.txt");
--- a/Globals/ident_crac.lib	Fri May 21 16:19:18 2021 +0000
+++ b/Globals/ident_crac.lib	Mon May 31 13:36:03 2021 +0000
@@ -1,1 +1,1 @@
-https://os.mbed.com/teams/CRAC-Team/code/ident_crac/#f14b2127d83d
+https://os.mbed.com/teams/CRAC-Team/code/ident_crac/#3cdea2100f98
--- a/IHM/ihm.cpp	Fri May 21 16:19:18 2021 +0000
+++ b/IHM/ihm.cpp	Mon May 31 13:36:03 2021 +0000
@@ -23,6 +23,8 @@
 /////////////////DEFINITION DES BOUTONS////////////////////
 Button COTE_JAUNE(0, 25, 400, 300, "JAUNE");
 Button COTE_VIOLET(0, 350, 400, 300, "BLEU");
+Button COTE_HAUT(0, 25, 400, 300, "ROBOT DU HAUT");
+Button COTE_BAS(0, 350, 400, 300, "ROBOT DU BAS");
 Button RETOUR  (0, 680, 400, 110, "--Precedent--");
 Button LANCER  (0, 200, 400, 200, "--LANCER--");
 Button CHECK (0, 420, 400, 200, "Valider");
@@ -1088,7 +1090,7 @@
                 if(COTE_JAUNE.Touched()) {
                     Cote = 0x1;
                     InversStrat = Cote;
-                    strat_etat_s = TACTIQUE;
+                    strat_etat_s = SELECT_ROB;
                     CANMessage trame_Tx = CANMessage();
                     trame_Tx.len = 1;
                     trame_Tx.format = CANStandard;
@@ -1103,7 +1105,7 @@
                 if(COTE_VIOLET.Touched()) {
                     Cote = 0x0;
                     InversStrat= Cote;
-                    strat_etat_s = TACTIQUE;
+                    strat_etat_s = SELECT_ROB;
                     CANMessage trame_Tx = CANMessage();
                     trame_Tx.len = 1;
                     trame_Tx.format = CANStandard;
@@ -1121,7 +1123,48 @@
             }
 
             break;
+        
+        case SELECT_ROB :       // CHOIX DU SENS DE RECALAGE EN HAUT OU EN BAS
+            lcd.Clear(LCD_COLOR_WHITE);
+            lcd.SetBackColor(LCD_COLOR_WHITE);
+            lcd.SetTextColor(LCD_COLOR_BLACK);
+            lcd.DisplayStringAt(70, LINE(0), (uint8_t *)"Choisir la hauteur", LEFT_MODE);
+            
+            if(Cote==0)
+            {
+                COTE_HAUT.Draw(VIOLET, 0);
+                COTE_BAS.Draw(VIOLET, 0);
+            }
+            else if(Cote==1)
+            {
+                COTE_HAUT.Draw(JAUNE, 0);
+                COTE_BAS.Draw(JAUNE, 0);
+            }
+            RETOUR.Draw(LCD_COLOR_RED, 0);
 
+
+            while (strat_etat_s == SELECT_ROB) 
+            {
+                canProcessRx();
+                if(COTE_HAUT.Touched()) 
+                {
+                    Hauteur = 0x1;
+                    strat_etat_s = TACTIQUE;
+                    while(COTE_HAUT.Touched());
+                }
+                if(COTE_BAS.Touched()) {
+                    Hauteur = 0x0;
+                    strat_etat_s = TACTIQUE;
+                    while(COTE_BAS.Touched());
+                }
+
+                if(RETOUR.Touched()) {
+                    strat_etat_s = SELECT_SIDE;
+                    while(RETOUR.Touched());
+                }
+            }
+            break;
+        
         case TACTIQUE : //AFFICHE LA LISTE DES STRATS AFIN DE SELECTIONNER CELLE VOULUE
             if (Cote == 1) {
                 lcd.Clear(JAUNE);
--- a/Strategie/Strategie.cpp	Fri May 21 16:19:18 2021 +0000
+++ b/Strategie/Strategie.cpp	Mon May 31 13:36:03 2021 +0000
@@ -49,6 +49,7 @@
 //unsigned char FIFO_ecriture=0; //Position du fifo pour la reception CAN
 int flagSendCan=1;
 unsigned char Cote = 0; //0 -> JAUNE | 1 -> VIOLET
+unsigned char Hauteur = 0; 
 unsigned short angleRecalage = 0;
 unsigned char checkCurrent = 0;
 unsigned char countAliveCard = 0;
@@ -101,8 +102,8 @@
 
 unsigned short id_check[NOMBRE_CARTES]= {CHECK_MOTEUR,CHECK_BALISE};
 unsigned short id_alive[NOMBRE_CARTES]= {ALIVE_MOTEUR,ALIVE_BALISE};
-InterruptIn jack(PG_11); //  entrée numerique en interruption pour le jack (JackB1 sur la carte esclave)
-
+InterruptIn jackB1(PG_11); //  entrée numerique en interruption pour le jack (JackB1 sur la carte esclave)
+InterruptIn jackA1(PA_6);
 
 
 
@@ -264,8 +265,10 @@
             }
             //tactile_printf("Attente du JACK.");
             setAsservissementEtat(1);//On réactive l'asservissement
-            jack.mode(PullDown); // désactivation de la résistance interne du jack
-            jack.fall(&jack_ISR); // création de l'interrupt attachée au changement d'état (front descendant) sur le jack
+            jackB1.mode(PullDown); // désactivation de la résistance interne du jack
+            jackB1.fall(&jack_ISR); // création de l'interrupt attachée au changement d'état (front descendant) sur le jack
+            jackA1.mode(PullDown); // désactivation de la résistance interne du jack
+            jackA1.fall(&jack_ISR); // création de l'interrupt attachée au changement d'état (front descendant) sur le jack
 
             localData2 = POSITION_DEBUT_T;
             localData3 = POSITION_DEBUT_Y;
@@ -286,7 +289,11 @@
                         SendRawId(RECALAGE_START);
                         waitingAckID = ASSERVISSEMENT_RECALAGE;
                         waitingAckFrom = ACKNOWLEDGE_MOTEUR;
-                        GoStraight(3000, 1, MOITIEE_ROBOT, 0);  //on se recale contre le mur donc il faut donner la valeur du centre du robot (les -5 qui trainent sont dus au tables pourraves sur place)
+                        if(Hauteur==0) 
+                            localData3=2000-(MOITIEE_ROBOT);
+                        else 
+                            localData3=MOITIEE_ROBOT;
+                        GoStraight(1000, 1, localData3, 0);  //on se recale contre le mur donc il faut donner la valeur du centre du robot (les -5 qui trainent sont dus au tables pourraves sur place)
                         while(waitingAckID !=0 && waitingAckFrom !=0)
                             canProcessRx();
                         waitingAckID_FIN=ASSERVISSEMENT_RECALAGE;
@@ -312,11 +319,11 @@
                     case TOURNER:
                         waitingAckID = ASSERVISSEMENT_ROTATION;
                         waitingAckFrom = ACKNOWLEDGE_MOTEUR;
-                        if(Cote==0) {
-                            localData2 = 900;
-                        } else {
-                            localData2=-900;
-                        }
+                        if(Cote==0 && Hauteur==1) localData2 = 900;
+                        else if(Cote == 0 && Hauteur==0 )localData2=-900;
+                        else if(Cote==1 && Hauteur==1 )localData2=-900;
+                        else if(Cote==1 && Hauteur==0 )localData2=900;
+                        
                         Rotate(localData2);
                         while(waitingAckID !=0 && waitingAckFrom !=0)
                             canProcessRx();
@@ -335,7 +342,7 @@
                         } else {
                             localData3=MOITIEE_ROBOT;
                         }
-                        GoStraight(3000, 2,localData3, 0);  //on se recale contre le mur donc il faut donner la valeur du centre du robot
+                        GoStraight(1000, 2,localData3, 0);  //on se recale contre le mur donc il faut donner la valeur du centre du robot
                         while(waitingAckID !=0 && waitingAckFrom !=0)
                             canProcessRx();
                         waitingAckID_FIN=ASSERVISSEMENT_RECALAGE;
@@ -398,7 +405,8 @@
                 gameTimer.start();
             }
             gameTimer.reset();
-            jack.fall(NULL);//On désactive l'interruption du jack
+            jackB1.fall(NULL);//On désactive l'interruption du jack
+            jackA1.fall(NULL);//On désactive l'interruption du jack
             //SendRawId(GLOBAL_START);
             Jack=0;                                          //à envoyer sur le CAN et en direct pour l'automate de l'ihm ou sur CANV
             //tactile_printf("Start");//Pas vraiment utile mais bon
@@ -674,7 +682,7 @@
                         waitingAckID = ASSERVISSEMENT_RECALAGE;
                         waitingAckFrom = ACKNOWLEDGE_MOTEUR;
 
-                        localData2 = (((instruction.direction == FORWARD)?1:-1)*3000);//On indique une distance de 3000 pour etre sur que le robot va ce recaler
+                        localData2 = (((instruction.direction == FORWARD)?1:-1)*1000);//On indique une distance de 3000 pour etre sur que le robot va ce recaler
 
                         if(instruction.precision == RECALAGE_Y) {
                             localData5 = 2;
--- a/Strategie/Strategie.h	Fri May 21 16:19:18 2021 +0000
+++ b/Strategie/Strategie.h	Mon May 31 13:36:03 2021 +0000
@@ -27,6 +27,7 @@
     TEST_DIVE,
     TEST_ASSERVE,
     SELECT_SIDE, 
+    SELECT_ROB,
     TACTIQUE, 
     DETAILS,
     LECTURE,