BluetoothDispatcher was added & reformatting
This commit is contained in:
143
Barometer.h
143
Barometer.h
@@ -1,83 +1,84 @@
|
||||
#include "GyverBME280.h"
|
||||
|
||||
class Barometer {
|
||||
public:
|
||||
Barometer(GyverBME280 *bme) {
|
||||
_bme = bme;
|
||||
};
|
||||
|
||||
~Barometer() {
|
||||
delete this->_bme;
|
||||
}
|
||||
public:
|
||||
Barometer(GyverBME280 *bme) {
|
||||
_bme = bme;
|
||||
};
|
||||
|
||||
bool initialize(void) {
|
||||
_bme->setMode(NORMAL_MODE);
|
||||
_bme->setFilter(FILTER_COEF_16);
|
||||
_bme->setTempOversampling(OVERSAMPLING_2);
|
||||
_bme->setPressOversampling(OVERSAMPLING_16);
|
||||
_bme->setStandbyTime(STANDBY_500US);
|
||||
return _bme->begin();
|
||||
}
|
||||
|
||||
void measureBaseAltitudeSync(void) {
|
||||
for(int i = 0; i < _calibrationIterationsCount; ++i){
|
||||
_startedAltitude += altitude();
|
||||
delay(1);
|
||||
~Barometer() {
|
||||
delete this->_bme;
|
||||
}
|
||||
_startedAltitude /= _calibrationIterationsCount;
|
||||
}
|
||||
|
||||
void measureBaseAltitudeAsync(void) {
|
||||
_isStartCalibration = true;
|
||||
}
|
||||
bool initialize(void) {
|
||||
_bme->setMode(NORMAL_MODE);
|
||||
_bme->setFilter(FILTER_COEF_16);
|
||||
_bme->setTempOversampling(OVERSAMPLING_2);
|
||||
_bme->setPressOversampling(OVERSAMPLING_16);
|
||||
_bme->setStandbyTime(STANDBY_500US);
|
||||
return _bme->begin();
|
||||
}
|
||||
|
||||
float rawAltitude() {
|
||||
return pressureToAltitude(_bme->readPressure())*100;
|
||||
}
|
||||
|
||||
float rawFlightHeight() {
|
||||
return rawAltitude() - _startedAltitude;
|
||||
}
|
||||
|
||||
float altitude() {
|
||||
return _filterRA(pressureToAltitude(_bme->readPressure())*100); // convert from m to cm
|
||||
}
|
||||
|
||||
float flightHeight() {
|
||||
return altitude() - _startedAltitude;
|
||||
}
|
||||
|
||||
void tick() {
|
||||
if(_isStartCalibration) {
|
||||
if(_isStartCalibration && millis() - _calibrationTimer >= _calibrationIterationDelay) {
|
||||
_startedAltitude += altitude();
|
||||
}
|
||||
if(++_calibrationIterationsCounter >= _calibrationIterationsCount) {
|
||||
void measureBaseAltitudeSync(void) {
|
||||
for (int i = 0; i < _calibrationIterationsCount; ++i) {
|
||||
_startedAltitude += altitude();
|
||||
delay(1);
|
||||
}
|
||||
_startedAltitude /= _calibrationIterationsCount;
|
||||
_isStartCalibration = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
GyverBME280 *_bme = nullptr;
|
||||
float _startedAltitude = 0;
|
||||
bool _isStartCalibration = false;
|
||||
int _calibrationTimer;
|
||||
int _calibrationIterationsCounter = 0;
|
||||
const int _calibrationIterationsCount = 1500;
|
||||
const int _calibrationIterationDelay = 1; // [ms]
|
||||
void measureBaseAltitudeAsync(void) {
|
||||
_isStartCalibration = true;
|
||||
}
|
||||
|
||||
float _filterRA(float newVal) {
|
||||
// running average filter
|
||||
constexpr auto WINDOW_SIZE = 100;
|
||||
static int t = 0;
|
||||
static float vals[WINDOW_SIZE];
|
||||
static float average = 0;
|
||||
if (++t >= WINDOW_SIZE) t = 0;
|
||||
average -= vals[t];
|
||||
average += newVal;
|
||||
vals[t] = newVal;
|
||||
return ((float)average / WINDOW_SIZE);
|
||||
}
|
||||
float rawAltitude() {
|
||||
return pressureToAltitude(_bme->readPressure()) * 100;
|
||||
}
|
||||
|
||||
float rawFlightHeight() {
|
||||
return rawAltitude() - _startedAltitude;
|
||||
}
|
||||
|
||||
float altitude() {
|
||||
return _filterRA(pressureToAltitude(_bme->readPressure()) * 100); // convert from m to cm
|
||||
}
|
||||
|
||||
float flightHeight() {
|
||||
return altitude() - _startedAltitude;
|
||||
}
|
||||
|
||||
void tick() {
|
||||
if (_isStartCalibration) {
|
||||
if (_isStartCalibration && millis() - _calibrationTimer >= _calibrationIterationDelay) {
|
||||
_startedAltitude += altitude();
|
||||
}
|
||||
if (++_calibrationIterationsCounter >= _calibrationIterationsCount) {
|
||||
_startedAltitude /= _calibrationIterationsCount;
|
||||
_isStartCalibration = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
GyverBME280 *_bme;
|
||||
float _startedAltitude = 0;
|
||||
bool _isStartCalibration = false;
|
||||
int _calibrationTimer;
|
||||
int _calibrationIterationsCounter = 0;
|
||||
const int _calibrationIterationsCount = 1500;
|
||||
const int _calibrationIterationDelay = 1; // [ms]
|
||||
|
||||
float _filterRA(float newVal) {
|
||||
// running average filter
|
||||
constexpr auto WINDOW_SIZE = 100;
|
||||
static int t = 0;
|
||||
static float vals[WINDOW_SIZE];
|
||||
static float average = 0;
|
||||
if (++t >= WINDOW_SIZE)
|
||||
t = 0;
|
||||
average -= vals[t];
|
||||
average += newVal;
|
||||
vals[t] = newVal;
|
||||
return ((float)average / WINDOW_SIZE);
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user