Alyson Castiblanco
/
MPU6050_PRIMER_MUESTREO
PRIMER MUESTREO DE LA IMU
main.cpp@0:0b4ace0e76db, 2019-08-24 (annotated)
- Committer:
- acastiblancoc
- Date:
- Sat Aug 24 20:27:34 2019 +0000
- Revision:
- 0:0b4ace0e76db
PRIMERA PRUEBA DE MUESTREO
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
acastiblancoc | 0:0b4ace0e76db | 1 | #include "mbed.h" |
acastiblancoc | 0:0b4ace0e76db | 2 | |
acastiblancoc | 0:0b4ace0e76db | 3 | Serial pc(SERIAL_TX, SERIAL_RX); // (TX, RX) |
acastiblancoc | 0:0b4ace0e76db | 4 | I2C i2c(PB_9, PB_8 ); // (SDA, SCL) |
acastiblancoc | 0:0b4ace0e76db | 5 | DigitalIn boton (USER_BUTTON); |
acastiblancoc | 0:0b4ace0e76db | 6 | const int addr = 0xD0; // 7 bit I2C address. Accede a la comunicacion I2C |
acastiblancoc | 0:0b4ace0e76db | 7 | char cmd[2]; |
acastiblancoc | 0:0b4ace0e76db | 8 | char read_buffer[14]; |
acastiblancoc | 0:0b4ace0e76db | 9 | int16_t acc_x = 0, acc_y = 0, acc_z = 0; |
acastiblancoc | 0:0b4ace0e76db | 10 | int16_t gyr_x = 0, gyr_y = 0, gyr_z = 0; |
acastiblancoc | 0:0b4ace0e76db | 11 | int16_t temp = 0; |
acastiblancoc | 0:0b4ace0e76db | 12 | int flag=0; |
acastiblancoc | 0:0b4ace0e76db | 13 | float ACC_SEN = 16384.0; //Resolución ACC |
acastiblancoc | 0:0b4ace0e76db | 14 | float GYR_SEN = 131.0; //Resolución GYR |
acastiblancoc | 0:0b4ace0e76db | 15 | float TEM_SEN = 340.0; //Resolución temp |
acastiblancoc | 0:0b4ace0e76db | 16 | |
acastiblancoc | 0:0b4ace0e76db | 17 | float facc_x = 0, facc_y = 0, facc_z = 0; |
acastiblancoc | 0:0b4ace0e76db | 18 | float fgyr_x = 0, fgyr_y = 0, fgyr_z = 0; |
acastiblancoc | 0:0b4ace0e76db | 19 | float ftemp = 0; |
acastiblancoc | 0:0b4ace0e76db | 20 | |
acastiblancoc | 0:0b4ace0e76db | 21 | DigitalOut myled(LED1); |
acastiblancoc | 0:0b4ace0e76db | 22 | |
acastiblancoc | 0:0b4ace0e76db | 23 | |
acastiblancoc | 0:0b4ace0e76db | 24 | void LECTURA_DATOS100 () |
acastiblancoc | 0:0b4ace0e76db | 25 | { |
acastiblancoc | 0:0b4ace0e76db | 26 | for(int i=0; i<=100;i++) |
acastiblancoc | 0:0b4ace0e76db | 27 | { |
acastiblancoc | 0:0b4ace0e76db | 28 | wait_ms(10); |
acastiblancoc | 0:0b4ace0e76db | 29 | cmd[0]=0x3B; |
acastiblancoc | 0:0b4ace0e76db | 30 | i2c.write(addr, cmd, 1); //Escritura del registro de inicio, comienza a revisar los diferentes registros segun su orden. |
acastiblancoc | 0:0b4ace0e76db | 31 | //Por eso el orden de impresion y el tamaño del buffer (14) |
acastiblancoc | 0:0b4ace0e76db | 32 | i2c.read(addr, read_buffer, 14); //Lectura en rafaga de los valores de la MPU |
acastiblancoc | 0:0b4ace0e76db | 33 | |
acastiblancoc | 0:0b4ace0e76db | 34 | //.................Construcción de la medición de los valores .................. |
acastiblancoc | 0:0b4ace0e76db | 35 | acc_x = read_buffer[0]<<8 | read_buffer[1]; |
acastiblancoc | 0:0b4ace0e76db | 36 | acc_y = read_buffer[2]<<8 | read_buffer[3]; |
acastiblancoc | 0:0b4ace0e76db | 37 | acc_z = read_buffer[4]<<8 | read_buffer[5]; |
acastiblancoc | 0:0b4ace0e76db | 38 | temp = read_buffer[6]<<8 | read_buffer[7]; |
acastiblancoc | 0:0b4ace0e76db | 39 | gyr_x = read_buffer[8]<<8 | read_buffer[9]; |
acastiblancoc | 0:0b4ace0e76db | 40 | gyr_y = read_buffer[10]<<8 | read_buffer[11]; |
acastiblancoc | 0:0b4ace0e76db | 41 | gyr_z = read_buffer[12]<<8 | read_buffer[13]; |
acastiblancoc | 0:0b4ace0e76db | 42 | |
acastiblancoc | 0:0b4ace0e76db | 43 | facc_x = acc_x/ACC_SEN; |
acastiblancoc | 0:0b4ace0e76db | 44 | facc_y = acc_y/ACC_SEN; |
acastiblancoc | 0:0b4ace0e76db | 45 | facc_z = acc_z/ACC_SEN; |
acastiblancoc | 0:0b4ace0e76db | 46 | fgyr_x = gyr_x/GYR_SEN; |
acastiblancoc | 0:0b4ace0e76db | 47 | fgyr_y = gyr_y/GYR_SEN; |
acastiblancoc | 0:0b4ace0e76db | 48 | fgyr_z = gyr_z/GYR_SEN; |
acastiblancoc | 0:0b4ace0e76db | 49 | ftemp= ((temp)/TEM_SEN)+36.53; |
acastiblancoc | 0:0b4ace0e76db | 50 | pc.printf("ACCx = %.2f ACCy = %.2f ACCz = %.2f GYRx = %.2f GYRy = %.2f GYRz = %.2f Temp = %.2f \r\n ", facc_x, facc_y, facc_z, fgyr_x, fgyr_y, fgyr_z, ftemp); |
acastiblancoc | 0:0b4ace0e76db | 51 | pc.printf("MUESTRA NO. %i\n", i); |
acastiblancoc | 0:0b4ace0e76db | 52 | pc.printf("MUESTRA NO. %i\n", i); |
acastiblancoc | 0:0b4ace0e76db | 53 | |
acastiblancoc | 0:0b4ace0e76db | 54 | } |
acastiblancoc | 0:0b4ace0e76db | 55 | } |
acastiblancoc | 0:0b4ace0e76db | 56 | |
acastiblancoc | 0:0b4ace0e76db | 57 | |
acastiblancoc | 0:0b4ace0e76db | 58 | |
acastiblancoc | 0:0b4ace0e76db | 59 | void LECTURA_DATOS500 () |
acastiblancoc | 0:0b4ace0e76db | 60 | { |
acastiblancoc | 0:0b4ace0e76db | 61 | for(int i=0; i<=500;i++) |
acastiblancoc | 0:0b4ace0e76db | 62 | { |
acastiblancoc | 0:0b4ace0e76db | 63 | wait_ms(10); |
acastiblancoc | 0:0b4ace0e76db | 64 | cmd[0]=0x3B; |
acastiblancoc | 0:0b4ace0e76db | 65 | i2c.write(addr, cmd, 1); //Escritura del registro de inicio, comienza a revisar los diferentes registros segun su orden. |
acastiblancoc | 0:0b4ace0e76db | 66 | //Por eso el orden de impresion y el tamaño del buffer (14) |
acastiblancoc | 0:0b4ace0e76db | 67 | i2c.read(addr, read_buffer, 14); //Lectura en rafaga de los valores de la MPU |
acastiblancoc | 0:0b4ace0e76db | 68 | |
acastiblancoc | 0:0b4ace0e76db | 69 | //.................Construcción de la medición de los valores .................. |
acastiblancoc | 0:0b4ace0e76db | 70 | acc_x = read_buffer[0]<<8 | read_buffer[1]; |
acastiblancoc | 0:0b4ace0e76db | 71 | acc_y = read_buffer[2]<<8 | read_buffer[3]; |
acastiblancoc | 0:0b4ace0e76db | 72 | acc_z = read_buffer[4]<<8 | read_buffer[5]; |
acastiblancoc | 0:0b4ace0e76db | 73 | temp = read_buffer[6]<<8 | read_buffer[7]; |
acastiblancoc | 0:0b4ace0e76db | 74 | gyr_x = read_buffer[8]<<8 | read_buffer[9]; |
acastiblancoc | 0:0b4ace0e76db | 75 | gyr_y = read_buffer[10]<<8 | read_buffer[11]; |
acastiblancoc | 0:0b4ace0e76db | 76 | gyr_z = read_buffer[12]<<8 | read_buffer[13]; |
acastiblancoc | 0:0b4ace0e76db | 77 | |
acastiblancoc | 0:0b4ace0e76db | 78 | facc_x = acc_x/ACC_SEN; |
acastiblancoc | 0:0b4ace0e76db | 79 | facc_y = acc_y/ACC_SEN; |
acastiblancoc | 0:0b4ace0e76db | 80 | facc_z = acc_z/ACC_SEN; |
acastiblancoc | 0:0b4ace0e76db | 81 | fgyr_x = gyr_x/GYR_SEN; |
acastiblancoc | 0:0b4ace0e76db | 82 | fgyr_y = gyr_y/GYR_SEN; |
acastiblancoc | 0:0b4ace0e76db | 83 | fgyr_z = gyr_z/GYR_SEN; |
acastiblancoc | 0:0b4ace0e76db | 84 | ftemp= ((temp)/TEM_SEN)+36.53; |
acastiblancoc | 0:0b4ace0e76db | 85 | pc.printf("ACCx = %.2f ACCy = %.2f ACCz = %.2f GYRx = %.2f GYRy = %.2f GYRz = %.2f Temp = %.2f \r\n ", facc_x, facc_y, facc_z, fgyr_x, fgyr_y, fgyr_z, ftemp); |
acastiblancoc | 0:0b4ace0e76db | 86 | pc.printf("MUESTRA NO. %i\n", i); |
acastiblancoc | 0:0b4ace0e76db | 87 | |
acastiblancoc | 0:0b4ace0e76db | 88 | } |
acastiblancoc | 0:0b4ace0e76db | 89 | } |
acastiblancoc | 0:0b4ace0e76db | 90 | |
acastiblancoc | 0:0b4ace0e76db | 91 | int main() |
acastiblancoc | 0:0b4ace0e76db | 92 | { |
acastiblancoc | 0:0b4ace0e76db | 93 | pc.printf("Prueba MPU6050 \n\r"); |
acastiblancoc | 0:0b4ace0e76db | 94 | |
acastiblancoc | 0:0b4ace0e76db | 95 | cmd[0] = 0x6B; |
acastiblancoc | 0:0b4ace0e76db | 96 | cmd[1] = 0x00; |
acastiblancoc | 0:0b4ace0e76db | 97 | i2c.write(addr, cmd, 2); //Desactivar modo hibernación |
acastiblancoc | 0:0b4ace0e76db | 98 | |
acastiblancoc | 0:0b4ace0e76db | 99 | cmd[0] = 0x1B; |
acastiblancoc | 0:0b4ace0e76db | 100 | cmd[1] = 0x00; |
acastiblancoc | 0:0b4ace0e76db | 101 | i2c.write(addr, cmd, 2); //gyro full scale 250 DPS |
acastiblancoc | 0:0b4ace0e76db | 102 | |
acastiblancoc | 0:0b4ace0e76db | 103 | cmd[0] = 0x1C; |
acastiblancoc | 0:0b4ace0e76db | 104 | cmd[1] = 0x00; |
acastiblancoc | 0:0b4ace0e76db | 105 | i2c.write(addr, cmd, 2); //ACC fullsclae 2G |
acastiblancoc | 0:0b4ace0e76db | 106 | |
acastiblancoc | 0:0b4ace0e76db | 107 | while(1) { |
acastiblancoc | 0:0b4ace0e76db | 108 | |
acastiblancoc | 0:0b4ace0e76db | 109 | if(boton==0) |
acastiblancoc | 0:0b4ace0e76db | 110 | { |
acastiblancoc | 0:0b4ace0e76db | 111 | if (flag==0) |
acastiblancoc | 0:0b4ace0e76db | 112 | {LECTURA_DATOS100(); |
acastiblancoc | 0:0b4ace0e76db | 113 | flag++;} |
acastiblancoc | 0:0b4ace0e76db | 114 | else if (flag==1) |
acastiblancoc | 0:0b4ace0e76db | 115 | {LECTURA_DATOS500(); |
acastiblancoc | 0:0b4ace0e76db | 116 | flag=0; |
acastiblancoc | 0:0b4ace0e76db | 117 | } |
acastiblancoc | 0:0b4ace0e76db | 118 | } |
acastiblancoc | 0:0b4ace0e76db | 119 | } |
acastiblancoc | 0:0b4ace0e76db | 120 | } |