Rodrigo Miguez / Mbed 2 deprecated i2c_acelerometro

Dependencies:   BLE_API mbed nRF51822 circular_buffer

Committer:
agufal
Date:
Thu Mar 10 09:56:59 2016 +0000
Revision:
11:27f2850b9388
Parent:
9:3708b94b2312
Child:
12:172acb80fcab
A?adido buffer circular para hacer la media. Ahora los valores cambian un tanto despacio (Ver comentario en el main)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
agufal 6:fa74a43cae81 1 /*
agufal 6:fa74a43cae81 2 * Esto es para la placa Xtrinsic-Sense Board de element14, mas
agufal 6:fa74a43cae81 3 * concretamente para el acelerometro MMA8491Q
agufal 6:fa74a43cae81 4 */
agufal 0:c123bc196680 5 #include "mbed.h"
agufal 8:e7cafda76315 6 #include "Acelerometro.h"
agufal 9:3708b94b2312 7 #include "AccelService.h"
agufal 11:27f2850b9388 8 #include "circular_buffer.h"
agufal 0:c123bc196680 9
agufal 0:c123bc196680 10 Serial pc(p9, p11);
agufal 4:a743917cd04c 11
agufal 9:3708b94b2312 12 int main() {
agufal 8:e7cafda76315 13
agufal 9:3708b94b2312 14 Acelerometro acc;
agufal 9:3708b94b2312 15 AccelService acc_service;
agufal 11:27f2850b9388 16 circular_buffer<Vector> buffer(10);
Alexisfdi 3:80ceedd5ffac 17
agufal 9:3708b94b2312 18 while(1) {
Alexisfdi 3:80ceedd5ffac 19
agufal 4:a743917cd04c 20 pc.printf("-----------------------------------------\n");
agufal 11:27f2850b9388 21
agufal 11:27f2850b9388 22 // Hacer un buffer circular para ir leyendo lo que tienes
agufal 11:27f2850b9388 23 // Problema?: ahora los datos cambian un poco lento, por ejemplo para
agufal 11:27f2850b9388 24 // pasar de -1g a 1g tarda un par de segundos aunque el cambio haya sido rapido
agufal 11:27f2850b9388 25 buffer.push_back(acc.leer());
agufal 11:27f2850b9388 26
agufal 11:27f2850b9388 27 // TODO Hacer esto en un hilo
agufal 11:27f2850b9388 28 int x = 0, y = 0, z = 0;
agufal 11:27f2850b9388 29 for (int i = 0; i < buffer.get_size(); i++){
agufal 11:27f2850b9388 30
agufal 11:27f2850b9388 31 Vector v = buffer[i];
agufal 11:27f2850b9388 32
agufal 11:27f2850b9388 33 x += v.x;
agufal 11:27f2850b9388 34 y += v.y;
agufal 11:27f2850b9388 35 z += v.z;
agufal 11:27f2850b9388 36
agufal 11:27f2850b9388 37 }
agufal 11:27f2850b9388 38
agufal 11:27f2850b9388 39 Vector media;
agufal 11:27f2850b9388 40
agufal 11:27f2850b9388 41 media.x = x / buffer.get_size();
agufal 11:27f2850b9388 42 media.y = y / buffer.get_size();
agufal 11:27f2850b9388 43 media.z = z / buffer.get_size();
agufal 11:27f2850b9388 44
agufal 11:27f2850b9388 45 /* if (media.x <= 1000 && media.x >= -1000) media.x = 0;
agufal 11:27f2850b9388 46 if (media.y <= 1000 && media.y >= -1000) media.y = 0;
agufal 11:27f2850b9388 47 if (media.z <= 1000 && media.z >= -1000) media.z = 0;*/
agufal 11:27f2850b9388 48
agufal 11:27f2850b9388 49 acc_service.updateAccelState(media);
agufal 11:27f2850b9388 50
agufal 11:27f2850b9388 51 pc.printf(" X: %i\n Y: %i\n Z: %i\n", media.x, media.y, media.z);
agufal 5:d5dba5370918 52
Alexisfdi 3:80ceedd5ffac 53 }
agufal 0:c123bc196680 54 }