Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:3cc70c8eb584, 2019-09-08 (annotated)
- Committer:
- Mateom0104
- Date:
- Sun Sep 08 21:39:35 2019 +0000
- Revision:
- 0:3cc70c8eb584
Acelerormetro , al oprimir boton hace analisis de 100 muestras cada una de 10ms
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Mateom0104 | 0:3cc70c8eb584 | 1 | #include "mbed.h" |
| Mateom0104 | 0:3cc70c8eb584 | 2 | |
| Mateom0104 | 0:3cc70c8eb584 | 3 | DigitalIn boton(USER_BUTTON); |
| Mateom0104 | 0:3cc70c8eb584 | 4 | Serial pc(SERIAL_TX, SERIAL_RX); |
| Mateom0104 | 0:3cc70c8eb584 | 5 | I2C i2c(PB_9, PB_8 ); |
| Mateom0104 | 0:3cc70c8eb584 | 6 | |
| Mateom0104 | 0:3cc70c8eb584 | 7 | const int addr = 0xD0; // 7 bit I2C address |
| Mateom0104 | 0:3cc70c8eb584 | 8 | char cmd[2]; |
| Mateom0104 | 0:3cc70c8eb584 | 9 | char read_buffer[14]; |
| Mateom0104 | 0:3cc70c8eb584 | 10 | |
| Mateom0104 | 0:3cc70c8eb584 | 11 | int16_t acc_x = 0, acc_y = 0, acc_z = 0; |
| Mateom0104 | 0:3cc70c8eb584 | 12 | int16_t gyr_x = 0, gyr_y = 0, gyr_z = 0; |
| Mateom0104 | 0:3cc70c8eb584 | 13 | int16_t temp = 0; |
| Mateom0104 | 0:3cc70c8eb584 | 14 | |
| Mateom0104 | 0:3cc70c8eb584 | 15 | float ACC_SEN = 16384.0; //Resolución ACC |
| Mateom0104 | 0:3cc70c8eb584 | 16 | float GYR_SEN = 131.0; //Resolución GYR |
| Mateom0104 | 0:3cc70c8eb584 | 17 | float TEM_SEN = 340.0; //Resolución temp |
| Mateom0104 | 0:3cc70c8eb584 | 18 | |
| Mateom0104 | 0:3cc70c8eb584 | 19 | float facc_x = 0, facc_y = 0, facc_z = 0; |
| Mateom0104 | 0:3cc70c8eb584 | 20 | float fgyr_x = 0, fgyr_y = 0, fgyr_z = 0; |
| Mateom0104 | 0:3cc70c8eb584 | 21 | float ftemp = 0; |
| Mateom0104 | 0:3cc70c8eb584 | 22 | |
| Mateom0104 | 0:3cc70c8eb584 | 23 | |
| Mateom0104 | 0:3cc70c8eb584 | 24 | int cont=0; |
| Mateom0104 | 0:3cc70c8eb584 | 25 | int i,j; |
| Mateom0104 | 0:3cc70c8eb584 | 26 | int limite; |
| Mateom0104 | 0:3cc70c8eb584 | 27 | int limite1; |
| Mateom0104 | 0:3cc70c8eb584 | 28 | |
| Mateom0104 | 0:3cc70c8eb584 | 29 | Timer tiempo; |
| Mateom0104 | 0:3cc70c8eb584 | 30 | int val_tiempo; |
| Mateom0104 | 0:3cc70c8eb584 | 31 | |
| Mateom0104 | 0:3cc70c8eb584 | 32 | float memoria[501][8]; |
| Mateom0104 | 0:3cc70c8eb584 | 33 | unsigned int cont_m=1; |
| Mateom0104 | 0:3cc70c8eb584 | 34 | |
| Mateom0104 | 0:3cc70c8eb584 | 35 | DigitalOut myled(LED1); |
| Mateom0104 | 0:3cc70c8eb584 | 36 | |
| Mateom0104 | 0:3cc70c8eb584 | 37 | |
| Mateom0104 | 0:3cc70c8eb584 | 38 | void lec_escritura (void); |
| Mateom0104 | 0:3cc70c8eb584 | 39 | |
| Mateom0104 | 0:3cc70c8eb584 | 40 | int main() |
| Mateom0104 | 0:3cc70c8eb584 | 41 | { |
| Mateom0104 | 0:3cc70c8eb584 | 42 | |
| Mateom0104 | 0:3cc70c8eb584 | 43 | pc.baud(115200); |
| Mateom0104 | 0:3cc70c8eb584 | 44 | |
| Mateom0104 | 0:3cc70c8eb584 | 45 | pc.printf("Prueba MPU6050 \n\r"); |
| Mateom0104 | 0:3cc70c8eb584 | 46 | |
| Mateom0104 | 0:3cc70c8eb584 | 47 | cmd[0] = 0x6B; |
| Mateom0104 | 0:3cc70c8eb584 | 48 | cmd[1] = 0x00; |
| Mateom0104 | 0:3cc70c8eb584 | 49 | i2c.write(addr, cmd, 2); //Desactivar modo hibernación |
| Mateom0104 | 0:3cc70c8eb584 | 50 | |
| Mateom0104 | 0:3cc70c8eb584 | 51 | cmd[0] = 0x1B; |
| Mateom0104 | 0:3cc70c8eb584 | 52 | cmd[1] = 0x00; |
| Mateom0104 | 0:3cc70c8eb584 | 53 | i2c.write(addr, cmd, 2); //gyro full scale 250 DPS |
| Mateom0104 | 0:3cc70c8eb584 | 54 | |
| Mateom0104 | 0:3cc70c8eb584 | 55 | cmd[0] = 0x1C; |
| Mateom0104 | 0:3cc70c8eb584 | 56 | cmd[1] = 0x00; |
| Mateom0104 | 0:3cc70c8eb584 | 57 | i2c.write(addr, cmd, 2); //ACC fullsclae 2G |
| Mateom0104 | 0:3cc70c8eb584 | 58 | |
| Mateom0104 | 0:3cc70c8eb584 | 59 | |
| Mateom0104 | 0:3cc70c8eb584 | 60 | ////////////////////////////////////////////////////////////////////// |
| Mateom0104 | 0:3cc70c8eb584 | 61 | // determinacion de tiempos con timer |
| Mateom0104 | 0:3cc70c8eb584 | 62 | |
| Mateom0104 | 0:3cc70c8eb584 | 63 | /* |
| Mateom0104 | 0:3cc70c8eb584 | 64 | while(1) |
| Mateom0104 | 0:3cc70c8eb584 | 65 | { |
| Mateom0104 | 0:3cc70c8eb584 | 66 | |
| Mateom0104 | 0:3cc70c8eb584 | 67 | tiempo.reset(); |
| Mateom0104 | 0:3cc70c8eb584 | 68 | tiempo.start(); |
| Mateom0104 | 0:3cc70c8eb584 | 69 | lec_escritura(); |
| Mateom0104 | 0:3cc70c8eb584 | 70 | |
| Mateom0104 | 0:3cc70c8eb584 | 71 | val_tiempo=tiempo.read_us(); |
| Mateom0104 | 0:3cc70c8eb584 | 72 | pc.printf("Tiempo en us es= %d \n\r",val_tiempo); |
| Mateom0104 | 0:3cc70c8eb584 | 73 | |
| Mateom0104 | 0:3cc70c8eb584 | 74 | tiempo.reset(); |
| Mateom0104 | 0:3cc70c8eb584 | 75 | } |
| Mateom0104 | 0:3cc70c8eb584 | 76 | */ |
| Mateom0104 | 0:3cc70c8eb584 | 77 | |
| Mateom0104 | 0:3cc70c8eb584 | 78 | |
| Mateom0104 | 0:3cc70c8eb584 | 79 | |
| Mateom0104 | 0:3cc70c8eb584 | 80 | //////////////////////////////////////////////////////////////////////////////// |
| Mateom0104 | 0:3cc70c8eb584 | 81 | //pc.printf("Inicializando \n"); |
| Mateom0104 | 0:3cc70c8eb584 | 82 | while(1) { |
| Mateom0104 | 0:3cc70c8eb584 | 83 | if(boton==0 && cont==0) { |
| Mateom0104 | 0:3cc70c8eb584 | 84 | cont_m=1; |
| Mateom0104 | 0:3cc70c8eb584 | 85 | while(boton==0); |
| Mateom0104 | 0:3cc70c8eb584 | 86 | |
| Mateom0104 | 0:3cc70c8eb584 | 87 | for(cont_m=1; cont_m<=100; cont_m++) { |
| Mateom0104 | 0:3cc70c8eb584 | 88 | lec_escritura(); |
| Mateom0104 | 0:3cc70c8eb584 | 89 | } |
| Mateom0104 | 0:3cc70c8eb584 | 90 | for(int i=1; i<=100; i++) { |
| Mateom0104 | 0:3cc70c8eb584 | 91 | |
| Mateom0104 | 0:3cc70c8eb584 | 92 | pc.printf("Registro # %d ACCx = %.2f ACCy = %.2f ACCz = %.2f GYRx = %.2f GYRy = %.2f GYRz = %.2f Temp = %.2f \n\r",i,memoria[i][1],memoria[i][2],memoria[i][3],memoria[i][4],memoria[i][5],memoria[i][6],memoria[i][7]); |
| Mateom0104 | 0:3cc70c8eb584 | 93 | } |
| Mateom0104 | 0:3cc70c8eb584 | 94 | cont=1; |
| Mateom0104 | 0:3cc70c8eb584 | 95 | } |
| Mateom0104 | 0:3cc70c8eb584 | 96 | |
| Mateom0104 | 0:3cc70c8eb584 | 97 | |
| Mateom0104 | 0:3cc70c8eb584 | 98 | if(boton==0 && cont==1) { |
| Mateom0104 | 0:3cc70c8eb584 | 99 | cont_m=1; |
| Mateom0104 | 0:3cc70c8eb584 | 100 | while(boton==0); |
| Mateom0104 | 0:3cc70c8eb584 | 101 | |
| Mateom0104 | 0:3cc70c8eb584 | 102 | for(cont_m=1; cont_m<=500; cont_m++) { |
| Mateom0104 | 0:3cc70c8eb584 | 103 | lec_escritura(); |
| Mateom0104 | 0:3cc70c8eb584 | 104 | } |
| Mateom0104 | 0:3cc70c8eb584 | 105 | for(int i=1; i<=500; i++) { |
| Mateom0104 | 0:3cc70c8eb584 | 106 | |
| Mateom0104 | 0:3cc70c8eb584 | 107 | pc.printf("Registro # %d ACCx = %.2f ACCy = %.2f ACCz = %.2f GYRx = %.2f GYRy = %.2f GYRz = %.2f Temp = %.2f \n\r",i,memoria[i][1],memoria[i][2],memoria[i][3],memoria[i][4],memoria[i][5],memoria[i][6],memoria[i][7]); |
| Mateom0104 | 0:3cc70c8eb584 | 108 | } |
| Mateom0104 | 0:3cc70c8eb584 | 109 | cont=0; |
| Mateom0104 | 0:3cc70c8eb584 | 110 | } |
| Mateom0104 | 0:3cc70c8eb584 | 111 | |
| Mateom0104 | 0:3cc70c8eb584 | 112 | } |
| Mateom0104 | 0:3cc70c8eb584 | 113 | } |
| Mateom0104 | 0:3cc70c8eb584 | 114 | |
| Mateom0104 | 0:3cc70c8eb584 | 115 | void lec_escritura(void) |
| Mateom0104 | 0:3cc70c8eb584 | 116 | |
| Mateom0104 | 0:3cc70c8eb584 | 117 | { |
| Mateom0104 | 0:3cc70c8eb584 | 118 | |
| Mateom0104 | 0:3cc70c8eb584 | 119 | //wait_ms(10); |
| Mateom0104 | 0:3cc70c8eb584 | 120 | |
| Mateom0104 | 0:3cc70c8eb584 | 121 | cmd[0]=0x3B; |
| Mateom0104 | 0:3cc70c8eb584 | 122 | i2c.write(addr, cmd, 1); //Escritura del registro de inicio |
| Mateom0104 | 0:3cc70c8eb584 | 123 | i2c.read(addr, read_buffer, 14); //Lectura en rafaga de los valores de la MPU |
| Mateom0104 | 0:3cc70c8eb584 | 124 | |
| Mateom0104 | 0:3cc70c8eb584 | 125 | //.................Construcción de la medición de los valores .................. |
| Mateom0104 | 0:3cc70c8eb584 | 126 | acc_x = read_buffer[0]<<8 | read_buffer[1]; |
| Mateom0104 | 0:3cc70c8eb584 | 127 | acc_y = read_buffer[2]<<8 | read_buffer[3]; |
| Mateom0104 | 0:3cc70c8eb584 | 128 | acc_z = read_buffer[4]<<8 | read_buffer[5]; |
| Mateom0104 | 0:3cc70c8eb584 | 129 | temp = read_buffer[6]<<8 | read_buffer[7]; |
| Mateom0104 | 0:3cc70c8eb584 | 130 | gyr_x = read_buffer[8]<<8 | read_buffer[9]; |
| Mateom0104 | 0:3cc70c8eb584 | 131 | gyr_y = read_buffer[10]<<8 | read_buffer[11]; |
| Mateom0104 | 0:3cc70c8eb584 | 132 | gyr_z = read_buffer[12]<<8 | read_buffer[13]; |
| Mateom0104 | 0:3cc70c8eb584 | 133 | |
| Mateom0104 | 0:3cc70c8eb584 | 134 | |
| Mateom0104 | 0:3cc70c8eb584 | 135 | //pc.printf("ACCx = %i ACCy = %i ACCz = %i \n\r", acc_x, acc_y, acc_z); |
| Mateom0104 | 0:3cc70c8eb584 | 136 | |
| Mateom0104 | 0:3cc70c8eb584 | 137 | facc_x = acc_x/ACC_SEN; |
| Mateom0104 | 0:3cc70c8eb584 | 138 | facc_y = acc_y/ACC_SEN; |
| Mateom0104 | 0:3cc70c8eb584 | 139 | facc_z = acc_z/ACC_SEN; |
| Mateom0104 | 0:3cc70c8eb584 | 140 | |
| Mateom0104 | 0:3cc70c8eb584 | 141 | //pc.printf("ACCx = %.2f ACCy = %.2f ACCz = %.2f \n\r", facc_x, facc_y, facc_z); |
| Mateom0104 | 0:3cc70c8eb584 | 142 | |
| Mateom0104 | 0:3cc70c8eb584 | 143 | fgyr_x = gyr_x/GYR_SEN; |
| Mateom0104 | 0:3cc70c8eb584 | 144 | fgyr_y = gyr_y/GYR_SEN; |
| Mateom0104 | 0:3cc70c8eb584 | 145 | fgyr_z = gyr_z/GYR_SEN; |
| Mateom0104 | 0:3cc70c8eb584 | 146 | |
| Mateom0104 | 0:3cc70c8eb584 | 147 | |
| Mateom0104 | 0:3cc70c8eb584 | 148 | ftemp= (temp - 521)/TEM_SEN; |
| Mateom0104 | 0:3cc70c8eb584 | 149 | |
| Mateom0104 | 0:3cc70c8eb584 | 150 | // pc.printf("Registro # %d ACCx = %.2f ACCy = %.2f ACCz = %.2f GYRx = %.2f GYRy = %.2f GYRz = %.2f Temp = %.2f \n\r",i, facc_x, facc_y, facc_z, fgyr_x, fgyr_y, fgyr_z,ftemp); |
| Mateom0104 | 0:3cc70c8eb584 | 151 | |
| Mateom0104 | 0:3cc70c8eb584 | 152 | memoria[cont_m][1]=facc_x; |
| Mateom0104 | 0:3cc70c8eb584 | 153 | memoria[cont_m][2]=facc_y; |
| Mateom0104 | 0:3cc70c8eb584 | 154 | memoria[cont_m][3]=facc_z; |
| Mateom0104 | 0:3cc70c8eb584 | 155 | memoria[cont_m][4]=fgyr_x; |
| Mateom0104 | 0:3cc70c8eb584 | 156 | memoria[cont_m][5]=fgyr_y; |
| Mateom0104 | 0:3cc70c8eb584 | 157 | memoria[cont_m][6]=fgyr_z; |
| Mateom0104 | 0:3cc70c8eb584 | 158 | memoria[cont_m][7]=ftemp; |
| Mateom0104 | 0:3cc70c8eb584 | 159 | |
| Mateom0104 | 0:3cc70c8eb584 | 160 | myled = !myled; |
| Mateom0104 | 0:3cc70c8eb584 | 161 | } |