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