An I2C driver for the LSM9DS0 gyroscope, accelerometer, magnetometer.
Add the following to your Cargo.toml
:
toml
[dependencies]
i2csensors = "0.1.*"
i2cdev-lsm9ds0 = "0.1.*"
Next, add this to your crate root:
rust
extern crate i2cdev_lsm9ds0;
extern crate i2csensors;
```rust use i2cdev_lsm9ds0::*; use i2csensors::{Accelerometer,Magnetometer,Gyroscope};
fn main() { let (gyrodev,acceldev) = getdefaultlsm9ds0linuxi2c_devices().unwrap();
let gyro_settings = LSM9DS0GyroscopeSettings {
DR: LSM9DS0GyroscopeDataRate::Hz190,
BW: LSM9DS0GyroscopeBandwidth::BW1,
power_mode: LSM9DS0PowerMode::Normal,
zen: true,
yen: true,
xen: true,
sensitivity: LSM9DS0GyroscopeFS::dps500,
continuous_update: true,
high_pass_filter_enabled: true,
high_pass_filter_mode: Some(LSM9DS0GyroscopeHighPassFilterMode::NormalMode),
high_pass_filter_configuration: Some(LSM9DS0HighPassFilterCutOffConfig::HPCF_0)
};
let accel_mag_settings = LSM9DS0AccelerometerMagnetometerSettings {
continuous_update: true,
accelerometer_data_rate: LSM9DS0AccelerometerUpdateRate::Hz100,
accelerometer_anti_alias_filter_bandwidth: LSM9DS0AccelerometerFilterBandwidth::Hz50,
azen: true,
ayen: true,
axen: true,
accelerometer_sensitivity: LSM9DS0AccelerometerFS::g4,
magnetometer_resolution: LSM9DS0MagnetometerResolution::Low,
magnetometer_data_rate: LSM9DS0MagnetometerUpdateRate::Hz50,
magnetometer_low_power_mode: false,
magnetometer_mode: LSM9DS0MagnetometerMode::ContinuousConversion,
magnetometer_sensitivity: LSM9DS0MagnetometerFS::gauss2
};
let mut lsm9ds0 = LSM9DS0::new(accel_dev, gyro_dev, gyro_settings, accel_mag_settings).unwrap();
} ```
Settings can be adjusted according to the datasheet.