#include "Seeed_BME280.h" enum { LOWER = 0, HIGHER }; BME280 sensor; float bounds[2][SENSORS] = {}; const float hysteresisWidth[SENSORS] = {0.03, 0.5, 0.5}; void initBME280() { sensor.init(); } void readSensors() { float newValue; for (uint i = 0; i < SENSORS; i++) { switch (i) { case TEMPERATURE: newValue = sensor.getTemperature(); break; case HUMIDITY: newValue = sensor.getHumidity(); break; case PRESSURE: newValue = sensor.getPressure(); break; } if (newValue > bounds[HIGHER][i]) { sensorValue[i] = newValue; bounds[HIGHER][i] = newValue; bounds[LOWER][i] = bounds[HIGHER][i] - hysteresisWidth[i]; if ((countdown <= 0) && (displaySensor == i)) { displayNeedsUpdate = true; } } else if (newValue < bounds[LOWER][i]) { sensorValue[i] = newValue; bounds[LOWER][i] = newValue; bounds[HIGHER][i] = bounds[LOWER][i] + hysteresisWidth[i]; if ((countdown <= 0) && (displaySensor == i)) { displayNeedsUpdate = true; } }; }; }