tinywetter/src/main.rs

41 lines
1.3 KiB
Rust

extern crate i2cdev;
extern crate i2cdev_bmp280;
extern crate i2csensors;
extern crate si7021;
use i2cdev::linux::LinuxI2CDevice;
use i2cdev_bmp280::*;
use si7021::*;
use i2csensors::{Barometer, Hygrometer, Thermometer};
use std::env;
fn main() {
let i2c_path = env::args().skip(1).next().expect("i2c bus path (eg. /dev/i2c-1)");
i2c_sensors(&i2c_path);
}
fn i2c_sensors(path: &str) {
let i2c_device = LinuxI2CDevice::new(path, 0b1110110).unwrap();
let settings = BMP280Settings {
compensation: BMP280CompensationAlgorithm::Float,
t_sb: BMP280Timing::ms4000,
iir_filter_coeff: BMP280FilterCoefficient::UltraHigh,
osrs_t: BMP280TemperatureOversampling::x2,
osrs_p: BMP280PressureOversampling::UltraHighResolution,
power_mode: BMP280PowerMode::NormalMode,
};
let mut bmp280 = BMP280::new(i2c_device, settings).unwrap();
println!("pressure: {:6.2} kPa", bmp280.pressure_kpa().unwrap());
println!("temp1: {:6.2} °C", bmp280.temperature_celsius().unwrap());
let device = LinuxI2CDevice::new(path, SI7021_I2C_ADDRESS).unwrap();
let mut si7021 = Si7021::new(device);
println!("humidity: {:6.2} %", si7021.relative_humidity().unwrap());
println!("temp2: {:6.2} °C", si7021.temperature_celsius().unwrap());
}