File tree Expand file tree Collapse file tree 2 files changed +40
-4
lines changed Expand file tree Collapse file tree 2 files changed +40
-4
lines changed Original file line number Diff line number Diff line change @@ -94,12 +94,48 @@ double BMP180::readTemperature()
94
94
95
95
double BMP180::readPressure ()
96
96
{
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;
98
131
}
99
132
100
- double BMP180::readAltitude ()
133
+ double BMP180::readAltitude (UINT16 seaLevelPressure )
101
134
{
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;
103
139
}
104
140
105
141
double BMP180::readSeaLevelPressure ()
Original file line number Diff line number Diff line change @@ -37,7 +37,7 @@ class BMP180
37
37
38
38
double readTemperature ();
39
39
double readPressure ();
40
- double readAltitude ();
40
+ double readAltitude (UINT16 seaLevelPressure= 101325 );
41
41
double readSeaLevelPressure ();
42
42
43
43
private:
You can’t perform that action at this time.
0 commit comments