Skip to content

Commit 03d0337

Browse files
committed
added impl for pressure and altitude
1 parent 4ae23d8 commit 03d0337

File tree

2 files changed

+40
-4
lines changed

2 files changed

+40
-4
lines changed

bmp180/bmp180.cpp

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,12 +94,48 @@ double BMP180::readTemperature()
9494

9595
double BMP180::readPressure()
9696
{
97-
return 0;
97+
UINT16 UT = _readRawTemperature();
98+
UINT16 UP = _readRawPressure();
99+
double p = 0;
100+
101+
// temperature
102+
int X1 = ((UT - _cal_AC6) * _cal_AC5) >> 15;
103+
int X2 = (_cal_MC << 11) / (X1 + _cal_MD);
104+
int B5 = X1 + X2;
105+
106+
// pressure
107+
int B6 = B5 - 4000;
108+
X1 = (_cal_B2 * (B6 * B6) >> 12) >> 11;
109+
X2 = (_cal_AC2 * B6) >> 11;
110+
int X3 = X1 + X2;
111+
int B3 = (((_cal_AC1 * 4 + X3) << _mode) + 2) / 4;
112+
113+
X1 = (_cal_AC3 * B6) >> 13;
114+
X2 = (_cal_B1 * ((B6 * B6) >> 12)) >> 16;
115+
X3 = ((X1 + X2) + 2) >> 2;
116+
int B4 = (_cal_AC4 * (X3 + 32768)) >> 15;
117+
int B7 = (UP - B3) * (50000 >> _mode);
118+
119+
if (B7 < 0x80000000)
120+
p = (B7 * 2) / B4;
121+
else
122+
p = (B7 / B4) * 2;
123+
124+
X1 = (p >> 8) * (p >> 8);
125+
X1 = (X1 * 3038) >> 16;
126+
X2 = (-7357 * p) >> 16;
127+
128+
p = p + ((X1 + X2 + 3791) >> 4);
129+
130+
return p;
98131
}
99132

100-
double BMP180::readAltitude()
133+
double BMP180::readAltitude(UINT16 seaLevelPressure)
101134
{
102-
return 0;
135+
double altitude = 0;
136+
float pressure = readPressure();
137+
altitude = 44330.0 * (1.0 - pow(pressure / seaLevelPressure, 0.1903));
138+
return altitude;
103139
}
104140

105141
double BMP180::readSeaLevelPressure()

bmp180/bmp180.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class BMP180
3737

3838
double readTemperature();
3939
double readPressure();
40-
double readAltitude();
40+
double readAltitude(UINT16 seaLevelPressure=101325);
4141
double readSeaLevelPressure();
4242

4343
private:

0 commit comments

Comments
 (0)