mirror of https://github.com/meshcore-dev/MeshCore
4 changed files with 65 additions and 0 deletions
@ -0,0 +1,55 @@ |
|||||
|
#pragma once |
||||
|
#include <Mesh.h> |
||||
|
#include <Adafruit_BME280.h> |
||||
|
|
||||
|
#define TELEM_BME280_ADDRESS 0x76 // BME280 environmental sensor I2C address
|
||||
|
#define SEALEVELPRESSURE_HPA (1013.25) // Athmospheric pressure at sea level
|
||||
|
|
||||
|
static Adafruit_BME280 BME280; |
||||
|
|
||||
|
class BME280Sensor { |
||||
|
bool initialized = false; |
||||
|
public: |
||||
|
void begin() { |
||||
|
if (BME280.begin(TELEM_BME280_ADDRESS, &Wire)) { |
||||
|
MESH_DEBUG_PRINTLN("Found BME280 at address: %02X", TELEM_BME280_ADDRESS); |
||||
|
MESH_DEBUG_PRINTLN("BME sensor ID: %02X", BME280.sensorID); |
||||
|
initialized = true; |
||||
|
} else { |
||||
|
initialized = false; |
||||
|
MESH_DEBUG_PRINTLN("BME280 was not found at I2C address %02X", TELEM_BME280_ADDRESS); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
bool isInitialized() const { return initialized; }; |
||||
|
|
||||
|
float getRelativeHumidity() const { |
||||
|
if (initialized) { |
||||
|
return BME280.readHumidity();; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
float getTemperature() const { |
||||
|
if (initialized) { |
||||
|
return BME280.readTemperature();; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
float getBarometricPressure() const { |
||||
|
if (initialized) { |
||||
|
return BME280.readPressure(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
float getAltitude() const { |
||||
|
if (initialized) { |
||||
|
return BME280.readAltitude(SEALEVELPRESSURE_HPA); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
void setTemperatureCompensation(float delta) { |
||||
|
if (initialized) { |
||||
|
BME280.setTemperatureCompensation(delta); |
||||
|
} |
||||
|
} |
||||
|
}; |
||||
Loading…
Reference in new issue