70 lines
2.5 KiB
Arduino
70 lines
2.5 KiB
Arduino
|
// I2Cdev and MPU6050 must be installed as libraries, or else the .cpp/.h files
|
||
|
// for both classes must be in the include path of your project
|
||
|
#include "I2Cdev.h"
|
||
|
#include "MPU6050.h"
|
||
|
#include "Wire.h"
|
||
|
|
||
|
MPU6050 accelgyro;
|
||
|
|
||
|
int16_t ax, ay, az;
|
||
|
int16_t gx, gy, gz;
|
||
|
|
||
|
void setup() {
|
||
|
Wire.begin();
|
||
|
|
||
|
// initialize serial communication
|
||
|
// (38400 chosen because it works as well at 8MHz as it does at 16MHz, but
|
||
|
// it's really up to you depending on your project)
|
||
|
Serial.begin(38400);
|
||
|
|
||
|
// initialize device
|
||
|
Serial.println("Initializing I2C devices...");
|
||
|
accelgyro.initialize();
|
||
|
|
||
|
// verify connection
|
||
|
Serial.println("Testing device connections...");
|
||
|
Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed");
|
||
|
|
||
|
// use the code below to change accel/gyro offset values
|
||
|
/*
|
||
|
Serial.println("Updating internal sensor offsets...");
|
||
|
// -76 -2359 1688 0 0 0
|
||
|
Serial.print(accelgyro.getXAccelOffset()); Serial.print("\t"); // -76
|
||
|
Serial.print(accelgyro.getYAccelOffset()); Serial.print("\t"); // -2359
|
||
|
Serial.print(accelgyro.getZAccelOffset()); Serial.print("\t"); // 1688
|
||
|
Serial.print(accelgyro.getXGyroOffset()); Serial.print("\t"); // 0
|
||
|
Serial.print(accelgyro.getYGyroOffset()); Serial.print("\t"); // 0
|
||
|
Serial.print(accelgyro.getZGyroOffset()); Serial.print("\t"); // 0
|
||
|
Serial.print("\n");
|
||
|
accelgyro.setXGyroOffset(220);
|
||
|
accelgyro.setYGyroOffset(76);
|
||
|
accelgyro.setZGyroOffset(-85);
|
||
|
Serial.print(accelgyro.getXAccelOffset()); Serial.print("\t"); // -76
|
||
|
Serial.print(accelgyro.getYAccelOffset()); Serial.print("\t"); // -2359
|
||
|
Serial.print(accelgyro.getZAccelOffset()); Serial.print("\t"); // 1688
|
||
|
Serial.print(accelgyro.getXGyroOffset()); Serial.print("\t"); // 0
|
||
|
Serial.print(accelgyro.getYGyroOffset()); Serial.print("\t"); // 0
|
||
|
Serial.print(accelgyro.getZGyroOffset()); Serial.print("\t"); // 0
|
||
|
Serial.print("\n");
|
||
|
*/
|
||
|
|
||
|
}
|
||
|
|
||
|
void loop() {
|
||
|
// read raw accel/gyro measurements from device
|
||
|
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
|
||
|
|
||
|
// these methods (and a few others) are also available
|
||
|
//accelgyro.getAcceleration(&ax, &ay, &az);
|
||
|
//accelgyro.getRotation(&gx, &gy, &gz);
|
||
|
// display tab-separated accel/gyro x/y/z values
|
||
|
Serial.print("a/g:\t");
|
||
|
Serial.print(ax); Serial.print("\t");
|
||
|
Serial.print(ay); Serial.print("\t");
|
||
|
Serial.print(az); Serial.print("\t");
|
||
|
Serial.print(gx); Serial.print("\t");
|
||
|
Serial.print(gy); Serial.print("\t");
|
||
|
Serial.println(gz);
|
||
|
}
|
||
|
|