scd30_interface/lib.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
//! # SCD30 Driver
//!
//! A driver for interacting with Sensirion's [SCD30](https://sensirion.com/products/catalog/SCD30)
//! CO2 measuring sensor via I2C. This driver is based on
//! [embedded-hal](https://docs.rs/embedded-hal/latest/embedded_hal/) traits.
//!
//! # Example
//!
//! ```ignore
//! use scd30_interface::Scd30;
//! use scd30_interface::data::DataStatus;
//! use esp_hal::i2c::master::{Config, I2c};
//! use dfmt;
//!
//! #[entry]
//! fn main() {
//! let peripherals = esp_hal::init(esp_hal::Config::default());
//!
//! let i2c = I2c::new(peripherals.I2C0, Config::default())
//! .with_sda(peripherals.GPIO4)
//! .with_scl(peripherals.GPIO5);
//!
//! let sensor = Scd30::new(i2c);
//!
//! // Read out firmware version
//! let firmware_version = sensor.read_firmware_version().unwrap();
//!
//! loop {
//! while sensor.is_data_ready() != DataStatus::Ready {}
//! let measurement = sensor.read_measurement().unwrap();
//! dfmt::log!("{}", measurement);
//! }
//! }
//! ```
#![cfg_attr(not(test), no_std)]
#![forbid(unsafe_code)]
#![deny(missing_docs)]
pub mod command;
pub mod data;
pub mod error;
mod interface;
mod util;
pub use interface::Scd30;