use embedded_hal::delay::DelayNs; use linux_embedded_hal::{Delay, I2cdev}; use sgp30::Sgp30; fn measure_loop(sgp: &mut Sgp30) -> ! { let mut i = 0; loop { if i != 0 { Delay.delay_ms(1000u32 - 12 - 25); } if i % 10 == 0 { let baseline = sgp.get_baseline().unwrap(); println!("Baseline: {} / {}", baseline.co2eq, baseline.tvoc); } let measurements = sgp.measure().unwrap(); let signals = sgp.measure_raw_signals().unwrap(); println!( "{}: CO₂eq = {} ppm, TVOC = {} ppb, H2 sig = {}, Ethanol sig = {}", i + 1, measurements.co2eq_ppm, measurements.tvoc_ppb, signals.h2, signals.ethanol ); i += 1; } } fn main() { let dev = I2cdev::new("/dev/i2c-1").unwrap(); let address = 0x58; let mut sgp = Sgp30::new(dev, address, Delay); println!("Starting SGP30 tests."); println!(); println!("Serial: {:?}", sgp.serial().unwrap()); println!("Feature set: {:?}", sgp.get_feature_set().unwrap()); println!( "Self-Test: {}", if sgp.selftest().unwrap() { "Pass" } else { "Fail" } ); println!(); println!("Initializing..."); sgp.init().unwrap(); println!("Starting measurement loop, press Ctrl+C to abort...\n"); measure_loop(&mut sgp); }