![]() The i2c address can be changed by pulling the AD0 pin up (Section 6.4, Page 15 of datasheet revision 3.2). This can be necessary to do if there is an address conflict with another chip. |
||
---|---|---|
.cargo | ||
.circleci | ||
.github | ||
examples | ||
misc | ||
src | ||
.gitignore | ||
Cargo.toml | ||
LICENSE | ||
README.md |
mpu6050

no_std driver for the MPU6050 6-axis IMU
What Works
- Reading the accelerometer, gyroscope, temperature sensor
- raw
- scaled
- roll/pitch estimation
- Motion Detection
- Setting Accel/Gyro Ranges/Sensitivity
- Setting Accel HPF/LPF
Basic usage
To use this driver you must provide a concrete embedded_hal
implementation. Here's a
linux_embedded_hal
example
use mpu6050::*;
use linux_embedded_hal::{I2cdev, Delay};
use i2cdev::linux::LinuxI2CError;
fn main() -> Result<(), Mpu6050Error<LinuxI2CError>> {
let i2c = I2cdev::new("/dev/i2c-1")
.map_err(Mpu6050Error::I2c)?;
let mut delay = Delay;
let mut mpu = Mpu6050::new(i2c);
mpu.init(&mut delay)?;
loop {
// get roll and pitch estimate
let acc = mpu.get_acc_angles()?;
println!("r/p: {:?}", acc);
// get temp
let temp = mpu.get_temp()?;
println!("temp: {:?}c", temp);
// get gyro data, scaled with sensitivity
let gyro = mpu.get_gyro()?;
println!("gyro: {:?}", gyro);
// get accelerometer data, scaled with sensitivity
let acc = mpu.get_acc()?;
println!("acc: {:?}", acc);
}
}