Files
ModbusThermometer/Thermometer.cpp
2014-11-17 22:16:01 +01:00

39 lines
826 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::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.0 - alpha) * m_lastSmoothedTemperature;
}
m_lastSmoothedTemperature = temperature;
}