108 lines
2.9 KiB
C++
108 lines
2.9 KiB
C++
#pragma once
|
|
|
|
#if ADAFRUIT_BME
|
|
|
|
#include <Adafruit_BME280.h>
|
|
|
|
namespace Bme {
|
|
|
|
Adafruit_BME280 bme; // I2C Interface
|
|
|
|
struct {
|
|
float temp;
|
|
float humidity;
|
|
float pressure;
|
|
float readTemp() {
|
|
char buf[10];
|
|
sprintf(buf, "%.1f", bme.readTemperature());
|
|
temp = atof(buf);
|
|
return temp;
|
|
}
|
|
float readHumidity() {
|
|
char buf[10];
|
|
sprintf(buf, "%.1f", bme.readHumidity());
|
|
humidity = atof(buf);
|
|
return humidity;
|
|
}
|
|
void readAll() {
|
|
bme.takeForcedMeasurement();
|
|
readTemp();
|
|
readHumidity();
|
|
pressure = bme.readPressure() / 100;
|
|
}
|
|
} 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;
|
|
}
|
|
|
|
/* Settings from examples: advancedsettings.ino */
|
|
// -- Weather Station Scenario --
|
|
Serial.println("-- Weather Station Scenario --");
|
|
bme.setSampling(Adafruit_BME280::MODE_FORCED, /* Operating Mode. */
|
|
Adafruit_BME280::SAMPLING_X1, // temperature
|
|
Adafruit_BME280::SAMPLING_X1, // pressure
|
|
Adafruit_BME280::SAMPLING_X1, // humidity
|
|
Adafruit_BME280::FILTER_OFF);
|
|
}
|
|
}
|
|
#else
|
|
|
|
#include <SparkFunBME280.h>
|
|
|
|
namespace Bme {
|
|
|
|
BME280 bme; // I2C Interface
|
|
bool initialised = false;
|
|
|
|
struct {
|
|
float temp;
|
|
float humidity;
|
|
float pressure;
|
|
float readTemp() {
|
|
char buf[10];
|
|
sprintf(buf, "%.1f", bme.readTempC());
|
|
temp = atof(buf);
|
|
return temp;
|
|
}
|
|
float readHumidity() {
|
|
char buf[10];
|
|
sprintf(buf, "%.1f", bme.readFloatHumidity());
|
|
humidity = atof(buf);
|
|
return humidity;
|
|
}
|
|
void readAll() {
|
|
if (!initialised) return;
|
|
// bme.takeForcedMeasurement();
|
|
readTemp();
|
|
readHumidity();
|
|
pressure = bme.readFloatPressure();
|
|
}
|
|
} data;
|
|
|
|
void setup() {
|
|
Serial.println(F("BME280 setup"));
|
|
|
|
bme.setI2CAddress(0x76);
|
|
if (!bme.beginI2C()) {
|
|
Serial.println(F("Could not find a valid BME280 sensor, check wiring!"));
|
|
return;
|
|
}
|
|
initialised = true;
|
|
|
|
/* Settings from examples: advancedsettings.ino */
|
|
// -- Weather Station Scenario --
|
|
// Serial.println("-- Weather Station Scenario --");
|
|
// bme.setSampling(Adafruit_BME280::MODE_FORCED, /* Operating Mode. */
|
|
// Adafruit_BME280::SAMPLING_X1, // temperature
|
|
// Adafruit_BME280::SAMPLING_X1, // pressure
|
|
// Adafruit_BME280::SAMPLING_X1, // humidity
|
|
// Adafruit_BME280::FILTER_OFF);
|
|
}
|
|
}
|
|
#endif
|