El IMU-3000 utiliza el bus I2C para comunicarse con el Arduino. El bus I2C es un protocolo en serie simple (muy parecido a la forma en que habla con el Arduino desde su PC) que utiliza una sola línea que funciona en ambas direcciones.
Para utilizar el bus I2C, debe incluir la biblioteca Wire.h que viene de serie con el Arduino. Luego puede implementar el protocolo descrito en la hoja de datos para obtener los valores específicos que desea.
Aquí hay un ejemplo aproximado de lo que estoy hablando. Este código no se ha probado, pero debería darle el flujo general de lo que está tratando de hacer en el Arudino. Una vez que haya terminado la lectura de bajo nivel, puede comenzar a implementar filtros para suavizar sus datos y obtener el formato que necesita para su aplicación.
#define GYRO 0x69 // gyro I2C address
void setup()
{
Wire.begin();
// Do other gyro stuff here, sample rate, max speed, power management
// From datasheet, set power management to internal oscillator
Wire.beginTransmission(GYRO); //Device Address
Wire.send(0x3E); //Register Address
Wire.send(0x00); // Value
Wire.endTransmission();
}
void main()
{
// A quick read example, temperature, gyro x,y,z
Wire.beginTransmission(GYRO);
Wire.send(0x1B); //Register Address TEMP_H
Wire.endTransmission();
Wire.beginTransmission(GYRO);
Wire.requestFrom(GYRO,6); // Read 8 bytes
int ii = 0;
while(Wire.available())
{
buff[ii] = Wire.receive();
ii++;
}
Wire.endTransmission;
//Combine bytes into ints
int temperature = buff[0] << 8 | buff[1];
int gyro_x = buff[2] << 8 | buff[3];
int gyro_y = buff[4] << 8 | buff[5];
int gyro_z = buff[6] << 8 | buff[7];
}