Mateo Morales / Mbed 2 deprecated Acelerometro_facil

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 }