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);           
            }
        }
    }    
}