Classes et code de la partie pompe du Robot 2021

Dependencies:   mbed ident_crac

Revision:
9:6869e3869638
Parent:
8:ba95705cf7d4
--- a/main.cpp	Wed May 19 09:53:33 2021 +0000
+++ b/main.cpp	Sat Jul 17 11:09:18 2021 +0000
@@ -1,39 +1,43 @@
 #include "bloc_8_pompe.h"
-#include "ident_crac.h"
 
 //initialisations relatives au Bus CAN
 CAN bus_CAN(PB_8, PB_9, 1000000) ;
 CANMessage commande_carte ;
 CANMessage envoie ;
 int flag_reception_CAN = 0 ;
+Timer scoreTimer;
 void interruption_reception(void) ;
 void gestion_Message_CAN(void) ;
-void Envoi_msg_CAN(char donnee);
+void Envoi_msg_CAN(char donnee[6]);
 void initialisation_CAN(void) ;
+void ventouse_etat(void);
+void SendRawId (unsigned short id);
 
 //Fin de jeu
 char end_game = 0;
 
 bloc_8_pompe::bloc_8_pompe classe_pompe    (PC_9, PA_8, PB_0,       //bloc 1
-                                                PA_9, PA_10, PB_1,      //bloc 2
-                                                PA_11, PA_15, PC_1,     //bloc 3
-                                                PB_7, PB_6, PC_0,       //bloc 4
-                                                PC_7, PC_8, PC_5,       //bloc 5
-                                                PB_10, PB_2, PC_4,      //bloc 6
-                                                PA_6, PA_5, PA_7,       //bloc 7
-                                                PA_0, PA_1, PA_4);      //bloc 8
+                                            PB_7, PA_10, PB_1,      //bloc 2
+                                            PA_11, PA_15, PC_1,     //bloc 3
+                                            PA_9, PB_6, PC_0,       //bloc 4
+                                            PC_7, PC_8, PC_5,       //bloc 5
+                                            PB_10, PB_2, PC_4,      //bloc 6
+                                            PA_6, PA_5, PA_7,       //bloc 7
+                                            PA_0, PA_1, PA_4);      //bloc 8
 
 int main()
 {    
     bus_CAN.attach(&interruption_reception) ;
+    static int old_Timer=0;
+    initialisation_CAN() ;
     
-    initialisation_CAN() ;
+    scoreTimer.start();
     
     while(1)
     {
-            //bus_CAN(envoie); 
-            if(flag_reception_CAN)
-            {
+        //bus_CAN(envoie); 
+        if(flag_reception_CAN)
+        {
             gestion_Message_CAN() ;
         }
         
@@ -45,6 +49,17 @@
                 wait_ms(10) ;
             }
         }
+        
+        ventouse_etat();
+        
+        //Appelle toutes les 100ms pour regarder l'état des pompes
+        /*
+        if((scoreTimer.read_ms()-old_Timer)>=100)
+        {
+            ventouse_etat();
+            old_Timer=scoreTimer.read_ms();
+        } 
+       */ 
         //Envoi_msg_CAN(1); //envoie un msg pour tester la liaison can
     }
         
@@ -81,7 +96,7 @@
                     switch(num_groupe)
                     {
                     case 10:
-                        classe_pompe.aspirer(2);
+                        classe_pompe.aspirer(2);                       
                         classe_pompe.aspirer(3);
                     break;
 
@@ -96,8 +111,8 @@
                     break;
 
                     case 210:
-                        classe_pompe.aspirer(3);
-                        classe_pompe.aspirer(2);
+                        classe_pompe.aspirer(3);                  
+                        classe_pompe.aspirer(2); 
                         classe_pompe.aspirer(1);
                     break;
 
@@ -143,7 +158,7 @@
                     {
                     case 10:
                         classe_pompe.relacher(2);
-                        classe_pompe.relacher(3);
+                        classe_pompe.relacher(3);                  
                     break;
 
                     case 20:
@@ -188,6 +203,15 @@
             
         case VENT_ETAT:
                 num_groupe = commande_carte.data[0];
+                if(num_groupe<6)
+                {
+                    if(num_groupe == 0) num_groupe = 3;
+                    else if (num_groupe == 1) num_groupe = 2;
+                    else if (num_groupe == 2) num_groupe = 1;
+                    else if (num_groupe == 3) num_groupe = 5;
+                    else if (num_groupe == 4) num_groupe = 6;
+                    else if (num_groupe == 5) num_groupe = 7;
+                }
                 etat_groupe = classe_pompe.etat_actuel(num_groupe) ;
                 
                 if(etat_groupe == 0x07)
@@ -197,7 +221,7 @@
                 }
                 
                 
-                Envoi_msg_CAN(etat_groupe);
+                //Envoi_msg_CAN(etat_groupe);
                 
                 break;
             
@@ -232,15 +256,16 @@
                 
 }
 
-void Envoi_msg_CAN(char donnee)
+void Envoi_msg_CAN(char donnee[6])
 {   
-    CANMessage etat_ventouses;
+    CANMessage etat_ventouses=CANMessage();
     etat_ventouses.id = 0x220;    
-    etat_ventouses.len=1;
-    etat_ventouses.format=CANStandard;
+    etat_ventouses.len=6;
     etat_ventouses.type=CANData;
-    etat_ventouses.data[0]=donnee;
-
+    for(int num_octet=0; num_octet<6; num_octet++)
+    {
+        etat_ventouses.data[num_octet]=donnee[num_octet];
+    }
     bus_CAN.write(etat_ventouses);
 }
 
@@ -251,4 +276,41 @@
     msg_init.len=0;
 
     bus_CAN.write(msg_init);
-}
\ No newline at end of file
+}
+
+void ventouse_etat(void)
+{
+    char num_groupe;
+    char etat_groupe[6];
+    static char old_etat_groupe[6] = {0,0,0,0,0,0};
+    
+    for(int i=0;i<6;i++)
+    {
+        if(i == 0) num_groupe = 3;
+        else if (i == 1) num_groupe = 2;
+        else if (i == 2) num_groupe = 1;
+        else if (i == 3) num_groupe = 5;
+        else if (i == 4) num_groupe = 6;
+        else if (i == 5) num_groupe = 7;
+        
+        etat_groupe[i] = classe_pompe.etat_actuel(num_groupe);   
+    }
+    
+    for(int i=0;i<6;i++)
+    {
+        if(old_etat_groupe[i] != etat_groupe[i])
+        {
+            Envoi_msg_CAN(etat_groupe);
+        }
+        old_etat_groupe[i] = etat_groupe[i];
+    }
+}
+
+
+void SendRawId (unsigned short id)
+{
+    CANMessage msgTx;
+    msgTx.id=id;
+    msgTx.len=0;
+    bus_CAN.write(msgTx);
+}