Laura Lamprea
/
2_calibration
calibracion
main.cpp
- Committer:
- jeicol
- Date:
- 2021-02-27
- Revision:
- 0:2104545a6597
- Child:
- 1:ecce7ee00ac2
File content as of revision 0:2104545a6597:
/* mbed Microcontroller Library * Copyright (c) 2019 ARM Limited * SPDX-License-Identifier: Apache-2.0 */ #include "mbed.h" #include "platform/mbed_thread.h" // Blinking rate in milliseconds #define BLINKING_RATE1_MS 500 // Blinking rate in milliseconds #define ADDRESS_MPU 0XD0 #define BLINKING_RATE_MS 500 #define CONS_AC 2.0/32768.0 #define CONS_GY 250.0/32768.0 #define CONS_T 333.87 //estados iniciales en Hexadecimal int16_t ini_ac_x, ini_ac_y, ini_ac_z; int16_t ini_gy_x, ini_gy_y, ini_gy_z; int16_t ini_tem; //variable finales float ac_x, ac_y, ac_z; float gy_x, gy_y, gy_z; float tem; //data char cmda1[2]; char data[1]; char datos_ac_gy[14]; float buffer[500][8]; int j; Timer ts;//objeto tiempo float timer=0; //inicializar conexiones Serial com_pc(SERIAL_TX, SERIAL_RX); I2C i2c(PB_9,PB_8);//sda,scl DigitalIn eneable (PA_0); int main() { // Initialise the digital pin LED1 as an output DigitalOut led(LED2); cmda1[0]=0x6B; cmda1[1]=0x00; i2c.write(ADDRESS_MPU,cmda1,2); //// com_pc.printf("hizo la prueba de teset"); cmda1[0]=0x75; i2c.write(ADDRESS_MPU,cmda1,1); i2c.read(ADDRESS_MPU,data,1); if (data[0]!=0x68){ com_pc.printf("conexion fallida- \n"); com_pc.printf("%#X",data[0]); }else{ com_pc.printf("conexion exitosa- \n"); com_pc.printf("%#X",data[0]); } wait(0.1); //configurar resolucion cmda1[0]=0x1B;//giroscopio cmda1[1]=0x08; i2c.write(ADDRESS_MPU,cmda1,2); cmda1[0]=0x1C;//acelerometro cmda1[1]=0x00; i2c.write(ADDRESS_MPU,cmda1,2); wait(0.1); while (true){ led = 1; if(com_pc.getc() == 'h'){ for (j=0; j<=499; j++){ cmda1[0]=0x3B; i2c.write(ADDRESS_MPU,cmda1,1); i2c.read(ADDRESS_MPU,datos_ac_gy,14); ts.reset(); ts.start(); ini_ac_x= datos_ac_gy[0]<<8 | datos_ac_gy[1]; ini_ac_y= datos_ac_gy[2]<<8 | datos_ac_gy[3]; ini_ac_z= datos_ac_gy[4]<<8 | datos_ac_gy[5]; ini_tem = datos_ac_gy[6]<<8 | datos_ac_gy[7]; ini_gy_x= datos_ac_gy[8]<<8 | datos_ac_gy[9]; ini_gy_y= datos_ac_gy[10]<<8 | datos_ac_gy[11]; ini_gy_z= datos_ac_gy[12]<<8 | datos_ac_gy[13]; //com_pc.printf(ini_ac_x, ini_ac_y, ini_ac_yz, ini_gy_x, ini_gy_y, ini_gy_z, ini_tem); ac_x = ini_ac_x*CONS_AC; ac_y = ini_ac_y*CONS_AC; ac_z = ini_ac_z*CONS_AC; gy_x =ini_gy_x*CONS_GY; gy_y =ini_gy_y*CONS_GY; gy_z =ini_gy_z*CONS_GY; tem = (ini_tem/CONS_T)+21; wait_ms(9); wait_us(962); ts.stop(); timer = ts.read(); com_pc.printf("%f \n",timer ); com_pc.printf("%d %.2f %.2f %.2f | %.2f %.2f %.2f t= %.2f \n\r",(j+1), ac_x, ac_y, ac_z, gy_x, gy_y, gy_z, tem); } } } }