restructure functions to better reflect typical usage
This commit is contained in:
parent
5398f1d472
commit
4a277b1ee1
1 changed files with 24 additions and 24 deletions
48
src/lib.rs
48
src/lib.rs
|
@ -149,6 +149,29 @@ where
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Wakes MPU6050 with all sensors enabled (default)
|
||||||
|
pub fn wake(&mut self) -> Result<(), Mpu6050Error<E>> {
|
||||||
|
self.write_u8(POWER_MGMT_1, 0)?;
|
||||||
|
self.delay.delay_ms(100u8);
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Init wakes MPU6050 and verifies register addr, e.g. in i2c
|
||||||
|
pub fn init(&mut self) -> Result<(), Mpu6050Error<E>> {
|
||||||
|
self.wake()?;
|
||||||
|
self.verify()?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Verifies device to address 0x68 with WHOAMI Register
|
||||||
|
pub fn verify(&mut self) -> Result<(), Mpu6050Error<E>> {
|
||||||
|
let address = self.read_u8(WHOAMI)?;
|
||||||
|
if address != SLAVE_ADDR {
|
||||||
|
return Err(Mpu6050Error::InvalidChipId(address));
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
/// Performs software calibration with steps number of readings
|
/// Performs software calibration with steps number of readings
|
||||||
/// of accelerometer and gyrometer sensor
|
/// of accelerometer and gyrometer sensor
|
||||||
/// Readings must be made with MPU6050 in resting position
|
/// Readings must be made with MPU6050 in resting position
|
||||||
|
@ -175,7 +198,7 @@ where
|
||||||
/// number of readings: accelerometer, gyro and temperature sensor each
|
/// number of readings: accelerometer, gyro and temperature sensor each
|
||||||
pub fn calc_variance(&mut self, steps: u8) -> Result<(), Mpu6050Error<E>> {
|
pub fn calc_variance(&mut self, steps: u8) -> Result<(), Mpu6050Error<E>> {
|
||||||
if let None = self.bias {
|
if let None = self.bias {
|
||||||
self.soft_calib(100)?;
|
self.soft_calib(steps)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut variance = Variance::default();
|
let mut variance = Variance::default();
|
||||||
|
@ -209,29 +232,6 @@ where
|
||||||
self.variance.as_ref()
|
self.variance.as_ref()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Wakes MPU6050 with all sensors enabled (default)
|
|
||||||
pub fn wake(&mut self) -> Result<(), Mpu6050Error<E>> {
|
|
||||||
self.write_u8(POWER_MGMT_1, 0)?;
|
|
||||||
self.delay.delay_ms(100u8);
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Init wakes MPU6050 and verifies register addr, e.g. in i2c
|
|
||||||
pub fn init(&mut self) -> Result<(), Mpu6050Error<E>> {
|
|
||||||
self.wake()?;
|
|
||||||
self.verify()?;
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Verifies device to address 0x68 with WHOAMI Register
|
|
||||||
pub fn verify(&mut self) -> Result<(), Mpu6050Error<E>> {
|
|
||||||
let address = self.read_u8(WHOAMI)?;
|
|
||||||
if address != SLAVE_ADDR {
|
|
||||||
return Err(Mpu6050Error::InvalidChipId(address));
|
|
||||||
}
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Roll and pitch estimation from raw accelerometer readings
|
/// Roll and pitch estimation from raw accelerometer readings
|
||||||
/// NOTE: no yaw! no magnetometer present on MPU6050
|
/// NOTE: no yaw! no magnetometer present on MPU6050
|
||||||
pub fn get_acc_angles(&mut self) -> Result<(f32, f32), Mpu6050Error<E>> {
|
pub fn get_acc_angles(&mut self) -> Result<(f32, f32), Mpu6050Error<E>> {
|
||||||
|
|
Loading…
Reference in a new issue