Classes et code de la partie pompe du Robot 2021
Dependencies: mbed ident_crac
main.cpp@8:ba95705cf7d4, 2021-05-19 (annotated)
- 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?
User | Revision | Line number | New 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 | } |