test hardware

Dependencies:   mbed MPU6050 PulseWidthCounter PulseCounter

Committer:
ohlimi2
Date:
Tue Sep 24 11:56:20 2019 +0000
Revision:
0:0232ed5c62b6
Child:
1:b1f5ab5f08a2
test hardware

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ohlimi2 0:0232ed5c62b6 1 #include "mbed.h"
ohlimi2 0:0232ed5c62b6 2 #include "MPU6050.h"
ohlimi2 0:0232ed5c62b6 3
ohlimi2 0:0232ed5c62b6 4 // declaration des entrées analogiques
ohlimi2 0:0232ed5c62b6 5 AnalogIn analog_value_PA4(PA_4);
ohlimi2 0:0232ed5c62b6 6 AnalogIn analog_value_PA5(PA_5);
ohlimi2 0:0232ed5c62b6 7 AnalogIn analog_value_PA6(PA_6);
ohlimi2 0:0232ed5c62b6 8 AnalogIn analog_value_PC0(PC_0);
ohlimi2 0:0232ed5c62b6 9
ohlimi2 0:0232ed5c62b6 10 AnalogIn analog_value_PF3(PF_3);
ohlimi2 0:0232ed5c62b6 11 AnalogIn analog_value_PF4(PF_4);
ohlimi2 0:0232ed5c62b6 12 AnalogIn analog_value_PF9(PF_9);
ohlimi2 0:0232ed5c62b6 13 AnalogIn analog_value_PF10(PF_10);
ohlimi2 0:0232ed5c62b6 14
ohlimi2 0:0232ed5c62b6 15 // declaration des sorties PWM
ohlimi2 0:0232ed5c62b6 16 PwmOut pwm_PE9(PE_9);
ohlimi2 0:0232ed5c62b6 17 PwmOut pwm_PF7(PF_7);
ohlimi2 0:0232ed5c62b6 18 PwmOut pwm_PF6(PF_6);
ohlimi2 0:0232ed5c62b6 19 PwmOut pwm_PC8(PC_8);
ohlimi2 0:0232ed5c62b6 20 PwmOut pwm_PD12(PD_12);
ohlimi2 0:0232ed5c62b6 21
ohlimi2 0:0232ed5c62b6 22 // declaration des IO
ohlimi2 0:0232ed5c62b6 23
ohlimi2 0:0232ed5c62b6 24 DigitalOut led(LED1);
ohlimi2 0:0232ed5c62b6 25
ohlimi2 0:0232ed5c62b6 26 // declaration d'une interruption sur le front de la pin d'odometre
ohlimi2 0:0232ed5c62b6 27 //InterruptRise my_interruptPin(PF_8);
ohlimi2 0:0232ed5c62b6 28
ohlimi2 0:0232ed5c62b6 29 // interruption
ohlimi2 0:0232ed5c62b6 30 //void pressed()
ohlimi2 0:0232ed5c62b6 31 //{
ohlimi2 0:0232ed5c62b6 32 // cntr_odometre++ ;
ohlimi2 0:0232ed5c62b6 33 //}
ohlimi2 0:0232ed5c62b6 34
ohlimi2 0:0232ed5c62b6 35 // initialisation du MPU6050
ohlimi2 0:0232ed5c62b6 36 DigitalOut myled(LED1);
ohlimi2 0:0232ed5c62b6 37 Serial pc(USBTX, USBRX,115200);
ohlimi2 0:0232ed5c62b6 38
ohlimi2 0:0232ed5c62b6 39 MPU6050 mpu;
ohlimi2 0:0232ed5c62b6 40
ohlimi2 0:0232ed5c62b6 41
ohlimi2 0:0232ed5c62b6 42 int16_t ax, ay, az;
ohlimi2 0:0232ed5c62b6 43 float ax_g,ay_g,az_g;
ohlimi2 0:0232ed5c62b6 44
ohlimi2 0:0232ed5c62b6 45 int16_t gx, gy, gz;
ohlimi2 0:0232ed5c62b6 46
ohlimi2 0:0232ed5c62b6 47 int main()
ohlimi2 0:0232ed5c62b6 48 {
ohlimi2 0:0232ed5c62b6 49 float meas_adc_PA4;
ohlimi2 0:0232ed5c62b6 50 float meas_adc_PA5;
ohlimi2 0:0232ed5c62b6 51 float meas_adc_PA6;
ohlimi2 0:0232ed5c62b6 52 float meas_adc_PC0;
ohlimi2 0:0232ed5c62b6 53
ohlimi2 0:0232ed5c62b6 54 float meas_adc_PF3;
ohlimi2 0:0232ed5c62b6 55 float meas_adc_PF4;
ohlimi2 0:0232ed5c62b6 56 float meas_adc_PF9;
ohlimi2 0:0232ed5c62b6 57 float meas_adc_PF10;
ohlimi2 0:0232ed5c62b6 58
ohlimi2 0:0232ed5c62b6 59 float meas_adc_PA4_V;
ohlimi2 0:0232ed5c62b6 60 float meas_adc_PA5_V;
ohlimi2 0:0232ed5c62b6 61 float meas_adc_PA6_V;
ohlimi2 0:0232ed5c62b6 62 float meas_adc_PC0_V;
ohlimi2 0:0232ed5c62b6 63
ohlimi2 0:0232ed5c62b6 64 float meas_adc_PF3_V;
ohlimi2 0:0232ed5c62b6 65 float meas_adc_PF4_V;
ohlimi2 0:0232ed5c62b6 66 float meas_adc_PF9_V;
ohlimi2 0:0232ed5c62b6 67 float meas_adc_PF10_V;
ohlimi2 0:0232ed5c62b6 68
ohlimi2 0:0232ed5c62b6 69 // configuration des PWMs
ohlimi2 0:0232ed5c62b6 70
ohlimi2 0:0232ed5c62b6 71 pwm_PE9.period_ms(10);
ohlimi2 0:0232ed5c62b6 72 pwm_PF7.period_ms(10);
ohlimi2 0:0232ed5c62b6 73 pwm_PF6.period_ms(10);
ohlimi2 0:0232ed5c62b6 74 pwm_PC8.period_ms(10);
ohlimi2 0:0232ed5c62b6 75 pwm_PD12.period_ms(10);
ohlimi2 0:0232ed5c62b6 76
ohlimi2 0:0232ed5c62b6 77 pwm_PE9.pulsewidth_us(1000);
ohlimi2 0:0232ed5c62b6 78 pwm_PF7.pulsewidth_us(1250);
ohlimi2 0:0232ed5c62b6 79 pwm_PF6.pulsewidth_us(1500);
ohlimi2 0:0232ed5c62b6 80 pwm_PC8.pulsewidth_us(1750);
ohlimi2 0:0232ed5c62b6 81 pwm_PD12.pulsewidth_us(2000);
ohlimi2 0:0232ed5c62b6 82
ohlimi2 0:0232ed5c62b6 83 //MPU6050
ohlimi2 0:0232ed5c62b6 84 pc.printf("MPU6050 test\n\n");
ohlimi2 0:0232ed5c62b6 85 pc.printf("MPU6050 initialize \n");
ohlimi2 0:0232ed5c62b6 86
ohlimi2 0:0232ed5c62b6 87 mpu.initialize();
ohlimi2 0:0232ed5c62b6 88 pc.printf("MPU6050 testConnection \n");
ohlimi2 0:0232ed5c62b6 89
ohlimi2 0:0232ed5c62b6 90 bool mpu6050TestResult = mpu.testConnection();
ohlimi2 0:0232ed5c62b6 91 if(mpu6050TestResult) {
ohlimi2 0:0232ed5c62b6 92 pc.printf("MPU6050 test passed \n");
ohlimi2 0:0232ed5c62b6 93 } else {
ohlimi2 0:0232ed5c62b6 94 pc.printf("MPU6050 test failed \n");
ohlimi2 0:0232ed5c62b6 95 }
ohlimi2 0:0232ed5c62b6 96
ohlimi2 0:0232ed5c62b6 97
ohlimi2 0:0232ed5c62b6 98 while(1) {
ohlimi2 0:0232ed5c62b6 99 // recuperer la valeur en float entre 0.0 et 1.0
ohlimi2 0:0232ed5c62b6 100 meas_adc_PA4 = analog_value_PA4.read();
ohlimi2 0:0232ed5c62b6 101 meas_adc_PA5 = analog_value_PA5.read();
ohlimi2 0:0232ed5c62b6 102 meas_adc_PA6 = analog_value_PA6.read();
ohlimi2 0:0232ed5c62b6 103 meas_adc_PC0 = analog_value_PC0.read();
ohlimi2 0:0232ed5c62b6 104
ohlimi2 0:0232ed5c62b6 105 meas_adc_PF3 = analog_value_PF3.read();
ohlimi2 0:0232ed5c62b6 106 meas_adc_PF4 = analog_value_PF4.read();
ohlimi2 0:0232ed5c62b6 107 meas_adc_PF9 = analog_value_PF9.read();
ohlimi2 0:0232ed5c62b6 108 meas_adc_PF10 = analog_value_PF10.read();
ohlimi2 0:0232ed5c62b6 109
ohlimi2 0:0232ed5c62b6 110 // Multiplier par la tension de reference pour avoir la tension en volt
ohlimi2 0:0232ed5c62b6 111 meas_adc_PA4_V = meas_adc_PA4* 3300 ;
ohlimi2 0:0232ed5c62b6 112 meas_adc_PA5_V = meas_adc_PA5* 3300 ;
ohlimi2 0:0232ed5c62b6 113 meas_adc_PA6_V = meas_adc_PA6* 3300 ;
ohlimi2 0:0232ed5c62b6 114 meas_adc_PC0_V = meas_adc_PC0* 3300 ;
ohlimi2 0:0232ed5c62b6 115
ohlimi2 0:0232ed5c62b6 116 meas_adc_PF3_V = meas_adc_PF3* 3300 ;
ohlimi2 0:0232ed5c62b6 117 meas_adc_PF4_V = meas_adc_PF4* 3300 ;
ohlimi2 0:0232ed5c62b6 118 meas_adc_PF9_V = meas_adc_PF9* 3300 ;
ohlimi2 0:0232ed5c62b6 119 meas_adc_PF10_V = meas_adc_PF10* 3300 ;
ohlimi2 0:0232ed5c62b6 120
ohlimi2 0:0232ed5c62b6 121 mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
ohlimi2 0:0232ed5c62b6 122 //correction pour avoir une acceleration coef empirique
ohlimi2 0:0232ed5c62b6 123 ax_g = (float)ax /1658.0 ;
ohlimi2 0:0232ed5c62b6 124 ay_g = (float)ay /1658.0 ;
ohlimi2 0:0232ed5c62b6 125 az_g = (float)az /1658.0 ;
ohlimi2 0:0232ed5c62b6 126
ohlimi2 0:0232ed5c62b6 127 // affiche les valeurs sur la com usb
ohlimi2 0:0232ed5c62b6 128 printf("\f");
ohlimi2 0:0232ed5c62b6 129 // printf("meas_adc_PA4_V = %.0f mV\n\r", meas_adc_PA4_V);
ohlimi2 0:0232ed5c62b6 130 // printf("meas_adc_PA5_V = %.0f mV\n\r", meas_adc_PA5_V);
ohlimi2 0:0232ed5c62b6 131 // printf("meas_adc_PA6_V = %.0f mV\n\r", meas_adc_PA6_V);
ohlimi2 0:0232ed5c62b6 132 // printf("meas_adc_PC0_V = %.0f mV\n\r", meas_adc_PC0_V);
ohlimi2 0:0232ed5c62b6 133
ohlimi2 0:0232ed5c62b6 134 // printf("meas_adc_PF3_V = %.0f mV\n\r", meas_adc_PF3_V);
ohlimi2 0:0232ed5c62b6 135 // printf("meas_adc_PF4_V = %.0f mV\n\r", meas_adc_PF4_V);
ohlimi2 0:0232ed5c62b6 136 // printf("meas_adc_PF9_V = %.0f mV\n\r", meas_adc_PF9_V);
ohlimi2 0:0232ed5c62b6 137 // printf("meas_adc_PF10_V = %.0f mV\n\r", meas_adc_PF10_V);
ohlimi2 0:0232ed5c62b6 138
ohlimi2 0:0232ed5c62b6 139
ohlimi2 0:0232ed5c62b6 140 //writing current accelerometer and gyro position
ohlimi2 0:0232ed5c62b6 141
ohlimi2 0:0232ed5c62b6 142 printf("acc X =%.2f; acc Y =%.2f; acc Z=%.2f;\n\r",ax_g,ay_g,az_g);
ohlimi2 0:0232ed5c62b6 143 printf("Gyr X =%d; Gyr Y =%d; Gyr Z =%d\n",gx,gy,gz);
ohlimi2 0:0232ed5c62b6 144 //pc.printf("acc X =%d; acc Y =%d; acc Z=%d; Gyr X =%d; Gyr Y =%d; Gyr Z =%d\n",ax,ay,az,gx,gy,gz);
ohlimi2 0:0232ed5c62b6 145
ohlimi2 0:0232ed5c62b6 146
ohlimi2 0:0232ed5c62b6 147 led = !led;
ohlimi2 0:0232ed5c62b6 148 wait(1.0); // delais
ohlimi2 0:0232ed5c62b6 149 }
ohlimi2 0:0232ed5c62b6 150 }