|
|
|
#include "BME280.h"
|
|
|
|
|
|
|
|
#include <Wire.h>
|
|
|
|
#include <SPI.h>
|
|
|
|
#include <Adafruit_Sensor.h>
|
|
|
|
#include <Adafruit_BME280.h>
|
|
|
|
|
|
|
|
BME280::BME280() {}
|
|
|
|
|
|
|
|
bool BME280::begin(void) {
|
|
|
|
// SPI.begin(BME_SCK, BME_MISO, BME_MOSI, BME_CS);
|
|
|
|
pinMode(18, OUTPUT);
|
|
|
|
digitalWrite(18, HIGH); // disable LoRa_CS
|
|
|
|
pinMode(23, OUTPUT);
|
|
|
|
digitalWrite(23, HIGH); // enable bme280 CS
|
|
|
|
delay(50);
|
|
|
|
bme = new Adafruit_BME280(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI
|
|
|
|
int retries = 0;
|
|
|
|
while (!(status = bme->begin())) {
|
|
|
|
if (retries > 5) break;
|
|
|
|
retries++;
|
|
|
|
Serial.println("Could not find a valid BME280 sensor, check wiring!");
|
|
|
|
// bme->reset();
|
|
|
|
delay(500);
|
|
|
|
}
|
|
|
|
if (!status) return false;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
void BME280::printValues() {
|
|
|
|
Serial.print("Temperature = ");
|
|
|
|
Serial.print(bme->readTemperature());
|
|
|
|
Serial.println(" *C");
|
|
|
|
|
|
|
|
Serial.print("Pressure = ");
|
|
|
|
|
|
|
|
Serial.print(bme->readPressure() / 100.0F);
|
|
|
|
Serial.println(" hPa");
|
|
|
|
|
|
|
|
Serial.print("Approx. Altitude = ");
|
|
|
|
Serial.print(bme->readAltitude(SEALEVELPRESSURE_HPA));
|
|
|
|
Serial.println(" m");
|
|
|
|
|
|
|
|
Serial.print("Humidity = ");
|
|
|
|
Serial.print(bme->readHumidity());
|
|
|
|
Serial.println(" %");
|
|
|
|
|
|
|
|
Serial.println();
|
|
|
|
}
|
|
|
|
|
|
|
|
float BME280::readTemperature(void) { return bme->readTemperature(); }
|
|
|
|
float BME280::readPressure(void) { return bme->readPressure() / 100.0F; }
|
|
|
|
float BME280::readHumidity(void) { return bme->readHumidity(); }
|