This is a hardware driver for [ADXL345] and [ADXL346] type 3-Axis
Digital Accelerometers written in [Rust] using [embedded-hal] I2c and Spi traits.
That means it runs on all hardware layers that implement the [embedded-hal] traits.
Although the name says adxl345 the driver should also work with the [ADXL346] device as well since the only difference between them is the physical packaging and not the internal workings.
This crate is a fork of the adxl345driver crate. This crate still is API compatible with the original adxl345driver crate.
You will need to have a recent version of [Rust] installed.
This crate supports all hardware abstraction layers that implement the
[embedded-hal] I2c and Spi traits. That includes the [rppal] driver for
the Raspberry Pi. But it is not restricted to that platform. Platforms
that are known to work correctly are the Raspberry Pi with [rppal] and the
ESP32 with [esp-idf-hal]. But this crate is not restricted to these HAL layers.
You can use cargo add to add the driver to your Cargo.toml
sh
cargo add adxl345_driver2
or you can manually add the driver to your Cargo.toml:
toml
[dependencies]
adxl345_driver2 = "2"
You will find examples in the examples directory.
The Raspberry Pi I²C and SPI examples are available.
To build the I²C example start by clone this project somewhere on your Raspberry Pi:
sh
git clone https://git.bues.ch/git/adxl345_driver2
Next execute the follow to build the example:
sh
cd adxl345_driver2
cargo build --example rppal-i2c
And finally execute the example:
sh
sudo ./target/debug/examples/rppal-i2c
You should see the series of x, y, z values displayed in the terminal if your device has been hooked up using the primary I²C that the example expects.
Output example:
console
axis: {'x': 1.6083, 'y': 0.0392, 'z': 8.7868} m/s²
axis: {'x': 1.6867, 'y': 0.1177, 'z': 8.7868} m/s²
axis: {'x': 1.6475, 'y': 0.1177, 'z': 8.8260} m/s²
...
This crate can be used in no_std environments.
Just enable the no_std feature, if you want to build without std library.
no_std currently only disables the implementation of std::error::Error for AdxlError.
toml
[dependencies]
adxl345_driver2 = { version = "2", features = ["no_std"] }
provided methods in a chain of traits.
That is more complicated than it needs to be.
And it also exposes the low level bus access routines to the user API.
It would be better to have two trait based low level bus access structs for I²C and SPI
and then implement a driver struct that is generic over this trait.
The problem with this change is that it is a user visible API change.
Therefore, we'll keep the old implementation for now.All code files are available under the MIT license.
You can find a copy of the license in the LICENSE file.
All additional documentation like this README is licensed under a
CC-BY-SA / Creative Commons Attribution-ShareAlike 4.0 International License.