45 lines
967 B
C++
45 lines
967 B
C++
#include "Thermometer.h"
|
|
#include "Config.h"
|
|
|
|
using namespace nsThermometer;
|
|
|
|
const float INVALID_TEMPERATURE = -300.0;
|
|
|
|
const uint8_t CONFIG_ALPHA = 0;
|
|
|
|
|
|
Thermometer::Thermometer() {
|
|
|
|
}
|
|
|
|
|
|
void Thermometer::setAlpha(float alpha) {
|
|
m_alpha = alpha;
|
|
Config::setFloat(m_eepromAddr + CONFIG_ALPHA, m_alpha);
|
|
}
|
|
|
|
|
|
void Thermometer::begin(bool initializeConfig, int eepromAddr) {
|
|
m_eepromAddr = eepromAddr;
|
|
|
|
if (initializeConfig) {
|
|
// set default values
|
|
Config::setFloat(m_eepromAddr + CONFIG_ALPHA, 1.0);
|
|
}
|
|
|
|
m_lastSmoothedTemperature = INVALID_TEMPERATURE;
|
|
m_alpha = Config::getFloat(m_eepromAddr + CONFIG_ALPHA);
|
|
}
|
|
|
|
|
|
void Thermometer::exec(float r) {
|
|
m_temperatureRaw = (r / PT1000_R0 - 1) / PT1000_Coeff;
|
|
|
|
if (m_lastSmoothedTemperature == INVALID_TEMPERATURE) {
|
|
m_temperature = m_temperatureRaw;
|
|
} else {
|
|
m_temperature = m_alpha * m_temperatureRaw + (1.0 - m_alpha) * m_lastSmoothedTemperature;
|
|
}
|
|
m_lastSmoothedTemperature = m_temperature;
|
|
}
|