Expand description

Platform-agnostic Rust driver for the AS5600 digital magnetic potentiometer.

as5600-rs

Rust Embedded HAL driver for the AS5600 contactless 12-bit digital potentiometer

Status

  • Reading/parsing all device registers
  • Writing configuration settings
  • Setting zero position, maximum position, maximum angle
  • Burn Settings and angle

Example

Here’s how using this driver looks on a raspberry pi:

use std::{thread, time::Duration};

use as5600::As5600;
use linux_embedded_hal::I2cdev;

fn main() {
    let mut i2c = I2cdev::new("/dev/i2c-1").unwrap();
    let mut as5600 = As5600::new(as5600::constants::DEFAULT_I2C_ADDRESS);
    let config = as5600.config(&mut i2c).unwrap();
    println!("{:?}", config);

    thread::sleep(Duration::from_secs(5));

    let status = as5600.magnet_status(&mut i2c).unwrap();
    let agc = as5600.automatic_gain_control(&mut i2c).unwrap();
    let mag = as5600.magnitude(&mut i2c).unwrap();
    let zmco = as5600.zmco(&mut i2c).unwrap();

    println!("{:?}", status);
    println!("{:?}", agc);
    println!("{:?}", mag);
    println!("{:?}", zmco);

    thread::sleep(Duration::from_secs(5));

    loop {
        let value = as5600.angle(&mut i2c).unwrap();
        println!("{:?}", value);
        thread::sleep(Duration::from_millis(100));
    }
}

License

Licensed under either of

  • Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
  • MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Modules

Configuration of As5600.

Constants.

Errors.

Magnet detection status.

Structs

As5600 driver instance.