Comments (2)
Getting the same behavior with an Adafruit BME680 as well.
Here's my code.
fn main() -> anyhow::Result<()> {
esp_idf_sys::link_patches();
log::set_logger(&LOGGER).map(|()| LOGGER.initialize())?;
LOGGER.set_target_level("", log::LevelFilter::Debug);
let peripherals = Peripherals::take().context("failed to get peripherals")?;
let pins = peripherals.pins;
let mut delayer = delay::FreeRtos;
let i2c_config = <i2c::config::MasterConfig as Default>::default();
let i2c_master = i2c::Master::<i2c::I2C0, _, _>::new(
peripherals.i2c0,
i2c::MasterPins {
sda: pins.gpio23,
scl: pins.gpio22,
},
i2c_config,
)?;
let mut sensor: Bme680<_, FreeRtos> =
Bme680::init(i2c_master, &mut delayer, I2CAddress::Secondary).unwrap();
let settings = SettingsBuilder::new()
.with_humidity_oversampling(OversamplingSetting::OS16x)
.with_pressure_oversampling(OversamplingSetting::OS4x)
.with_temperature_oversampling(OversamplingSetting::OS8x)
.with_temperature_filter(IIRFilterSize::Size3)
.with_gas_measurement(Duration::from_millis(1500), 320, 25)
.with_temperature_offset(-2.2)
.with_run_gas(true)
.build();
let profile_dur = sensor.get_profile_dur(&settings.0).unwrap();
info!("Profile duration {:?}", profile_dur);
info!("Setting sensor settings");
sensor.set_sensor_settings(&mut delayer, settings).unwrap();
let sensor_settings = sensor.get_sensor_settings(settings.1);
info!("Sensor settings: {:?}", sensor_settings);
loop {
delayer.delay_ms(5 * 1000u32);
let power_mode = sensor.get_sensor_mode();
info!("Sensor power mode: {:?}", power_mode);
info!("Setting forced power modes");
sensor
.set_sensor_mode(&mut delayer, PowerMode::ForcedMode)
.unwrap();
// Something I've tried
// delayer.delay_ms(profile_dur.as_millis() as u32);
// Something else I've tried
// while sensor.get_sensor_mode().unwrap() == PowerMode::SleepMode {
// sensor
// .set_sensor_mode(&mut delayer, PowerMode::ForcedMode)
// .unwrap();
// }
let (data, _state) = sensor.get_sensor_data(&mut delayer).unwrap();
info!("Sensor Data {:?}", data);
info!("Temperature {}°C", data.temperature_celsius());
info!("Pressure {}hPa", data.pressure_hpa());
info!("Humidity {}%", data.humidity_percent());
info!("Gas Resistence {}Ω", data.gas_resistance_ohm());
}
}
from bme680.
Same behavior with and without #43 😭
Humidity seems to be correct when I remove :
.with_temperature_oversampling(OversamplingSetting::OS8x)
.with_temperature_filter(IIRFilterSize::Size3)
Any ideas ?
from bme680.
Related Issues (14)
- Error when trying to run the example HOT 3
- Feature Request: SPI Support HOT 1
- The newest version always returns the same value for the gasresistance HOT 5
- Feature Request: Add setting to offset calibrate the temperature HOT 7
- Logged setting do not match those explicitly set in the example code HOT 5
- no_std compatible HOT 1
- Multiple calls to set forced power mode necessary to get a valid read HOT 2
- Owning the delayer appears problematic HOT 7
- Avoid floating point precision when reading values from the sensor
- This crate is awesome but example needs to be improved HOT 1
- Why does SettingsBuilder::with_humidity_control set a heater flag?
- Multiple gas heater profile support
- Add optional serde support for `FieldData`
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bme680.