![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
test hardware
Dependencies: mbed MPU6050 PulseWidthCounter PulseCounter
main.cpp@0:0232ed5c62b6, 2019-09-24 (annotated)
- 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?
User | Revision | Line number | New 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 | } |