Buenas! estoy tratando de programar un acelerómetro, por el momento sólo me interesa medir los ángulos. El dispositivo va a funcionar en un plano, por lo que sólo se va a mover alrededor de un eje, va a ser un movimiento gradual.
La cuestión es que cuando lo pongo a prueba, hay un valor que está tomando como constante que es la primer medición y siguientes luego del loop. Necesito hacer un promedio de cada medición. Al escribir:
#include <MPU6050_tockn.h>
#include <Wire.h>
//float angulo=0;
float sumX, sumY, sumZ, equis, igriega, zeta, promedioX, promedioY, promedioZ, sumX;
int N, x, y, z;
MPU6050 mpu6050(Wire);
void setup() {
Serial.begin(115200);
Wire.begin();
mpu6050.begin();
//para que haga (true) o no el seteado (false)
mpu6050.calcGyroOffsets(true);
//pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
Serial.println();
//valor de N de las mediciones
N=1000;
mpu6050.update();
//inicializa las sumatorias, porque sino lo agrega en cada promedio
sumX=0;
sumY=0;
sumZ=0;
//mide el primero, en base a ese sólo calcula el promedio, independientemente de que se mueva o no, por lo tanto el promedio será igual al valor inicial
//Serial.print("Ángulo X: ");
//Serial.print(mpu6050.getAngleX());
//Serial.print("\t ");
//tira N-datos del ángulo correspondiente
for (x=0; x<N; x++){
equis=mpu6050.getAngleX();
// para verificar que cambie ángulo
Serial.println(equis);
sumX=sumX+equis;
Serial.print(sumX);
}
//calcula el promedio
promedioX=sumX/N;
Serial.print("Promedio en X: ");
Serial.print(promedioX);
Serial.print("\t| ");
}
lo que noto es que siempre toma el valor inicial del mpu, lo deja constante y entra al for con ese valor, por más que dentro de las 1000 mediciones que realiza (N=1000) mueva alrededor del eje X, no hay variación alguna, es decir, dentro del for tomó el primer valor que entró y no cambia hasta no salir del for por más que gire en la medición número 456 por ejemplo.
Saludos y gracias!
Darío