# ENS160 driver
[](https://github.com/teamplayer3/ens160/actions?query=workflow%3ARust)
[](https://github.com/teamplayer3/ens160)
[](https://crates.io/crates/ens160)
[](https://docs.rs/ens160)
Implementation of an ENS160 sensor driver written in rust. This sensor can measure `TVOC` and `ECO2`. Implementation is inspired by the [driver implementation](https://github.com/DFRobot/DFRobot_ENS160) by dfrobots written in python.
For more information about the sensor [here](https://wiki.dfrobot.com/SKU_SEN0515_Fermion_ENS160_Air_Quality_Sensor).
## Usage
To use this crate in a `no-std` environment, add it to your `Cargo.toml` as follows:
```toml
[dependencies.ens160]
version = "0.6"
default-features = false
```
## Example
```rust
let i2c = ...; // I2C bus to use
let mut device = Ens160::new(i2c);
device.reset().unwrap();
sleep(250)
device.operational().unwrap();
sleep(50)
loop {
if let Ok(status) = device.status() {
if status.data_is_ready() {
let tvoc = device.tvoc().unwrap();
let eco2 = device.eco2().unwrap();
// from eCO2
let air_quality_index = AirQualityIndex::try_from(eco2).unwrap();
// directly
let air_quality_index = device.air_quality_index().unwrap();
}
}
}
let i2c = device.release(); // destruct driver to use bus with other drivers
```