| Crates.io | lis2dw12-i2c |
| lib.rs | lis2dw12-i2c |
| version | 0.1.0 |
| created_at | 2025-05-14 22:17:29.979806+00 |
| updated_at | 2025-05-14 22:17:29.979806+00 |
| description | Platform-agnostic Rust driver for the LIS2DW12 accelerometer over I2C. |
| homepage | |
| repository | https://github.com/OpenDevicePartnership/lis2dw12-i2c |
| max_upload_size | |
| id | 1674020 |
| size | 65,330 |
A #[no_std] platform-agnostic driver for the
LIS2DW12
accelerometer using the embedded-hal traits.
The LIS2DW12 can take one of 2 I2C addresses depending on the connection to the SA0 pin.
| SA0 | Addr |
|---|---|
| GND | 0x18 |
| V+ | 0x19 |
The driver constructors require an explicit declaration of the SA0 pin state.
use lis2dw12_i2c::{self, Lis2dw12, Register, registers};
let delay = DelayNs;
// Initialize the driver with the SA0 configuration
let mut accel = Lis2dw12::new(i2c, delay, SA0::Gnd);
let mut accel = Lis2dw12::new(i2c, delay, SA0::Vplus);
let mut accel = Lis2dw12::new_with_sa0_gnd(i2c, delay);
let mut accel = Lis2dw12::new_with_sa0_vplus(i2c, delay);
// Set a desired configuration for each of the 7 control registers
accel.write_reg(Register::Control1, registers::ControlReg1::new(
lis2dw12_i2c::Control1LowPowerMode::LowPower2,
lis2dw12_i2c::Control1ModeSelect::OnDemand,
lis2dw12_i2c::Control1DataRate::HiLo200Hz).into()).await?;
// Read 3D accel data
match accel.acc().await {
Ok((accx, accy, accz)) => {
defmt::info!("Accel data: X={}, Y={}, Z={}", accx, accy, accz);
},
Err(e) => {
defmt::error!("Unable to read accel data! {:?}", e);
}
}