Natalia Garavito
/
Nucleo_read_analog_value
main.cpp@0:7411b02903e3, 2019-08-20 (annotated)
- Committer:
- NataliaGaravito
- Date:
- Tue Aug 20 17:13:30 2019 +0000
- Revision:
- 0:7411b02903e3
- Child:
- 1:62775d3592cf
primer entrega
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
NataliaGaravito | 0:7411b02903e3 | 1 | #include "mbed.h" |
NataliaGaravito | 0:7411b02903e3 | 2 | |
NataliaGaravito | 0:7411b02903e3 | 3 | Serial pc(SERIAL_TX, SERIAL_RX); // (TX, RX) |
NataliaGaravito | 0:7411b02903e3 | 4 | I2C i2c(PB_9, PB_8 ); // (SDA, SCL) |
NataliaGaravito | 0:7411b02903e3 | 5 | DigitalIn button(PC_13); |
NataliaGaravito | 0:7411b02903e3 | 6 | |
NataliaGaravito | 0:7411b02903e3 | 7 | const int addr = 0xD0; // 7 bit I2C address |
NataliaGaravito | 0:7411b02903e3 | 8 | char cmd[2]; |
NataliaGaravito | 0:7411b02903e3 | 9 | char read_buffer[14]; |
NataliaGaravito | 0:7411b02903e3 | 10 | char save_p[10]; |
NataliaGaravito | 0:7411b02903e3 | 11 | |
NataliaGaravito | 0:7411b02903e3 | 12 | int16_t acc_x = 0, acc_y = 0, acc_z = 0; |
NataliaGaravito | 0:7411b02903e3 | 13 | int16_t gyr_x = 0, gyr_y = 0, gyr_z = 0; |
NataliaGaravito | 0:7411b02903e3 | 14 | int16_t temp = 0; |
NataliaGaravito | 0:7411b02903e3 | 15 | |
NataliaGaravito | 0:7411b02903e3 | 16 | float ACC_SEN = 16384.0; //Resolución ACC |
NataliaGaravito | 0:7411b02903e3 | 17 | float GYR_SEN = 131.0; //Resolución GYR |
NataliaGaravito | 0:7411b02903e3 | 18 | float TEM_SEN = 340.0; //Resolución temp |
NataliaGaravito | 0:7411b02903e3 | 19 | |
NataliaGaravito | 0:7411b02903e3 | 20 | float facc_x = 0, facc_y = 0, facc_z = 0; |
NataliaGaravito | 0:7411b02903e3 | 21 | float fgyr_x = 0, fgyr_y = 0, fgyr_z = 0; |
NataliaGaravito | 0:7411b02903e3 | 22 | float ftemp = 0; |
NataliaGaravito | 0:7411b02903e3 | 23 | |
NataliaGaravito | 0:7411b02903e3 | 24 | DigitalOut myled(LED1); |
NataliaGaravito | 0:7411b02903e3 | 25 | |
NataliaGaravito | 0:7411b02903e3 | 26 | int main() |
NataliaGaravito | 0:7411b02903e3 | 27 | { |
NataliaGaravito | 0:7411b02903e3 | 28 | pc.printf("Prueba MPU6050 \n\r"); |
NataliaGaravito | 0:7411b02903e3 | 29 | |
NataliaGaravito | 0:7411b02903e3 | 30 | cmd[0] = 0x6B; |
NataliaGaravito | 0:7411b02903e3 | 31 | cmd[1] = 0x00; |
NataliaGaravito | 0:7411b02903e3 | 32 | i2c.write(addr, cmd, 2); //Desactivar modo hibernación |
NataliaGaravito | 0:7411b02903e3 | 33 | |
NataliaGaravito | 0:7411b02903e3 | 34 | cmd[0] = 0x1B; |
NataliaGaravito | 0:7411b02903e3 | 35 | cmd[1] = 0x00; |
NataliaGaravito | 0:7411b02903e3 | 36 | i2c.write(addr, cmd, 2); //gyro full scale 250 DPS |
NataliaGaravito | 0:7411b02903e3 | 37 | |
NataliaGaravito | 0:7411b02903e3 | 38 | cmd[0] = 0x1C; |
NataliaGaravito | 0:7411b02903e3 | 39 | cmd[1] = 0x00; |
NataliaGaravito | 0:7411b02903e3 | 40 | i2c.write(addr, cmd, 2); //ACC fullsclae 2G |
NataliaGaravito | 0:7411b02903e3 | 41 | |
NataliaGaravito | 0:7411b02903e3 | 42 | while(1) { |
NataliaGaravito | 0:7411b02903e3 | 43 | wait(1); |
NataliaGaravito | 0:7411b02903e3 | 44 | |
NataliaGaravito | 0:7411b02903e3 | 45 | cmd[0]=0x3B; |
NataliaGaravito | 0:7411b02903e3 | 46 | i2c.write(addr, cmd, 1); //Escritura del registro de inicio |
NataliaGaravito | 0:7411b02903e3 | 47 | |
NataliaGaravito | 0:7411b02903e3 | 48 | //for(int i;i<=10;i++) |
NataliaGaravito | 0:7411b02903e3 | 49 | //{ |
NataliaGaravito | 0:7411b02903e3 | 50 | i2c.read(addr, read_buffer, 14); //Lectura en rafaga de los valores de la MPU |
NataliaGaravito | 0:7411b02903e3 | 51 | wait_ms(1); |
NataliaGaravito | 0:7411b02903e3 | 52 | //} |
NataliaGaravito | 0:7411b02903e3 | 53 | |
NataliaGaravito | 0:7411b02903e3 | 54 | //.................Construcción de la medición de los valores .................. |
NataliaGaravito | 0:7411b02903e3 | 55 | |
NataliaGaravito | 0:7411b02903e3 | 56 | |
NataliaGaravito | 0:7411b02903e3 | 57 | acc_x = read_buffer[0]<<8 | read_buffer[1]; |
NataliaGaravito | 0:7411b02903e3 | 58 | acc_y = read_buffer[2]<<8 | read_buffer[3]; |
NataliaGaravito | 0:7411b02903e3 | 59 | acc_z = read_buffer[4]<<8 | read_buffer[5]; |
NataliaGaravito | 0:7411b02903e3 | 60 | temp = read_buffer[6]<<8 | read_buffer[7]; |
NataliaGaravito | 0:7411b02903e3 | 61 | gyr_x = read_buffer[8]<<8 | read_buffer[9]; |
NataliaGaravito | 0:7411b02903e3 | 62 | gyr_y = read_buffer[10]<<8 | read_buffer[11]; |
NataliaGaravito | 0:7411b02903e3 | 63 | gyr_z = read_buffer[12]<<8 | read_buffer[13]; |
NataliaGaravito | 0:7411b02903e3 | 64 | |
NataliaGaravito | 0:7411b02903e3 | 65 | |
NataliaGaravito | 0:7411b02903e3 | 66 | //pc.printf("ACCx = %i ACCy = %i ACCz = %i \n\r", acc_x, acc_y, acc_z); |
NataliaGaravito | 0:7411b02903e3 | 67 | |
NataliaGaravito | 0:7411b02903e3 | 68 | while(button!=1) |
NataliaGaravito | 0:7411b02903e3 | 69 | { |
NataliaGaravito | 0:7411b02903e3 | 70 | |
NataliaGaravito | 0:7411b02903e3 | 71 | facc_x = acc_x/ACC_SEN; |
NataliaGaravito | 0:7411b02903e3 | 72 | facc_y = acc_y/ACC_SEN; |
NataliaGaravito | 0:7411b02903e3 | 73 | facc_z = acc_z/ACC_SEN; |
NataliaGaravito | 0:7411b02903e3 | 74 | |
NataliaGaravito | 0:7411b02903e3 | 75 | |
NataliaGaravito | 0:7411b02903e3 | 76 | fgyr_x = gyr_x/GYR_SEN; |
NataliaGaravito | 0:7411b02903e3 | 77 | fgyr_y = gyr_y/GYR_SEN; |
NataliaGaravito | 0:7411b02903e3 | 78 | fgyr_z = gyr_z/GYR_SEN; |
NataliaGaravito | 0:7411b02903e3 | 79 | |
NataliaGaravito | 0:7411b02903e3 | 80 | // pc.printf("GYRx = %.2f GYRy = %.2f GYRz = %.2f \n\r", fgyr_x, fgyr_y, fgyr_z); |
NataliaGaravito | 0:7411b02903e3 | 81 | |
NataliaGaravito | 0:7411b02903e3 | 82 | ftemp= (temp - 521)/TEM_SEN; |
NataliaGaravito | 0:7411b02903e3 | 83 | |
NataliaGaravito | 0:7411b02903e3 | 84 | //pc.printf("Temp = %.2f \r\n",ftemp); |
NataliaGaravito | 0:7411b02903e3 | 85 | for(int i=0;i<=9;i++){ |
NataliaGaravito | 0:7411b02903e3 | 86 | pc.printf("ACCx ACCy ACCz GYRx GYRy GYRz Temp \n\r"); |
NataliaGaravito | 0:7411b02903e3 | 87 | pc.printf("%.2f %.2f %.2f %.2f %.2f %.2f %.2f \n\r", facc_x, facc_y, facc_z, fgyr_x, fgyr_y, fgyr_z, ftemp); |
NataliaGaravito | 0:7411b02903e3 | 88 | } |
NataliaGaravito | 0:7411b02903e3 | 89 | } |
NataliaGaravito | 0:7411b02903e3 | 90 | |
NataliaGaravito | 0:7411b02903e3 | 91 | /* for(int i=0; i<14; i++) { |
NataliaGaravito | 0:7411b02903e3 | 92 | pc.printf("Buffer[%i] = %i \n\r",i,read_buffer[i]); |
NataliaGaravito | 0:7411b02903e3 | 93 | }*/ |
NataliaGaravito | 0:7411b02903e3 | 94 | |
NataliaGaravito | 0:7411b02903e3 | 95 | myled = !myled; |
NataliaGaravito | 0:7411b02903e3 | 96 | } |
NataliaGaravito | 0:7411b02903e3 | 97 | } |