Classes et code de la partie pompe du Robot 2021

Dependencies:   mbed ident_crac

Committer:
smarecar
Date:
Wed May 19 09:53:33 2021 +0000
Revision:
8:ba95705cf7d4
Parent:
7:b7dc6201b520
Child:
9:6869e3869638
publish pour e comtage de poins;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
goldmas 0:253443d82cba 1 #include "bloc_8_pompe.h"
goldmas 4:4bae30d48662 2 #include "ident_crac.h"
goldmas 0:253443d82cba 3
goldmas 1:815ca6061e15 4 //initialisations relatives au Bus CAN
goldmas 4:4bae30d48662 5 CAN bus_CAN(PB_8, PB_9, 1000000) ;
goldmas 4:4bae30d48662 6 CANMessage commande_carte ;
goldmas 6:b06c430a7e14 7 CANMessage envoie ;
goldmas 1:815ca6061e15 8 int flag_reception_CAN = 0 ;
goldmas 2:61ffa6e3eee5 9 void interruption_reception(void) ;
goldmas 4:4bae30d48662 10 void gestion_Message_CAN(void) ;
goldmas 6:b06c430a7e14 11 void Envoi_msg_CAN(char donnee);
smarecar 8:ba95705cf7d4 12 void initialisation_CAN(void) ;
goldmas 1:815ca6061e15 13
goldmas 4:4bae30d48662 14 //Fin de jeu
goldmas 4:4bae30d48662 15 char end_game = 0;
goldmas 4:4bae30d48662 16
goldmas 4:4bae30d48662 17 bloc_8_pompe::bloc_8_pompe classe_pompe (PC_9, PA_8, PB_0, //bloc 1
goldmas 0:253443d82cba 18 PA_9, PA_10, PB_1, //bloc 2
goldmas 0:253443d82cba 19 PA_11, PA_15, PC_1, //bloc 3
goldmas 0:253443d82cba 20 PB_7, PB_6, PC_0, //bloc 4
goldmas 0:253443d82cba 21 PC_7, PC_8, PC_5, //bloc 5
goldmas 0:253443d82cba 22 PB_10, PB_2, PC_4, //bloc 6
goldmas 0:253443d82cba 23 PA_6, PA_5, PA_7, //bloc 7
goldmas 0:253443d82cba 24 PA_0, PA_1, PA_4); //bloc 8
goldmas 4:4bae30d48662 25
goldmas 4:4bae30d48662 26 int main()
goldmas 4:4bae30d48662 27 {
goldmas 4:4bae30d48662 28 bus_CAN.attach(&interruption_reception) ;
smarecar 8:ba95705cf7d4 29
smarecar 8:ba95705cf7d4 30 initialisation_CAN() ;
smarecar 8:ba95705cf7d4 31
goldmas 0:253443d82cba 32 while(1)
goldmas 0:253443d82cba 33 {
goldmas 6:b06c430a7e14 34 //bus_CAN(envoie);
goldmas 6:b06c430a7e14 35 if(flag_reception_CAN)
goldmas 6:b06c430a7e14 36 {
goldmas 6:b06c430a7e14 37 gestion_Message_CAN() ;
goldmas 6:b06c430a7e14 38 }
goldmas 0:253443d82cba 39
goldmas 6:b06c430a7e14 40 if(end_game)
goldmas 6:b06c430a7e14 41 {
goldmas 6:b06c430a7e14 42 for (int i=0 ; i<8 ; i++)
goldmas 6:b06c430a7e14 43 {
goldmas 6:b06c430a7e14 44 classe_pompe.stop_pompe(i);
goldmas 6:b06c430a7e14 45 wait_ms(10) ;
goldmas 6:b06c430a7e14 46 }
goldmas 6:b06c430a7e14 47 }
smarecar 7:b7dc6201b520 48 //Envoi_msg_CAN(1); //envoie un msg pour tester la liaison can
goldmas 0:253443d82cba 49 }
goldmas 0:253443d82cba 50
goldmas 4:4bae30d48662 51 }
goldmas 4:4bae30d48662 52
goldmas 4:4bae30d48662 53 void interruption_reception(void)
goldmas 4:4bae30d48662 54 {
goldmas 4:4bae30d48662 55 if (bus_CAN.read(commande_carte))
goldmas 4:4bae30d48662 56 flag_reception_CAN = 1 ;
goldmas 4:4bae30d48662 57 }
goldmas 4:4bae30d48662 58
goldmas 4:4bae30d48662 59 void gestion_Message_CAN(void)
goldmas 4:4bae30d48662 60 {
goldmas 4:4bae30d48662 61 int identifiant = commande_carte.id ;
goldmas 4:4bae30d48662 62 char num_groupe = 1 ;
goldmas 6:b06c430a7e14 63 char etat_groupe = 0 ;
goldmas 4:4bae30d48662 64
goldmas 4:4bae30d48662 65 switch (identifiant)
goldmas 4:4bae30d48662 66 {
goldmas 4:4bae30d48662 67 case VENT_AT:
goldmas 4:4bae30d48662 68 num_groupe = commande_carte.data[0];
smarecar 8:ba95705cf7d4 69 if(num_groupe<6)
smarecar 8:ba95705cf7d4 70 {
smarecar 8:ba95705cf7d4 71 if(num_groupe == 0) num_groupe = 3;
smarecar 8:ba95705cf7d4 72 else if (num_groupe == 1) num_groupe = 2;
smarecar 8:ba95705cf7d4 73 else if (num_groupe == 2) num_groupe = 1;
smarecar 8:ba95705cf7d4 74 else if (num_groupe == 3) num_groupe = 5;
smarecar 8:ba95705cf7d4 75 else if (num_groupe == 4) num_groupe = 6;
smarecar 8:ba95705cf7d4 76 else if (num_groupe == 5) num_groupe = 7;
smarecar 8:ba95705cf7d4 77 classe_pompe.aspirer(num_groupe);
smarecar 8:ba95705cf7d4 78 }
smarecar 8:ba95705cf7d4 79 else if(num_groupe>5)
smarecar 8:ba95705cf7d4 80 {
smarecar 8:ba95705cf7d4 81 switch(num_groupe)
smarecar 8:ba95705cf7d4 82 {
smarecar 8:ba95705cf7d4 83 case 10:
smarecar 8:ba95705cf7d4 84 classe_pompe.aspirer(2);
smarecar 8:ba95705cf7d4 85 classe_pompe.aspirer(3);
smarecar 8:ba95705cf7d4 86 break;
smarecar 8:ba95705cf7d4 87
smarecar 8:ba95705cf7d4 88 case 20:
smarecar 8:ba95705cf7d4 89 classe_pompe.aspirer(1);
smarecar 8:ba95705cf7d4 90 classe_pompe.aspirer(3);
smarecar 8:ba95705cf7d4 91 break;
smarecar 8:ba95705cf7d4 92
smarecar 8:ba95705cf7d4 93 case 21:
smarecar 8:ba95705cf7d4 94 classe_pompe.aspirer(2);
smarecar 8:ba95705cf7d4 95 classe_pompe.aspirer(1);
smarecar 8:ba95705cf7d4 96 break;
smarecar 8:ba95705cf7d4 97
smarecar 8:ba95705cf7d4 98 case 210:
smarecar 8:ba95705cf7d4 99 classe_pompe.aspirer(3);
smarecar 8:ba95705cf7d4 100 classe_pompe.aspirer(2);
smarecar 8:ba95705cf7d4 101 classe_pompe.aspirer(1);
smarecar 8:ba95705cf7d4 102 break;
smarecar 8:ba95705cf7d4 103
smarecar 8:ba95705cf7d4 104 case 43:
smarecar 8:ba95705cf7d4 105 classe_pompe.aspirer(5);
smarecar 8:ba95705cf7d4 106 classe_pompe.aspirer(6);
smarecar 8:ba95705cf7d4 107 break;
smarecar 8:ba95705cf7d4 108
smarecar 8:ba95705cf7d4 109 case 53:
smarecar 8:ba95705cf7d4 110 classe_pompe.aspirer(5);
smarecar 8:ba95705cf7d4 111 classe_pompe.aspirer(7);
smarecar 8:ba95705cf7d4 112 break;
smarecar 8:ba95705cf7d4 113
smarecar 8:ba95705cf7d4 114 case 54:
smarecar 8:ba95705cf7d4 115 classe_pompe.aspirer(7);
smarecar 8:ba95705cf7d4 116 classe_pompe.aspirer(6);
smarecar 8:ba95705cf7d4 117 break;
smarecar 8:ba95705cf7d4 118
smarecar 8:ba95705cf7d4 119 case 66:
smarecar 8:ba95705cf7d4 120 classe_pompe.aspirer(7);
smarecar 8:ba95705cf7d4 121 classe_pompe.aspirer(6);
smarecar 8:ba95705cf7d4 122 classe_pompe.aspirer(5);
smarecar 8:ba95705cf7d4 123 break;
smarecar 8:ba95705cf7d4 124 }
smarecar 8:ba95705cf7d4 125 }
goldmas 4:4bae30d48662 126 break;
goldmas 4:4bae30d48662 127
goldmas 4:4bae30d48662 128 case VENT_RE:
goldmas 4:4bae30d48662 129 num_groupe = commande_carte.data[0];
smarecar 8:ba95705cf7d4 130 if(num_groupe<6)
smarecar 8:ba95705cf7d4 131 {
smarecar 8:ba95705cf7d4 132 if(num_groupe == 0) num_groupe = 3;
smarecar 8:ba95705cf7d4 133 else if (num_groupe == 1) num_groupe = 2;
smarecar 8:ba95705cf7d4 134 else if (num_groupe == 2) num_groupe = 1;
smarecar 8:ba95705cf7d4 135 else if (num_groupe == 3) num_groupe = 5;
smarecar 8:ba95705cf7d4 136 else if (num_groupe == 4) num_groupe = 6;
smarecar 8:ba95705cf7d4 137 else if (num_groupe == 5) num_groupe = 7;
smarecar 8:ba95705cf7d4 138 classe_pompe.relacher(num_groupe);
smarecar 8:ba95705cf7d4 139 }
smarecar 8:ba95705cf7d4 140 else if(num_groupe>5)
smarecar 8:ba95705cf7d4 141 {
smarecar 8:ba95705cf7d4 142 switch(num_groupe)
smarecar 8:ba95705cf7d4 143 {
smarecar 8:ba95705cf7d4 144 case 10:
smarecar 8:ba95705cf7d4 145 classe_pompe.relacher(2);
smarecar 8:ba95705cf7d4 146 classe_pompe.relacher(3);
smarecar 8:ba95705cf7d4 147 break;
smarecar 8:ba95705cf7d4 148
smarecar 8:ba95705cf7d4 149 case 20:
smarecar 8:ba95705cf7d4 150 classe_pompe.relacher(1);
smarecar 8:ba95705cf7d4 151 classe_pompe.relacher(3);
smarecar 8:ba95705cf7d4 152 break;
smarecar 8:ba95705cf7d4 153
smarecar 8:ba95705cf7d4 154 case 21:
smarecar 8:ba95705cf7d4 155 classe_pompe.relacher(2);
smarecar 8:ba95705cf7d4 156 classe_pompe.relacher(1);
smarecar 8:ba95705cf7d4 157 break;
smarecar 8:ba95705cf7d4 158
smarecar 8:ba95705cf7d4 159 case 210:
smarecar 8:ba95705cf7d4 160 classe_pompe.relacher(3);
smarecar 8:ba95705cf7d4 161 classe_pompe.relacher(2);
smarecar 8:ba95705cf7d4 162 classe_pompe.relacher(1);
smarecar 8:ba95705cf7d4 163 break;
smarecar 8:ba95705cf7d4 164
smarecar 8:ba95705cf7d4 165 case 43:
smarecar 8:ba95705cf7d4 166 classe_pompe.relacher(5);
smarecar 8:ba95705cf7d4 167 classe_pompe.relacher(6);
smarecar 8:ba95705cf7d4 168 break;
smarecar 8:ba95705cf7d4 169
smarecar 8:ba95705cf7d4 170 case 53:
smarecar 8:ba95705cf7d4 171 classe_pompe.relacher(7);
smarecar 8:ba95705cf7d4 172 classe_pompe.relacher(5);
smarecar 8:ba95705cf7d4 173 break;
smarecar 8:ba95705cf7d4 174
smarecar 8:ba95705cf7d4 175 case 54:
smarecar 8:ba95705cf7d4 176 classe_pompe.relacher(7);
smarecar 8:ba95705cf7d4 177 classe_pompe.relacher(6);
smarecar 8:ba95705cf7d4 178 break;
smarecar 8:ba95705cf7d4 179
smarecar 8:ba95705cf7d4 180 case 66:
smarecar 8:ba95705cf7d4 181 classe_pompe.relacher(7);
smarecar 8:ba95705cf7d4 182 classe_pompe.relacher(6);
smarecar 8:ba95705cf7d4 183 classe_pompe.relacher(5);
smarecar 8:ba95705cf7d4 184 break;
smarecar 8:ba95705cf7d4 185 }
smarecar 8:ba95705cf7d4 186 }
goldmas 4:4bae30d48662 187 break;
goldmas 4:4bae30d48662 188
goldmas 4:4bae30d48662 189 case VENT_ETAT:
goldmas 6:b06c430a7e14 190 num_groupe = commande_carte.data[0];
goldmas 6:b06c430a7e14 191 etat_groupe = classe_pompe.etat_actuel(num_groupe) ;
goldmas 6:b06c430a7e14 192
goldmas 6:b06c430a7e14 193 if(etat_groupe == 0x07)
goldmas 6:b06c430a7e14 194 {
goldmas 6:b06c430a7e14 195 classe_pompe.aspirer(num_groupe) ;
goldmas 6:b06c430a7e14 196 etat_groupe = classe_pompe.etat_actuel(num_groupe) ;
goldmas 6:b06c430a7e14 197 }
goldmas 6:b06c430a7e14 198
goldmas 6:b06c430a7e14 199
goldmas 6:b06c430a7e14 200 Envoi_msg_CAN(etat_groupe);
goldmas 6:b06c430a7e14 201
goldmas 4:4bae30d48662 202 break;
goldmas 4:4bae30d48662 203
goldmas 4:4bae30d48662 204 case GLOBAL_GAME_END:
goldmas 4:4bae30d48662 205 end_game = 1;
goldmas 6:b06c430a7e14 206 break;
goldmas 4:4bae30d48662 207
goldmas 6:b06c430a7e14 208
goldmas 4:4bae30d48662 209 /*
goldmas 4:4bae30d48662 210
goldmas 4:4bae30d48662 211 case TEST_VENT_1_ON:
goldmas 4:4bae30d48662 212 classe_pompe[AV_DROIT]->action(1);
goldmas 4:4bae30d48662 213 classe_pompe[AV_CENTRE]->action(1);
goldmas 4:4bae30d48662 214 classe_pompe[AV_GAUCHE]->action(1);
goldmas 4:4bae30d48662 215 classe_pompe[AR_DROIT]->action(1);
goldmas 4:4bae30d48662 216 classe_pompe[AR_CENTRE]->action(1);
goldmas 4:4bae30d48662 217 classe_pompe[AR_GAUCHE]->action(1);
goldmas 4:4bae30d48662 218 break;
goldmas 4:4bae30d48662 219
goldmas 4:4bae30d48662 220 case TEST_VENT_1_OFF:
goldmas 4:4bae30d48662 221 classe_pompe[AV_CENTRE]->action(0);
goldmas 4:4bae30d48662 222 classe_pompe[AV_GAUCHE]->action(0);
goldmas 4:4bae30d48662 223 classe_pompe[AR_DROIT]->action(0);
goldmas 4:4bae30d48662 224 classe_pompe[AR_CENTRE]->action(0);
goldmas 4:4bae30d48662 225 classe_pompe[AR_GAUCHE]->action(0);
goldmas 4:4bae30d48662 226 classe_pompe[AV_DROIT]->action(0);
goldmas 4:4bae30d48662 227 break;*/
goldmas 4:4bae30d48662 228 default:
goldmas 4:4bae30d48662 229 break;
goldmas 6:b06c430a7e14 230 }
goldmas 6:b06c430a7e14 231 flag_reception_CAN = 0 ;
goldmas 4:4bae30d48662 232
goldmas 4:4bae30d48662 233 }
goldmas 4:4bae30d48662 234
goldmas 6:b06c430a7e14 235 void Envoi_msg_CAN(char donnee)
goldmas 4:4bae30d48662 236 {
goldmas 6:b06c430a7e14 237 CANMessage etat_ventouses;
goldmas 6:b06c430a7e14 238 etat_ventouses.id = 0x220;
goldmas 6:b06c430a7e14 239 etat_ventouses.len=1;
goldmas 4:4bae30d48662 240 etat_ventouses.format=CANStandard;
goldmas 4:4bae30d48662 241 etat_ventouses.type=CANData;
goldmas 6:b06c430a7e14 242 etat_ventouses.data[0]=donnee;
goldmas 6:b06c430a7e14 243
goldmas 6:b06c430a7e14 244 bus_CAN.write(etat_ventouses);
smarecar 8:ba95705cf7d4 245 }
smarecar 8:ba95705cf7d4 246
smarecar 8:ba95705cf7d4 247 void initialisation_CAN(void)
smarecar 8:ba95705cf7d4 248 {
smarecar 8:ba95705cf7d4 249 CANMessage msg_init;
smarecar 8:ba95705cf7d4 250 msg_init.id = ALIVE_ACTIONNEURS_ARRIERE;
smarecar 8:ba95705cf7d4 251 msg_init.len=0;
smarecar 8:ba95705cf7d4 252
smarecar 8:ba95705cf7d4 253 bus_CAN.write(msg_init);
goldmas 0:253443d82cba 254 }