29class BMP280 :
public ThermPressMeter {
31 explicit BMP280(int8_t address = 0x76,
float altitude = NAN)
32 : address(address), sensorStatus(
false), altitude(altitude) {
36 float value = TEMPERATURE_NOT_AVAILABLE;
37 bool retryDone =
false;
39 if (!sensorStatus || isnan(value)) {
40 sensorStatus = bmp.begin(address);
43 value = TEMPERATURE_NOT_AVAILABLE;
45 value = bmp.readTemperature();
47 }
while (isnan(value) && !retryDone);
52 float value = PRESSURE_NOT_AVAILABLE;
53 bool retryDone =
false;
55 if (!sensorStatus || isnan(value)) {
56 sensorStatus = bmp.begin(address);
59 value = PRESSURE_NOT_AVAILABLE;
61 value = bmp.readPressure() / 100.0;
63 }
while (isnan(value) && !retryDone);
64 if (!isnan(altitude)) {
65 value = bmp.seaLevelForAltitude(altitude, value);
71 sensorStatus = bmp.begin(address);
73 channel.setNewValue(getTemp());
74 pressureChannel.setNewValue(getPressure());
77 void setAltitude(
float newAltitude) {
78 altitude = newAltitude;