All modules and core of the app was created
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
#include "GyverBME280.h"
|
||||
|
||||
typedef std::function<void()> OnMeasuringFinishedCb;
|
||||
|
||||
class Barometer {
|
||||
public:
|
||||
Barometer(GyverBME280 *bme) {
|
||||
@@ -28,7 +30,7 @@ class Barometer {
|
||||
}
|
||||
|
||||
void measureBaseAltitudeAsync(void) {
|
||||
_isStartCalibration = true;
|
||||
_isCalibration = true;
|
||||
}
|
||||
|
||||
float altitude() /* [cm] */ {
|
||||
@@ -39,14 +41,21 @@ class Barometer {
|
||||
return altitude() - _startedAltitude;
|
||||
}
|
||||
|
||||
void onMeasuaringHeightFinished(OnMeasuringFinishedCb callback) {
|
||||
_measuaringHeightFinishedCb = callback;
|
||||
}
|
||||
|
||||
void tick() {
|
||||
if (_isStartCalibration) {
|
||||
if (_isStartCalibration && millis() - _calibrationTimer >= _calibrationIterationDelay) {
|
||||
if (_isCalibration) {
|
||||
if (millis() - _calibrationTimer >= _calibrationIterationDelay) {
|
||||
_startedAltitude += altitude();
|
||||
}
|
||||
if (++_calibrationIterationsCounter >= _calibrationIterationsCount) {
|
||||
_startedAltitude /= _calibrationIterationsCount;
|
||||
_isStartCalibration = false;
|
||||
_isCalibration = false;
|
||||
if (_measuaringHeightFinishedCb) {
|
||||
_measuaringHeightFinishedCb();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -54,9 +63,10 @@ class Barometer {
|
||||
private:
|
||||
GyverBME280 *_bme;
|
||||
float _startedAltitude = 0;
|
||||
bool _isStartCalibration = false;
|
||||
int _calibrationTimer;
|
||||
bool _isCalibration = false;
|
||||
uint32_t _calibrationTimer;
|
||||
int _calibrationIterationsCounter = 0;
|
||||
OnMeasuringFinishedCb _measuaringHeightFinishedCb = nullptr;
|
||||
static constexpr int _calibrationIterationsCount = 1500;
|
||||
static constexpr int _calibrationIterationDelay = 1; // [ms]
|
||||
};
|
||||
Reference in New Issue
Block a user