ina219

crates.io Rust

INA219 current/power monitor driver for Rust

Example

bash cargo build --example values --target=aarch64-unknown-linux-musl cargo build --example raw_values --target=aarch64-unknown-linux-musl cargo build --example physic_values --target=aarch64-unknown-linux-musl

support features

  1. ina219 feature contain physic
  2. physic

Add this line to Cargo.toml for full feature support

toml ina219_rs = { version = "0.4.0", features = ["ina219"] }

```rust //main.rs extern crate linuxembeddedhal as hal;

extern crate ina219_rs as ina219;

use hal::I2cdev; use ina219::physic;

use ina219::ina219::{INA219,Opts};

fn main() {

let device = I2cdev::new("/dev/i2c-1").unwrap();
let opt = Opts::new(0x42,100 * physic::MilliOhm,1 * physic::Ampere);
//let opt = Opts::default();
let mut ina = INA219::new(device,opt);
ina.init().unwrap();
let pm = ina.sense().unwrap();
println!("{:?}",pm);

/* output Debug: PowerMonitor { Voltage = 8.228V, Shunt_Voltage = 534µV, Current = 1.750A, Power = 744mW } */

```

Only support physic featute

toml [dependencies.ina219_rs] version = "0.4.0" default-features = false # 不包含默认的features,而是通过下面的方式来指定 features = ["physic"]

```rust //main.rs

extern crate ina219rs as ina219; use ina219::{ physic, physic::PhysicElectricCurrentSet, physic::PhysicElectricPotentialSet, physic::PhysicPowerSet, physic::ToStringPhysiccurrent, physic::ToStringPhysicpotential, physic::ToStringPhysicpower, };

fn main() { let currenttest = physic::ElectricCurrent::setCurrent("+15mA"); match currenttest { Ok(v) => println!( "currentset is {:?}", (v as physic::ElectricCurrent).tostringphysiccurrent() ), Err(e) => println!("current_set error = {:?}", e), }

let power_test = physic::Power::setPower("150mW");
match power_test {
    Ok(p) => println!(
        "Power_set is {:?}",
        (p as physic::Power).to_string_physic_power()
    ),
    Err(e) => println!("Power_set error = {:?}", e),
}

let power_test_v1 = physic::Power::setPower("250W");
match power_test_v1 {
    Ok(p) => println!(
        "Power_set is {:?}",
        (p as physic::Power).to_string_physic_power()
    ),
    Err(e) => println!("Power_set error = {:?}", e),
}

let voltage_test = physic::ElectricPotential::setVoltage("100V");
match voltage_test {
    Ok(v) => println!(
        "voltage_set is {:?}",
        (v as physic::ElectricPotential).to_string_physic_potential()
    ),
    Err(e) => println!("voltage_set error = {:?}", e),
}

let voltage_test_v1 = physic::ElectricPotential::setVoltage("100mV");
match voltage_test_v1 {
    Ok(v) => println!(
        "voltage_set is {:?}",
        (v as physic::ElectricPotential).to_string_physic_potential()
    ),
    Err(e) => println!("voltage_set error = {:?}", e),
}

}

```