From 014b45d5174b7d05e44c485877861adcf180f4b7 Mon Sep 17 00:00:00 2001 From: Thomas Klaehn Date: Thu, 16 Jan 2025 13:29:25 +0100 Subject: [PATCH] Configure i2c device and shunt resistor --- examples/current.rs | 4 ++-- examples/voltage.rs | 2 +- src/lib.rs | 10 +++++----- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/examples/current.rs b/examples/current.rs index aaba131..badc5f2 100644 --- a/examples/current.rs +++ b/examples/current.rs @@ -1,10 +1,10 @@ use ina3221; fn main() { - let mut ina = ina3221::Ina3221::new(0x40); + let mut ina = ina3221::Ina3221::new(0x40, "/dev/i2c-1", 5.0); let res = match ina.current(ina3221::Channel::One) { Ok(value) => value, Err(error) => panic!("Can't read i2c: {error:?}"), }; - println!("Channel one current: {:?} mA", res); + println!("Channel one current: {:?} A", res); } diff --git a/examples/voltage.rs b/examples/voltage.rs index 4d64483..0515c73 100644 --- a/examples/voltage.rs +++ b/examples/voltage.rs @@ -1,7 +1,7 @@ use ina3221; fn main() { - let mut ina = ina3221::Ina3221::new(0x40); + let mut ina = ina3221::Ina3221::new(0x40, "/dev/i2c-1", 5.0); let res = match ina.bus_voltage(ina3221::Channel::One) { Ok(value) => value, Err(error) => panic!("Can't read i2c: {error:?}"), diff --git a/src/lib.rs b/src/lib.rs index 13113d9..36aa587 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -17,11 +17,11 @@ pub struct Ina3221 { impl Ina3221 { - pub fn new(slave_address: u16) -> Ina3221 { + pub fn new(slave_address: u16, i2c_device: &str, shunt_resistor: f64) -> Ina3221 { Ina3221 { slave_addr: slave_address, - i2c_device: format!("/dev/i2c-1"), - shunt_resistor: 1.0, + i2c_device: format!("{}", i2c_device), + shunt_resistor, } } @@ -66,7 +66,7 @@ impl Ina3221 { pub fn current(&mut self, channel: Channel) -> Result { let tmp: f64 = self.shunt_voltage(channel)?; - let res: f64 = tmp * self.shunt_resistor; + let res: f64 = tmp / self.shunt_resistor * 100.0; // No idea why multiplying with 100 but the result seems to be correct... Ok(res) } -} \ No newline at end of file +}