diff --git a/Adafruit_BME280.cpp b/Adafruit_BME280.cpp index 2610dcd..7892700 100644 --- a/Adafruit_BME280.cpp +++ b/Adafruit_BME280.cpp @@ -282,6 +282,18 @@ float Adafruit_BME280::readPressure(void) { return (float)p/256; } + +float Adafruit_BME280::readAltitude(float seaLevelhPa) { + float altitude; + + float pressure = readPressure(); // in Si units for Pascal + pressure /= 100; + + altitude = 44330 * (1.0 - pow(pressure / seaLevelhPa, 0.1903)); + + return altitude; +} + /**************************************************************************/ /*! diff --git a/Adafruit_BME280.h b/Adafruit_BME280.h index 5c94e37..241bdcc 100644 --- a/Adafruit_BME280.h +++ b/Adafruit_BME280.h @@ -141,8 +141,7 @@ class Adafruit_BME280 float readPressure(void); float readHumidity(void); - // float pressureToAltitude(float seaLevel, float atmospheric, float temp); - // float seaLevelForAltitude(float altitude, float atmospheric, float temp); + float readAltitude(float seaLevelhPa = 1013.25); private: diff --git a/examples/bme280test/bme280test.ino b/examples/bme280test/bme280test.ino index 1d11da1..37e2d74 100644 --- a/examples/bme280test/bme280test.ino +++ b/examples/bme280test/bme280test.ino @@ -47,11 +47,15 @@ void loop() { Serial.print("Pressure = "); Serial.print(bme.readPressure()); Serial.println(" Pa"); + + Serial.print("Approx altitude = "); + Serial.print(bme.readAltitude(1013.25)); // this should be adjusted to your local forcase + Serial.println(" m"); Serial.print("Humidity = "); Serial.print(bme.readHumidity()); Serial.println(" %"); Serial.println(); - delay(500); -} + delay(2000); +} \ No newline at end of file