Natalia Garavito
/
Nucleo_read_analog_value
Diff: main.cpp
- Revision:
- 0:7411b02903e3
- Child:
- 1:62775d3592cf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Aug 20 17:13:30 2019 +0000 @@ -0,0 +1,97 @@ +#include "mbed.h" + +Serial pc(SERIAL_TX, SERIAL_RX); // (TX, RX) +I2C i2c(PB_9, PB_8 ); // (SDA, SCL) +DigitalIn button(PC_13); + +const int addr = 0xD0; // 7 bit I2C address +char cmd[2]; +char read_buffer[14]; +char save_p[10]; + +int16_t acc_x = 0, acc_y = 0, acc_z = 0; +int16_t gyr_x = 0, gyr_y = 0, gyr_z = 0; +int16_t temp = 0; + +float ACC_SEN = 16384.0; //Resolución ACC +float GYR_SEN = 131.0; //Resolución GYR +float TEM_SEN = 340.0; //Resolución temp + +float facc_x = 0, facc_y = 0, facc_z = 0; +float fgyr_x = 0, fgyr_y = 0, fgyr_z = 0; +float ftemp = 0; + +DigitalOut myled(LED1); + +int main() +{ + pc.printf("Prueba MPU6050 \n\r"); + + cmd[0] = 0x6B; + cmd[1] = 0x00; + i2c.write(addr, cmd, 2); //Desactivar modo hibernación + + cmd[0] = 0x1B; + cmd[1] = 0x00; + i2c.write(addr, cmd, 2); //gyro full scale 250 DPS + + cmd[0] = 0x1C; + cmd[1] = 0x00; + i2c.write(addr, cmd, 2); //ACC fullsclae 2G + + while(1) { + wait(1); + + cmd[0]=0x3B; + i2c.write(addr, cmd, 1); //Escritura del registro de inicio + + //for(int i;i<=10;i++) + //{ + i2c.read(addr, read_buffer, 14); //Lectura en rafaga de los valores de la MPU + wait_ms(1); + //} + + //.................Construcción de la medición de los valores .................. + + + acc_x = read_buffer[0]<<8 | read_buffer[1]; + acc_y = read_buffer[2]<<8 | read_buffer[3]; + acc_z = read_buffer[4]<<8 | read_buffer[5]; + temp = read_buffer[6]<<8 | read_buffer[7]; + gyr_x = read_buffer[8]<<8 | read_buffer[9]; + gyr_y = read_buffer[10]<<8 | read_buffer[11]; + gyr_z = read_buffer[12]<<8 | read_buffer[13]; + + + //pc.printf("ACCx = %i ACCy = %i ACCz = %i \n\r", acc_x, acc_y, acc_z); + + while(button!=1) + { + + facc_x = acc_x/ACC_SEN; + facc_y = acc_y/ACC_SEN; + facc_z = acc_z/ACC_SEN; + + + fgyr_x = gyr_x/GYR_SEN; + fgyr_y = gyr_y/GYR_SEN; + fgyr_z = gyr_z/GYR_SEN; + + // pc.printf("GYRx = %.2f GYRy = %.2f GYRz = %.2f \n\r", fgyr_x, fgyr_y, fgyr_z); + + ftemp= (temp - 521)/TEM_SEN; + + //pc.printf("Temp = %.2f \r\n",ftemp); + for(int i=0;i<=9;i++){ + pc.printf("ACCx ACCy ACCz GYRx GYRy GYRz Temp \n\r"); + pc.printf("%.2f %.2f %.2f %.2f %.2f %.2f %.2f \n\r", facc_x, facc_y, facc_z, fgyr_x, fgyr_y, fgyr_z, ftemp); + } + } + + /* for(int i=0; i<14; i++) { + pc.printf("Buffer[%i] = %i \n\r",i,read_buffer[i]); + }*/ + + myled = !myled; + } +} \ No newline at end of file