50 lines
1.4 KiB
C++
50 lines
1.4 KiB
C++
#pragma once
|
|
|
|
#include <Adafruit_BME280.h>
|
|
|
|
namespace Bme {
|
|
|
|
Adafruit_BME280 bme; // I2C Interface
|
|
|
|
struct {
|
|
float temp;
|
|
float humidity;
|
|
float pressure;
|
|
float altitude;
|
|
float readTemp() {
|
|
char buf[10];
|
|
sprintf(buf, "%.1f", bme.readTemperature() - 2);
|
|
temp = atof(buf);
|
|
return temp;
|
|
}
|
|
float readHumidity() {
|
|
char buf[10];
|
|
sprintf(buf, "%.1f", bme.readHumidity() - 2);
|
|
humidity = atof(buf);
|
|
return humidity;
|
|
}
|
|
void readAll() {
|
|
readTemp();
|
|
readHumidity();
|
|
pressure = bme.readPressure() / 100;
|
|
altitude = bme.readAltitude(1006);
|
|
}
|
|
} data;
|
|
|
|
void setup() {
|
|
Serial.println(F("BME280 setup"));
|
|
|
|
if (!bme.begin(BME280_ADDRESS_ALTERNATE, &Wire)) {
|
|
Serial.println(F("Could not find a valid BME280 sensor, check wiring!"));
|
|
return;
|
|
}
|
|
|
|
/* Default settings from datasheet. */
|
|
bme.setSampling(Adafruit_BME280::MODE_NORMAL, /* Operating Mode. */
|
|
Adafruit_BME280::SAMPLING_X2, // temperature
|
|
Adafruit_BME280::SAMPLING_X16, // pressure
|
|
Adafruit_BME280::SAMPLING_X2, // humidity
|
|
Adafruit_BME280::FILTER_X16,
|
|
Adafruit_BME280::STANDBY_MS_500); /* Standby time. */
|
|
}
|
|
} |