#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; }