¿Como trabajar con mpu5060?

Hola, soy un novato en tema Arduino...estoy trabajando con un giroscopo gy 521 mpu5060 y veo ejemplos y por más que busco y que busco, en todos aparecen una serie de librerías que yo no tengo y no sé como conseguir

#include <Servo.h>
#include <Wire.h>
#include <I2Cdev.h>
#include <MPU6050.h>
MPU6050 mpu;
int16_t ax, ay, az;
int16_t gx, gy, gz;
Servo myservo;
int val;
int prevVal;
void setup()
{
Wire.begin();
Serial.begin(38400);
Serial.println(“Initialize MPU”);
mpu.initialize();
Serial.println(mpu.testConnection() ? “Connected” : “Connection failed”);
myservo.attach(9);
}
void loop()
{
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
val = map(ay, -17000, 17000, 0, 179);
if (val != prevVal)
{
myservo.write(val);
prevVal = val;
}
delay(50);

y además me da un fallo aquí Serial.println(“Initialize MPU”);

alguien me podría echar una mano? es que no sé ya que hacer y estoy algo desesperado...

Buenas y bienvenido.

La libreria:
http://www.i2cdevlib.com/usage

el error:
cambia las comillas
Serial.println(“Initialize MPU”);
por
Serial.println("Initialize MPU");

y en esta linea tambien
Serial.println(mpu.testConnection() ? “Connected” : “Connection failed”);

:slight_smile:

Hola marcial, lo primero agradecerte que contestaras...sigo atascado con este giroscopo, pues estoy haciendo un proyecto de guiado de un vehiculo radiocontrol y el gy521 es una pieza clave en èl. Lo que quisiera saber es como puedo hacer la lectura en el plano, es decir hprizontalmente, poder mantener un rumbo y si me desvio de el, poder corregir la trayectoria. Ando muy perdido y por mucho que busco no encuentro un codigo o una indormacion que me aclare...y no se si tu, perdoname si te tuteo, tienes experiencia o has manejado este cacharro.

Para mi proyecto es esencial, y no se ni siquiera co, o ir planteando el codigo o un codigo base para modificarlo. Quiero hacer una lectura y sacarla por pantalla, y a partir de ahi, yo poder hacer un codigo adaptandolo a lo que me siirva, ya que , e hago mucho lio con lo que emcuentro por internet y no encuentro nada en claro.

Si me pudieras ayudar te lo agradeceria mucho. Un saludo, muchas gracias
Carlos

Perdon si sale varias veces pero mi tablet se volvio loca...

Hola carlos,

Te recomiendo primero hacer un programa base que te muestre por pantalla (serie) los valores de cada eje del acelerometro y giroscopio.

Con getMotion6 obtienes las 6 lecturas (3 aceleraciones y 3 velocidades angulares), a partir de aquí te tocará calibrar el mpu (hay varias funciones en la librería que lo permiten, offsets, precision, etc) para que trabaje como tu quieras.

Cualquier problema, estoy trabajando en un quadcoptero con justamente ese MPU, osea que puedo ayudarte si hace falta, pero creo que será mejor que primero intentes tu, ya que así aprendes más.

Saludos!

agju:
Hola carlos,

Te recomiendo primero hacer un programa base que te muestre por pantalla (serie) los valores de cada eje del acelerometro y giroscopio.

Con getMotion6 obtienes las 6 lecturas (3 aceleraciones y 3 velocidades angulares), a partir de aquí te tocará calibrar el mpu (hay varias funciones en la librería que lo permiten, offsets, precision, etc) para que trabaje como tu quieras.

Cualquier problema, estoy trabajando en un quadcoptero con justamente ese MPU, osea que puedo ayudarte si hace falta, pero creo que será mejor que primero intentes tu, ya que así aprendes más.

Saludos!

Obtengo la medición sin declarar pines SDA y SCL? Y como lo calibro, el programa de lectura lo tengo claro más o menos, pero ahora lo de la calibración....

Buenas carlos, yo en la programación del giroscopio estoy mas pez que tu =(

agju:
Hola carlos,

Te recomiendo primero hacer un programa base que te muestre por pantalla (serie) los valores de cada eje del acelerometro y giroscopio.

Con getMotion6 obtienes las 6 lecturas (3 aceleraciones y 3 velocidades angulares), a partir de aquí te tocará calibrar el mpu (hay varias funciones en la librería que lo permiten, offsets, precision, etc) para que trabaje como tu quieras.

Cualquier problema, estoy trabajando en un quadcoptero con justamente ese MPU, osea que puedo ayudarte si hace falta, pero creo que será mejor que primero intentes tu, ya que así aprendes más.

Saludos!

Te vuelvo a escribir, quiero utilizar la lectura del sensor en grados para entrarla en un while. Utilizo el programa de ejemplo de la librería que viene el DMP6, pero lo meto en un while y no sé como, pero en el while no se me actualizan las variables de ypr, el roll el pitch y el yaw....así que no puedo hacer que se mueva un motor...

if(distanciaf<20){
giro=ypr[0]*180/M_PI;
while ((giro+90)>(ypr[0]*180/M_PI))
digitalWrite(MOTOR, HIGH);
}

esto quiere decir que guardo mi posición, y giro mientras que no se cumplan los 90 grados... pero no me sale puesto que ypr[0] se mantiene constante y no se actualizan...