#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::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; alpha = Config::getFloat(m_eepromAddr + CONFIG_ALPHA); } void Thermometer::exec(float r) { temperatureRaw = (r / PT1000_R0 - 1) / PT1000_Coeff; if (m_lastSmoothedTemperature == INVALID_TEMPERATURE) { temperature = temperatureRaw; } else { temperature = alpha * temperatureRaw + (1 - alpha) * m_lastSmoothedTemperature; } m_lastSmoothedTemperature = temperature; }