Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
TemperatureSensor.cpp
- Committer:
- mariosimaremare
- Date:
- 2016-06-19
- Revision:
- 7:46e65aeb4df2
- Parent:
- 5:4cbe44452889
- Child:
- 10:b0fd262a0679
File content as of revision 7:46e65aeb4df2:
/*
* G3: WATERPLAY
*/
#include "TemperatureSensor.h"
#include <algorithm>
#include "mbed.h"
TemperatureSensor::TemperatureSensor(
Printer &printer,
PinName pin
):
_printer(printer),
_analog_in(pin),
_reading(0.0),
_voltage(0.0),
_temperature(0.0),
_status(0.0),
_strStatus("OK")
{
this->reload();
}
void TemperatureSensor::reload()
{
double readings[SAMPLING_NUMBER];
for(int counter = 0; counter < SAMPLING_NUMBER; ++counter){
readings[counter] = _analog_in.read();
}
sort(readings, readings + SAMPLING_NUMBER);
this->_reading = readings[SAMPLING_NUMBER / 2];
this->_voltage = this->_reading * VIN * CONVERTER;
double RT = (this->_voltage * RESISTANCE) / (VIN - this->_voltage);
double logRT = log(RT);
double k0 = K0;
double k1 = K1 * logRT;
double k2 = K2 * pow(logRT, 3.0);
double kelvin = 1.0 / (k0 + k1 + k2);
this->_temperature = (kelvin + KELVIN_TO_CELCIUS);
if(this->_temperature > KELVIN_TO_CELCIUS){
this->_temperature += VARIANCE;
}
this->_status = 0.0;
this->_strStatus = "OK";
if(this->_temperature < LOWER_BOUNDARY){
this->_status = this->_temperature - LOWER_BOUNDARY;
this->_strStatus = "LW";
} else if(this->_temperature > UPPER_BOUNDARY){
this->_status = this->_temperature - UPPER_BOUNDARY;
this->_strStatus = "HI";
}
}
double TemperatureSensor::getReading()
{
return(this->_reading);
}
double TemperatureSensor::getVoltage()
{
return(this->_voltage);
}
double TemperatureSensor::getTemperature()
{
return(this->_temperature);
}
double TemperatureSensor::getStatus()
{
return(this->_status);
}
char* TemperatureSensor::getStrStatus()
{
return(this->_strStatus);
}