Fix #7 by adding readSealevelPressure function.

This commit is contained in:
Tony DiCola 2014-06-12 15:06:39 -07:00
parent 4466c2651c
commit af52d4b186
3 changed files with 9 additions and 0 deletions

View file

@ -195,6 +195,10 @@ int32_t Adafruit_BMP085::readPressure(void) {
return p;
}
int32_t Adafruit_BMP085::readSealevelPressure(float altitude_meters) {
float pressure = readPressure();
return (int32_t)(pressure / pow(1.0-altitude_meters/44330, 5.255));
}
float Adafruit_BMP085::readTemperature(void) {
int32_t UT, B5; // following ds convention

View file

@ -58,6 +58,7 @@ class Adafruit_BMP085 {
boolean begin(uint8_t mode = BMP085_ULTRAHIGHRES); // by default go highres
float readTemperature(void);
int32_t readPressure(void);
int32_t readSealevelPressure(float altitude_meters = 0);
float readAltitude(float sealevelPressure = 101325); // std atmosphere
uint16_t readRawTemperature(void);
uint32_t readRawPressure(void);

View file

@ -49,6 +49,10 @@ void loop() {
Serial.print(bmp.readAltitude());
Serial.println(" meters");
Serial.print("Pressure at sealevel (calculated) = ");
Serial.print(bmp.readSealevelPressure());
Serial.println(" Pa");
// you can get a more precise measurement of altitude
// if you know the current sea level pressure which will
// vary with weather and such. If it is 1015 millibars