Buen dia comunidad, quisier pedir su ayuda con el sensor MPU5060, el progrma es el siguiente:
#include <MPU6050.h>
#include <I2Cdev.h>
// Librerias I2C para controlar el mpu6050
// la libreria MPU6050.h necesita I2Cdev.h, I2Cdev.h necesita Wire.h
#include "I2Cdev.h"
#include "MPU6050.h"
#include "Wire.h"
// La dirección del MPU6050 puede ser 0x68 o 0x69, dependiendo
// del estado de AD0. Si no se especifica, 0x68 estará implicito
MPU6050 sensor;
// Valores RAW (sin procesar) del acelerometro y giroscopio en los ejes x,y,z
int gx, gy, gz;
long tiempo_prev, dt;
float girosc_ang_x, girosc_ang_y;
float girosc_ang_x_prev, girosc_ang_y_prev;
void setup() {
Serial.begin(57600); //Iniciando puerto serial
Wire.begin(); //Iniciando I2C
sensor.initialize(); //Iniciando el sensor
if (sensor.testConnection()) Serial.println("Sensor iniciado correctamente");
else Serial.println("Error al iniciar el sensor");
tiempo_prev=millis();
}
void loop() {
// Leer las velocidades angulares
sensor.getRotation(&gx, &gy, &gz);
//Calcular los angulos rotacion:
dt = millis()-tiempo_prev;
tiempo_prev=millis();
girosc_ang_x = (gx/131)*dt/1000.0 + girosc_ang_x_prev;
girosc_ang_y = (gy/131)*dt/1000.0 + girosc_ang_y_prev;
girosc_ang_x_prev=girosc_ang_x;
girosc_ang_y_prev=girosc_ang_y;
//Mostrar los angulos separadas por un [tab]
Serial.print("Rotacion en X: ");
Serial.print(girosc_ang_x);
Serial.print("tRotacion en Y: ");
Serial.println(girosc_ang_y);
delay(500);
}
El programa compula bien y los angulos los imprime bien solo al inicio, conforme pasa el tiempo y va arrojando mas datos, los valores del angulo "x" aumentan sin hacer movimiento en el sensor, llegando a marcar que esta incinado a 100 grados cuando el sensor esta reposando sobre la mesa sin ser movido
Les agradeceria mucho su ayuda!
![]()