Classes et code de la partie pompe du Robot 2021

Dependencies:   mbed ident_crac

main.cpp

Committer:
smarecar
Date:
2021-03-05
Revision:
7:b7dc6201b520
Parent:
6:b06c430a7e14
Child:
8:ba95705cf7d4

File content as of revision 7:b7dc6201b520:

#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 ;
void interruption_reception(void) ;
void gestion_Message_CAN(void) ;
void Envoi_msg_CAN(char donnee);

//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

int main()
{    
    bus_CAN.attach(&interruption_reception) ;
 
    while(1)
    {
            //bus_CAN(envoie); 
            if(flag_reception_CAN)
            {
            gestion_Message_CAN() ;
        }
        
        if(end_game)
        {
            for (int i=0 ; i<8 ; i++)
            {
                classe_pompe.stop_pompe(i);
                wait_ms(10) ;
            }
        }
        //Envoi_msg_CAN(1); //envoie un msg pour tester la liaison can
    }
        
}

void interruption_reception(void) 
{
    if (bus_CAN.read(commande_carte))
        flag_reception_CAN = 1 ;
}

void gestion_Message_CAN(void) 
{
    int identifiant = commande_carte.id ;
    char num_groupe = 1 ;
    char etat_groupe = 0 ;
    
    switch (identifiant) 
    {
        case VENT_AT:
                num_groupe = commande_carte.data[0];
                classe_pompe.aspirer(num_groupe) ;
                break;
                
        case VENT_RE:
                num_groupe = commande_carte.data[0];
                classe_pompe.relacher(num_groupe) ;
                break;   
            
        case VENT_ETAT:
                num_groupe = commande_carte.data[0];
                etat_groupe = classe_pompe.etat_actuel(num_groupe) ;
                
                if(etat_groupe == 0x07)
                {
                    classe_pompe.aspirer(num_groupe) ;
                    etat_groupe = classe_pompe.etat_actuel(num_groupe) ;
                }
                
                
                Envoi_msg_CAN(etat_groupe);
                
                break;
            
        case GLOBAL_GAME_END:
                end_game = 1;
                break;
                

        /*        
                
        case TEST_VENT_1_ON:
                classe_pompe[AV_DROIT]->action(1);
                classe_pompe[AV_CENTRE]->action(1);
                classe_pompe[AV_GAUCHE]->action(1);
                classe_pompe[AR_DROIT]->action(1);
                classe_pompe[AR_CENTRE]->action(1);
                classe_pompe[AR_GAUCHE]->action(1);
                break;
            
        case TEST_VENT_1_OFF:
                classe_pompe[AV_CENTRE]->action(0);
                classe_pompe[AV_GAUCHE]->action(0);
                classe_pompe[AR_DROIT]->action(0);
                classe_pompe[AR_CENTRE]->action(0);
                classe_pompe[AR_GAUCHE]->action(0);
                classe_pompe[AV_DROIT]->action(0);
                break;*/
        default:
                break;        
    }
    flag_reception_CAN = 0 ;
                
}

void Envoi_msg_CAN(char donnee)
{   
    CANMessage etat_ventouses;
    etat_ventouses.id = 0x220;    
    etat_ventouses.len=1;
    etat_ventouses.format=CANStandard;
    etat_ventouses.type=CANData;
    etat_ventouses.data[0]=donnee;

    bus_CAN.write(etat_ventouses);
}