Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed MPU6050 PulseWidthCounter PulseCounter
main.cpp
- Committer:
- ohlimi2
- Date:
- 2019-09-24
- Revision:
- 0:0232ed5c62b6
- Child:
- 1:b1f5ab5f08a2
File content as of revision 0:0232ed5c62b6:
#include "mbed.h"
#include "MPU6050.h"
// declaration des entrées analogiques
AnalogIn analog_value_PA4(PA_4);
AnalogIn analog_value_PA5(PA_5);
AnalogIn analog_value_PA6(PA_6);
AnalogIn analog_value_PC0(PC_0);
AnalogIn analog_value_PF3(PF_3);
AnalogIn analog_value_PF4(PF_4);
AnalogIn analog_value_PF9(PF_9);
AnalogIn analog_value_PF10(PF_10);
// declaration des sorties PWM
PwmOut pwm_PE9(PE_9);
PwmOut pwm_PF7(PF_7);
PwmOut pwm_PF6(PF_6);
PwmOut pwm_PC8(PC_8);
PwmOut pwm_PD12(PD_12);
// declaration des IO
DigitalOut led(LED1);
// declaration d'une interruption sur le front de la pin d'odometre
//InterruptRise my_interruptPin(PF_8);
// interruption
//void pressed()
//{
// cntr_odometre++ ;
//}
// initialisation du MPU6050
DigitalOut myled(LED1);
Serial pc(USBTX, USBRX,115200);
MPU6050 mpu;
int16_t ax, ay, az;
float ax_g,ay_g,az_g;
int16_t gx, gy, gz;
int main()
{
float meas_adc_PA4;
float meas_adc_PA5;
float meas_adc_PA6;
float meas_adc_PC0;
float meas_adc_PF3;
float meas_adc_PF4;
float meas_adc_PF9;
float meas_adc_PF10;
float meas_adc_PA4_V;
float meas_adc_PA5_V;
float meas_adc_PA6_V;
float meas_adc_PC0_V;
float meas_adc_PF3_V;
float meas_adc_PF4_V;
float meas_adc_PF9_V;
float meas_adc_PF10_V;
// configuration des PWMs
pwm_PE9.period_ms(10);
pwm_PF7.period_ms(10);
pwm_PF6.period_ms(10);
pwm_PC8.period_ms(10);
pwm_PD12.period_ms(10);
pwm_PE9.pulsewidth_us(1000);
pwm_PF7.pulsewidth_us(1250);
pwm_PF6.pulsewidth_us(1500);
pwm_PC8.pulsewidth_us(1750);
pwm_PD12.pulsewidth_us(2000);
//MPU6050
pc.printf("MPU6050 test\n\n");
pc.printf("MPU6050 initialize \n");
mpu.initialize();
pc.printf("MPU6050 testConnection \n");
bool mpu6050TestResult = mpu.testConnection();
if(mpu6050TestResult) {
pc.printf("MPU6050 test passed \n");
} else {
pc.printf("MPU6050 test failed \n");
}
while(1) {
// recuperer la valeur en float entre 0.0 et 1.0
meas_adc_PA4 = analog_value_PA4.read();
meas_adc_PA5 = analog_value_PA5.read();
meas_adc_PA6 = analog_value_PA6.read();
meas_adc_PC0 = analog_value_PC0.read();
meas_adc_PF3 = analog_value_PF3.read();
meas_adc_PF4 = analog_value_PF4.read();
meas_adc_PF9 = analog_value_PF9.read();
meas_adc_PF10 = analog_value_PF10.read();
// Multiplier par la tension de reference pour avoir la tension en volt
meas_adc_PA4_V = meas_adc_PA4* 3300 ;
meas_adc_PA5_V = meas_adc_PA5* 3300 ;
meas_adc_PA6_V = meas_adc_PA6* 3300 ;
meas_adc_PC0_V = meas_adc_PC0* 3300 ;
meas_adc_PF3_V = meas_adc_PF3* 3300 ;
meas_adc_PF4_V = meas_adc_PF4* 3300 ;
meas_adc_PF9_V = meas_adc_PF9* 3300 ;
meas_adc_PF10_V = meas_adc_PF10* 3300 ;
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
//correction pour avoir une acceleration coef empirique
ax_g = (float)ax /1658.0 ;
ay_g = (float)ay /1658.0 ;
az_g = (float)az /1658.0 ;
// affiche les valeurs sur la com usb
printf("\f");
// printf("meas_adc_PA4_V = %.0f mV\n\r", meas_adc_PA4_V);
// printf("meas_adc_PA5_V = %.0f mV\n\r", meas_adc_PA5_V);
// printf("meas_adc_PA6_V = %.0f mV\n\r", meas_adc_PA6_V);
// printf("meas_adc_PC0_V = %.0f mV\n\r", meas_adc_PC0_V);
// printf("meas_adc_PF3_V = %.0f mV\n\r", meas_adc_PF3_V);
// printf("meas_adc_PF4_V = %.0f mV\n\r", meas_adc_PF4_V);
// printf("meas_adc_PF9_V = %.0f mV\n\r", meas_adc_PF9_V);
// printf("meas_adc_PF10_V = %.0f mV\n\r", meas_adc_PF10_V);
//writing current accelerometer and gyro position
printf("acc X =%.2f; acc Y =%.2f; acc Z=%.2f;\n\r",ax_g,ay_g,az_g);
printf("Gyr X =%d; Gyr Y =%d; Gyr Z =%d\n",gx,gy,gz);
//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);
led = !led;
wait(1.0); // delais
}
}