Crates.io | scd30_i2c |
lib.rs | scd30_i2c |
version | 0.1.2 |
source | src |
created_at | 2024-05-03 14:19:15.772183 |
updated_at | 2024-05-15 06:10:59.397217 |
description | Rust Trait for SCD30 device I2C interface related operations. |
homepage | |
repository | |
max_upload_size | |
id | 1228841 |
size | 15,931 |
Operations taken from interface description
IMPORTANT Current version 0.1.2 contains basics operations, some advanced ones like calibration not yet implemented
Pending stuff:
In your Cargo.toml scd30_i2c="0.1.2"
Obtaining measurements, co2, temperature and humidity
use scd30_i2c::scd30::Scd30;
use std::thread;
use std::time::Duration;
fn main() {
// Open the I2C device
let mut scd = Scd30::new().unwrap();
let mut counter = 0;
scd.trigger_cont_measurements();
scd.set_measurements_interval(2);
loop {
match scd.get_measurements() {
Ok((a, b, c)) => {
println!("Co2: {} ppm Temp: {} C RH: {} %", a, b, c);
thread::sleep(Duration::from_secs(2));
counter += 1;
println!("{}", counter);
}
Err(e) => {
println!(
"Error obtaining measurements. More details: {}. Waiting 10 seconds for recovering",
e
);
thread::sleep(Duration::from_secs(10));
}
}
}
}
I made and tested this library using a Raspberry Pi 5 and its I2C capabilities, for other machines running Linux should work, but I don't have more devices to test
This is my first crate made with Rust, so any suggestion is more than welcome.
Special thanks to RequestForCoffe for the amazing libray in Python. I used the library a lot to understand and replicate the code in Rust.