Classes et code de la partie pompe du Robot 2021

Dependencies:   mbed ident_crac

Files at this revision

API Documentation at this revision

Comitter:
goldmas
Date:
Sat Jul 17 11:09:18 2021 +0000
Parent:
8:ba95705cf7d4
Commit message:
Dernier code de la coupe de fracne 2021

Changed in this revision

bloc_8_pompe.cpp Show annotated file Show diff for this revision Revisions of this file
bloc_8_pompe.h Show annotated file Show diff for this revision Revisions of this file
bloc_monopompe.cpp Show annotated file Show diff for this revision Revisions of this file
bloc_monopompe.h Show annotated file Show diff for this revision Revisions of this file
ident_crac.lib 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/bloc_8_pompe.cpp	Wed May 19 09:53:33 2021 +0000
+++ b/bloc_8_pompe.cpp	Sat Jul 17 11:09:18 2021 +0000
@@ -1,9 +1,9 @@
 #include "bloc_8_pompe.h"
 
 bloc_monopompe bloc1(PC_9, PA_8, PB_0) ;
-bloc_monopompe bloc2(PA_9, PA_10, PB_1) ;
+bloc_monopompe bloc2(PB_7, PA_10, PB_1) ;
 bloc_monopompe bloc3(PA_11, PA_15, PC_1) ;
-bloc_monopompe bloc4(PB_7, PB_6, PC_0) ;
+bloc_monopompe bloc4(PA_9, PB_6, PC_0) ;
 bloc_monopompe bloc5(PC_7, PC_8, PC_5) ;
 bloc_monopompe bloc6(PB_10, PB_2, PC_4) ;
 bloc_monopompe bloc7(PA_6, PA_5, PA_7) ;
@@ -112,9 +112,9 @@
             break;
     }
 }
-char bloc_8_pompe::etat_actuel (int groupe = 1) 
+char bloc_8_pompe::etat_actuel (int groupe) 
 {
-    char etat_groupe[8] ;
+    static char etat_groupe[8] ;
     
     switch (groupe)
     {
@@ -150,7 +150,8 @@
             etat_groupe[groupe-1] = bloc8.etat_actuel() ;
             break;
     }
-    return etat_groupe[groupe-1] ;
+    return etat_groupe[groupe-1];
+//    wait_us(150);
 }
 
 void bloc_8_pompe::stop_pompe (int groupe = 1)
@@ -189,4 +190,4 @@
             bloc8.stop_pompe() ;
             break;
     }
-}                            
\ No newline at end of file
+}                          
\ No newline at end of file
--- a/bloc_8_pompe.h	Wed May 19 09:53:33 2021 +0000
+++ b/bloc_8_pompe.h	Sat Jul 17 11:09:18 2021 +0000
@@ -1,7 +1,7 @@
 #ifndef _BLOC_8_POMPE_H
 #define _BLOC_8_POMPE_H
 
-#include "bloc_monopompe.h" 
+#include "bloc_monopompe.h"
 
 class bloc_8_pompe 
 {
--- a/bloc_monopompe.cpp	Wed May 19 09:53:33 2021 +0000
+++ b/bloc_monopompe.cpp	Sat Jul 17 11:09:18 2021 +0000
@@ -53,11 +53,11 @@
         _gobelet_en_place = 0 ;
         
     if(_electrovanne.read())              //test de l'electrovanne
-        etat_pompe = 1 ;
+        etat_electrovanne = 1 ;
     else 
-        etat_pompe = 0 ;
+        etat_electrovanne = 0 ;
     
-    // contenue du char : (cela evite l'utilisation de pointeurs (car on a la flemme))
+    // contenue du char : (cela evite l'utilisation de pointeurs)
     //0000 0 "bit pompe" "bit elec" "bit cpt"
     return etat_groupe = (etat_pompe << 2) + (etat_electrovanne << 1) + _gobelet_en_place ;    
 }
--- a/bloc_monopompe.h	Wed May 19 09:53:33 2021 +0000
+++ b/bloc_monopompe.h	Sat Jul 17 11:09:18 2021 +0000
@@ -2,6 +2,7 @@
 #define _BLOC_MONOPOMPE_H
 
 #include "mbed.h"
+#include "ident_crac.h"
 
 #define PWM_STOP_POMPE 0
 #define PWM_POMPE 0.7
--- a/ident_crac.lib	Wed May 19 09:53:33 2021 +0000
+++ b/ident_crac.lib	Sat Jul 17 11:09:18 2021 +0000
@@ -1,1 +1,1 @@
-https://os.mbed.com/teams/CRAC-Team/code/ident_crac/#ad3c5dee616c
+https://os.mbed.com/teams/CRAC-Team/code/ident_crac/#007f23e40fc3
--- 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);
+}