Paso 3: código:
El código de arduino para MPU-6000 puede descargarse desde el repositorio de github-ControlEverythingCommunity
Aquí está el enlace para el mismo:
https://github.com/ControlEverythingCommunity/MPU-...
Aquí encontrará la hoja de datos del MPU-6000:
https://S3.amazonaws.com/controleverything.Media/c...
Incluimos la biblioteca Wire.h para facilitar la comunicación I2c del sensor con la placa Arduino.
También puede copiar el código desde aquí, se da como sigue:
Distribuido con una licencia de libre albedrío.
Se usa cualquier forma desea, beneficio o libre, siempre cabe en las licencias de sus obras anexas.
MPU-6000
Este código está diseñado para trabajar con el módulo de Mini de I2C MPU-6000_I2CS de ControlEverything.com.
https://www.controleverything.com/content/Accelor...
#include < Wire.h >
MPU-6000 I2C dirección es 0x68(104)
#define Addr 0x68
void setup()
{
Inicializar la comunicación I2C como maestro
Wire.Begin();
Inicializar la comunicación serial, juego velocidad en baudios = 9600
Serial.Begin(9600);
Iniciar transmisión I2C
Wire.beginTransmission(Addr);
Registro de configuración seleccione giroscopio
Wire.Write(0x1b);
Rango de la escala completa = 2000 dps
Wire.Write(0x18);
Detener la transmisión I2C
Wire.endTransmission();
Iniciar transmisión I2C
Wire.beginTransmission(Addr);
Registro de configuración de acelerómetro Select
Wire.Write(0x1C);
Rango de la escala completa = +-16g
Wire.Write(0x18);
Detener la transmisión I2C
Wire.endTransmission();
Iniciar transmisión I2C
Wire.beginTransmission(Addr);
Administración de energía seleccione registrarse
Wire.Write(0x6B);
PLL con referencia xGyro
Wire.Write(0x01);
Detener la transmisión I2C
Wire.endTransmission();
Delay(300);
}
void loop()
{
unsigned int datos [6];
Iniciar transmisión I2C
Wire.beginTransmission(Addr);
Registro de datos Seleccione
Wire.Write(0x3b);
Detener la transmisión I2C
Wire.endTransmission();
Solicitud de 6 bytes de datos
Wire.requestFrom (Addr, 6);
Leer 6 bytes de datos
if(Wire.Available() == 6)
{
datos [0] = Wire.read();
datos [1] = Wire.read();
datos [2] = Wire.read();
datos [3] = Wire.read();
datos [4] = Wire.read();
datos [5] = Wire.read();
}
Convertir los datos
int xAccl = datos [0] * 256 + datos [1];
int yAccl = datos [2] * 256 + datos [3];
int zAccl = datos [4] * 256 + datos [5];
Iniciar transmisión I2C
Wire.beginTransmission(Addr);
Registro de datos Seleccione
Wire.Write(0X43);
Detener la transmisión I2C
Wire.endTransmission();
Solicitud de 6 bytes de datos
Wire.requestFrom (Addr, 6);
Leer 6 bytes de datos
if(Wire.Available() == 6)
{
datos [0] = Wire.read();
datos [1] = Wire.read();
datos [2] = Wire.read();
datos [3] = Wire.read();
datos [4] = Wire.read();
datos [5] = Wire.read();
}
Convertir los datos
int xGyro = datos [0] * 256 + datos [1];
int yGyro = datos [2] * 256 + datos [3];
int zGyro = datos [4] * 256 + datos [5];
Salida de datos monitor serial
Serial.Print ("aceleración en el eje x:");
Serial.println(xAccl);
Serial.Print ("aceleración en el eje:");
Serial.println(yAccl);
Serial.Print ("aceleración en el eje z:");
Serial.println(zAccl);
Serial.Print ("eje de rotación:");
Serial.println(xGyro);
Serial.Print ("eje de rotación:");
Serial.println(yGyro);
Serial.Print ("eje de rotación:");
Serial.println(zGyro);
Delay(500);
}