test des capteurs/actionneurs petit robot

Fork of mbed_tes_cpt by CRAC Team

Committer:
matthieuvignon
Date:
Thu May 25 06:35:22 2017 +0000
Revision:
5:7e1c328c5d50
Parent:
3:43843ab8af47
Version Gatien Nuit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
matthieuvignon 2:9d280856a536 1 #include "all_includes.h"
matthieuvignon 2:9d280856a536 2
matthieuvignon 2:9d280856a536 3 Timer t;
matthieuvignon 5:7e1c328c5d50 4 Timer TimeJack;
matthieuvignon 2:9d280856a536 5
matthieuvignon 2:9d280856a536 6 CAN can(p30,p29); // Rx&Tx pour le CAN
matthieuvignon 2:9d280856a536 7 CANMessage msgRxBuffer[SIZE_FIFO]; // buffer en réception pour le CAN
matthieuvignon 2:9d280856a536 8
matthieuvignon 2:9d280856a536 9 Serial pc(USBTX, USBRX);
matthieuvignon 2:9d280856a536 10
matthieuvignon 3:43843ab8af47 11 #ifdef AVANT
matthieuvignon 3:43843ab8af47 12 void gerer_turbine(unsigned char pwm_turbine);
matthieuvignon 3:43843ab8af47 13 #endif
matthieuvignon 3:43843ab8af47 14
matthieuvignon 3:43843ab8af47 15 unsigned char Cote=0;
matthieuvignon 3:43843ab8af47 16
matthieuvignon 3:43843ab8af47 17 #ifdef AVANT
matthieuvignon 3:43843ab8af47 18 PwmOut Pompe(p21);
matthieuvignon 3:43843ab8af47 19 PwmOut ElectroVanne(p22);
matthieuvignon 3:43843ab8af47 20 PwmOut turbine(p23);
matthieuvignon 5:7e1c328c5d50 21
matthieuvignon 3:43843ab8af47 22 #endif
matthieuvignon 3:43843ab8af47 23
matthieuvignon 3:43843ab8af47 24 #ifdef ARRIERE
matthieuvignon 3:43843ab8af47 25 PwmOut Pompe(p21);
matthieuvignon 3:43843ab8af47 26 PwmOut MotLanceur(p22);
matthieuvignon 5:7e1c328c5d50 27 InterruptIn jack(p23);
matthieuvignon 5:7e1c328c5d50 28 //DigitalIn Jack(p25);
matthieuvignon 3:43843ab8af47 29 #endif
matthieuvignon 2:9d280856a536 30
ClementBreteau 0:7737d7573e3b 31
matthieuvignon 2:9d280856a536 32
matthieuvignon 2:9d280856a536 33 AnalogIn telemetre(p15);
matthieuvignon 2:9d280856a536 34
matthieuvignon 5:7e1c328c5d50 35
matthieuvignon 2:9d280856a536 36
matthieuvignon 2:9d280856a536 37
matthieuvignon 2:9d280856a536 38 DigitalOut led(LED1);
matthieuvignon 2:9d280856a536 39 DigitalOut led2(LED2);
matthieuvignon 2:9d280856a536 40
matthieuvignon 5:7e1c328c5d50 41 unsigned char EtatPompe=0, EtatLanceur=0, EtatAx12=0, ChoixBras=0, ActionAx12=0, EtatTurbine=0, EtatElectroVanne=0, EtatFunnyAction=0, EtatGameEnd=0, EnvoieJack=0;
matthieuvignon 5:7e1c328c5d50 42 unsigned char action_a_effectuer=0, ActionPompe=0, EtatCarteAvant=0, EtatCarteArriere=0;
matthieuvignon 2:9d280856a536 43
ClementBreteau 0:7737d7573e3b 44
ClementBreteau 0:7737d7573e3b 45 /*
ClementBreteau 0:7737d7573e3b 46 DigitalIn IO1(p23);
ClementBreteau 0:7737d7573e3b 47 DigitalIn IO2(p24);
ClementBreteau 0:7737d7573e3b 48 DigitalIn IO3(p25);
ClementBreteau 0:7737d7573e3b 49 DigitalIn IO4(p26);
ClementBreteau 0:7737d7573e3b 50
ClementBreteau 0:7737d7573e3b 51 AnalogIn A_in1(p15);
ClementBreteau 0:7737d7573e3b 52 AnalogIn A_in2(p16);
ClementBreteau 0:7737d7573e3b 53 AnalogIn A_in3(p17);
ClementBreteau 0:7737d7573e3b 54 AnalogIn A_in4(p18);
ClementBreteau 0:7737d7573e3b 55 AnalogIn A_in5(p19);
ClementBreteau 0:7737d7573e3b 56 AnalogIn A_in6(p20);
ClementBreteau 0:7737d7573e3b 57
ClementBreteau 0:7737d7573e3b 58 PwmOut IRL_1(p21);
ClementBreteau 0:7737d7573e3b 59 PwmOut IRL_2(p22);
ClementBreteau 0:7737d7573e3b 60 */
ClementBreteau 0:7737d7573e3b 61
matthieuvignon 5:7e1c328c5d50 62 /****************************************************************************************/
matthieuvignon 5:7e1c328c5d50 63 /* FUNCTION NAME: jack_ISR */
matthieuvignon 5:7e1c328c5d50 64 /* DESCRIPTION : Interruption en changement d'état sur le Jack */
matthieuvignon 5:7e1c328c5d50 65 /****************************************************************************************/
matthieuvignon 5:7e1c328c5d50 66 #ifdef ARRIERE
matthieuvignon 5:7e1c328c5d50 67 void jack_ISR (void)
matthieuvignon 5:7e1c328c5d50 68 {
matthieuvignon 5:7e1c328c5d50 69 led2=1;
matthieuvignon 5:7e1c328c5d50 70 SendRawId(GLOBAL_JACK);
matthieuvignon 5:7e1c328c5d50 71 EnvoieJack = 1;
matthieuvignon 5:7e1c328c5d50 72 TimeJack.start();
matthieuvignon 5:7e1c328c5d50 73 }
matthieuvignon 5:7e1c328c5d50 74 #endif
ClementBreteau 1:f3f702086a30 75
ClementBreteau 0:7737d7573e3b 76
matthieuvignon 2:9d280856a536 77
matthieuvignon 2:9d280856a536 78 int main() {
matthieuvignon 2:9d280856a536 79
matthieuvignon 2:9d280856a536 80 can.frequency(1000000); // fréquence de travail 1Mbit/s
matthieuvignon 2:9d280856a536 81 can.attach(&canRx_ISR); // création de l'interrupt attachée à la réception sur le CAN
matthieuvignon 3:43843ab8af47 82
matthieuvignon 2:9d280856a536 83 // message CAN autorise a declencher l'interruption
matthieuvignon 2:9d280856a536 84
matthieuvignon 3:43843ab8af47 85 CAN2_wrFilter(POMPE);
matthieuvignon 3:43843ab8af47 86
matthieuvignon 2:9d280856a536 87 CAN2_wrFilter(LANCEUR);
matthieuvignon 2:9d280856a536 88 CAN2_wrFilter(TURBINE);
matthieuvignon 3:43843ab8af47 89 CAN2_wrFilter(ELECTROVANNE);
matthieuvignon 2:9d280856a536 90 CAN2_wrFilter(0x123);
matthieuvignon 5:7e1c328c5d50 91
matthieuvignon 5:7e1c328c5d50 92 CAN2_wrFilter(CHECK_CARTE_AVANT);
matthieuvignon 5:7e1c328c5d50 93 CAN2_wrFilter(CHECK_CARTE_ARRIERE);
matthieuvignon 5:7e1c328c5d50 94 CAN2_wrFilter(ACKNOWLEDGE_GLOBAL_JACK);
matthieuvignon 2:9d280856a536 95
matthieuvignon 2:9d280856a536 96 CAN2_wrFilter(SERVO_AX12_ACTION);
matthieuvignon 2:9d280856a536 97 CAN2_wrFilter(SERVO_AX12_ACK);
matthieuvignon 2:9d280856a536 98 CAN2_wrFilter(SERVO_AX12_END);
matthieuvignon 2:9d280856a536 99 CAN2_wrFilter(CHECK_AX12);
matthieuvignon 5:7e1c328c5d50 100 CAN2_wrFilter(GLOBAL_FUNNY_ACTION);
matthieuvignon 5:7e1c328c5d50 101 CAN2_wrFilter(GLOBAL_GAME_END);
matthieuvignon 2:9d280856a536 102
matthieuvignon 5:7e1c328c5d50 103
matthieuvignon 5:7e1c328c5d50 104
matthieuvignon 2:9d280856a536 105
matthieuvignon 3:43843ab8af47 106 #ifdef AVANT
matthieuvignon 5:7e1c328c5d50 107 Pompe.period(0.00005);
matthieuvignon 5:7e1c328c5d50 108 ElectroVanne.period(0.00005);
matthieuvignon 5:7e1c328c5d50 109 turbine.period(0.00005);
matthieuvignon 3:43843ab8af47 110 #endif
matthieuvignon 3:43843ab8af47 111
matthieuvignon 3:43843ab8af47 112
matthieuvignon 3:43843ab8af47 113 #ifdef ARRIERE
matthieuvignon 5:7e1c328c5d50 114 Pompe.period(0.00005);
matthieuvignon 5:7e1c328c5d50 115 MotLanceur.period(0.00005);
matthieuvignon 3:43843ab8af47 116 #endif
matthieuvignon 5:7e1c328c5d50 117
matthieuvignon 3:43843ab8af47 118
matthieuvignon 5:7e1c328c5d50 119
matthieuvignon 2:9d280856a536 120
matthieuvignon 2:9d280856a536 121
matthieuvignon 2:9d280856a536 122 while(1) {
matthieuvignon 2:9d280856a536 123 led = !led;
matthieuvignon 2:9d280856a536 124 canProcessRx();//Traitement des trames CAN en attente
matthieuvignon 2:9d280856a536 125
matthieuvignon 5:7e1c328c5d50 126 if (EtatGameEnd==1) {
matthieuvignon 5:7e1c328c5d50 127 #ifdef AVANT
matthieuvignon 5:7e1c328c5d50 128 Pompe.write(0);
matthieuvignon 5:7e1c328c5d50 129 ElectroVanne.write(0);
matthieuvignon 5:7e1c328c5d50 130 gerer_turbine(0);
matthieuvignon 5:7e1c328c5d50 131 #endif
matthieuvignon 5:7e1c328c5d50 132
matthieuvignon 5:7e1c328c5d50 133 #ifdef ARRIERE
matthieuvignon 5:7e1c328c5d50 134 Pompe.write(0);
matthieuvignon 5:7e1c328c5d50 135 MotLanceur.write(0);
matthieuvignon 5:7e1c328c5d50 136 #endif
matthieuvignon 5:7e1c328c5d50 137
matthieuvignon 5:7e1c328c5d50 138 }
matthieuvignon 5:7e1c328c5d50 139
matthieuvignon 5:7e1c328c5d50 140 if ((EnvoieJack==1) && (TimeJack.read_ms()>100)){
matthieuvignon 5:7e1c328c5d50 141 SendRawId(GLOBAL_JACK);
matthieuvignon 5:7e1c328c5d50 142 TimeJack.reset();
matthieuvignon 5:7e1c328c5d50 143 }
matthieuvignon 5:7e1c328c5d50 144
matthieuvignon 5:7e1c328c5d50 145
matthieuvignon 5:7e1c328c5d50 146
matthieuvignon 5:7e1c328c5d50 147
matthieuvignon 2:9d280856a536 148
matthieuvignon 2:9d280856a536 149 if (action_a_effectuer==1) {
matthieuvignon 2:9d280856a536 150 action_a_effectuer=0;
matthieuvignon 2:9d280856a536 151
matthieuvignon 3:43843ab8af47 152 if (Cote==CARTE) {
matthieuvignon 5:7e1c328c5d50 153 #ifdef AVANT
matthieuvignon 5:7e1c328c5d50 154 if (EtatCarteAvant==1) {
matthieuvignon 5:7e1c328c5d50 155 EtatCarteAvant=0;
matthieuvignon 5:7e1c328c5d50 156 initialisation_AX12();
matthieuvignon 5:7e1c328c5d50 157
matthieuvignon 5:7e1c328c5d50 158 AX12_automate(1);
matthieuvignon 5:7e1c328c5d50 159 AX12_automate(16);
matthieuvignon 5:7e1c328c5d50 160 AX12_automate(21);
matthieuvignon 5:7e1c328c5d50 161 }
matthieuvignon 5:7e1c328c5d50 162 #endif
matthieuvignon 5:7e1c328c5d50 163
matthieuvignon 5:7e1c328c5d50 164 #ifdef ARRIERE
matthieuvignon 5:7e1c328c5d50 165 if (EtatCarteArriere==1) {
matthieuvignon 5:7e1c328c5d50 166 EtatCarteArriere=0;
matthieuvignon 5:7e1c328c5d50 167
matthieuvignon 5:7e1c328c5d50 168 initialisation_AX12();
matthieuvignon 5:7e1c328c5d50 169 AX12_automate(1);
matthieuvignon 5:7e1c328c5d50 170 AX12_automate(36);
matthieuvignon 5:7e1c328c5d50 171 AX12_automate(41);
matthieuvignon 5:7e1c328c5d50 172 jack.mode(PullDown); // désactivation de la résistance interne du jack
matthieuvignon 5:7e1c328c5d50 173 jack.fall(&jack_ISR); // création de l'interrupt attachée au changement d'état (front descendant) sur le jack
matthieuvignon 5:7e1c328c5d50 174 }
matthieuvignon 5:7e1c328c5d50 175 #endif
matthieuvignon 5:7e1c328c5d50 176
matthieuvignon 5:7e1c328c5d50 177 if (EtatFunnyAction==1){
matthieuvignon 5:7e1c328c5d50 178 AX12_automate(22); //Funny Action
matthieuvignon 5:7e1c328c5d50 179 }
matthieuvignon 5:7e1c328c5d50 180
matthieuvignon 5:7e1c328c5d50 181
matthieuvignon 3:43843ab8af47 182 if (ActionAx12==1){
matthieuvignon 3:43843ab8af47 183 AX12_automate(EtatAx12);
matthieuvignon 3:43843ab8af47 184 ActionAx12=0;
matthieuvignon 3:43843ab8af47 185 }
matthieuvignon 3:43843ab8af47 186
matthieuvignon 3:43843ab8af47 187 if ((EtatPompe==1)&&(ActionPompe==1))
matthieuvignon 3:43843ab8af47 188 ActionPompe=0, Pompe.write(1);
matthieuvignon 3:43843ab8af47 189 else if ((EtatPompe==0)&&(ActionPompe==1))
matthieuvignon 3:43843ab8af47 190 Pompe.write(0), ActionPompe=0;
matthieuvignon 3:43843ab8af47 191
matthieuvignon 3:43843ab8af47 192 #ifdef AVANT
matthieuvignon 3:43843ab8af47 193 if (EtatTurbine==1)
matthieuvignon 5:7e1c328c5d50 194 turbine.write(1);
matthieuvignon 3:43843ab8af47 195 else if (EtatTurbine==0)
matthieuvignon 5:7e1c328c5d50 196 turbine.write(0);
matthieuvignon 3:43843ab8af47 197
matthieuvignon 3:43843ab8af47 198 if (EtatElectroVanne==1)
matthieuvignon 3:43843ab8af47 199 ElectroVanne.write(1);
matthieuvignon 3:43843ab8af47 200 else if (EtatElectroVanne==0)
matthieuvignon 3:43843ab8af47 201 ElectroVanne.write(0);
matthieuvignon 3:43843ab8af47 202 #endif
matthieuvignon 3:43843ab8af47 203
matthieuvignon 3:43843ab8af47 204 #ifdef ARRIERE
matthieuvignon 5:7e1c328c5d50 205 if (EtatLanceur==1) {
matthieuvignon 3:43843ab8af47 206 MotLanceur.write(1);
matthieuvignon 5:7e1c328c5d50 207 wait(0.2);
matthieuvignon 5:7e1c328c5d50 208
matthieuvignon 5:7e1c328c5d50 209 unsigned char i;
matthieuvignon 5:7e1c328c5d50 210 for(unsigned char j=1;j<10;j++) {
matthieuvignon 5:7e1c328c5d50 211 for(i=10;i>5;i--) {
matthieuvignon 5:7e1c328c5d50 212 float value=(float)i/10.;
matthieuvignon 5:7e1c328c5d50 213 MotLanceur.write(value);
matthieuvignon 5:7e1c328c5d50 214 wait(0.2);
matthieuvignon 5:7e1c328c5d50 215 }
matthieuvignon 5:7e1c328c5d50 216 }
matthieuvignon 5:7e1c328c5d50 217 MotLanceur.write(0);
matthieuvignon 5:7e1c328c5d50 218
matthieuvignon 5:7e1c328c5d50 219 /* MotLanceur.write(1);
matthieuvignon 5:7e1c328c5d50 220 wait(0.2);
matthieuvignon 5:7e1c328c5d50 221 MotLanceur.write(0.27);
matthieuvignon 5:7e1c328c5d50 222 wait(0.1);
matthieuvignon 5:7e1c328c5d50 223 MotLanceur.write(1);
matthieuvignon 5:7e1c328c5d50 224 wait(0.1);
matthieuvignon 5:7e1c328c5d50 225 MotLanceur.write(0.27);
matthieuvignon 5:7e1c328c5d50 226 wait(0.1);
matthieuvignon 5:7e1c328c5d50 227 MotLanceur.write(1);
matthieuvignon 5:7e1c328c5d50 228 wait(0.1);
matthieuvignon 5:7e1c328c5d50 229 MotLanceur.write(0.27);
matthieuvignon 5:7e1c328c5d50 230 wait(0.1);
matthieuvignon 5:7e1c328c5d50 231 MotLanceur.write(1);
matthieuvignon 5:7e1c328c5d50 232 wait(0.1);
matthieuvignon 5:7e1c328c5d50 233 MotLanceur.write(0.27);
matthieuvignon 5:7e1c328c5d50 234 wait(3);
matthieuvignon 5:7e1c328c5d50 235 MotLanceur.write(0);*/
matthieuvignon 5:7e1c328c5d50 236 }
matthieuvignon 3:43843ab8af47 237 else if (EtatLanceur==0)
matthieuvignon 3:43843ab8af47 238 MotLanceur.write(0);
matthieuvignon 3:43843ab8af47 239 #endif
matthieuvignon 3:43843ab8af47 240
matthieuvignon 2:9d280856a536 241 }
matthieuvignon 3:43843ab8af47 242 }
ClementBreteau 0:7737d7573e3b 243 }
ClementBreteau 0:7737d7573e3b 244 }
ClementBreteau 0:7737d7573e3b 245
matthieuvignon 5:7e1c328c5d50 246
matthieuvignon 5:7e1c328c5d50 247
matthieuvignon 5:7e1c328c5d50 248
matthieuvignon 5:7e1c328c5d50 249
matthieuvignon 5:7e1c328c5d50 250