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.
Fork of g3_waterplay by
TemperatureSensor.cpp
00001 /* 00002 * G3: WATERPLAY 00003 */ 00004 00005 #include "TemperatureSensor.h" 00006 #include <algorithm> 00007 #include "mbed.h" 00008 00009 TemperatureSensor::TemperatureSensor( 00010 Printer &printer, 00011 PinName pin 00012 ): 00013 _printer(printer), 00014 _analog_in(pin), 00015 _reading(0.0), 00016 _voltage(0.0), 00017 _temperature(0.0), 00018 _status(0.0), 00019 _strStatus("OK") 00020 { 00021 this->reload(); 00022 } 00023 00024 void TemperatureSensor::reload() 00025 { 00026 double readings[SAMPLING_NUMBER]; 00027 for(int counter = 0; counter < SAMPLING_NUMBER; ++counter){ 00028 readings[counter] = _analog_in.read(); 00029 } 00030 00031 sort(readings, readings + SAMPLING_NUMBER); 00032 00033 this->_reading = readings[SAMPLING_NUMBER / 2]; 00034 this->_voltage = this->_reading * VIN * CONVERTER; 00035 double RT = (this->_voltage * RESISTANCE) / (VIN - this->_voltage); 00036 double logRT = log(RT); 00037 double k0 = K0; 00038 double k1 = K1 * logRT; 00039 double k2 = K2 * pow(logRT, 3.0); 00040 double kelvin = 1.0 / (k0 + k1 + k2); 00041 this->_temperature = (kelvin + KELVIN_TO_CELCIUS); 00042 00043 if(this->_temperature > KELVIN_TO_CELCIUS){ 00044 this->_temperature += VARIANCE; 00045 this->_temperature += 0.21*this->_temperature - 6.09; 00046 } 00047 00048 this->_status = 0.0; 00049 this->_strStatus = "OK"; 00050 if(this->_temperature < LOWER_BOUNDARY){ 00051 this->_status = this->_temperature - LOWER_BOUNDARY; 00052 this->_strStatus = "LW"; 00053 } else if(this->_temperature > UPPER_BOUNDARY){ 00054 this->_status = this->_temperature - UPPER_BOUNDARY; 00055 this->_strStatus = "HI"; 00056 } 00057 } 00058 00059 double TemperatureSensor::getReading() 00060 { 00061 return(this->_reading); 00062 } 00063 00064 00065 double TemperatureSensor::getVoltage() 00066 { 00067 return(this->_voltage); 00068 } 00069 00070 double TemperatureSensor::getTemperature() 00071 { 00072 return(this->_temperature); 00073 } 00074 00075 double TemperatureSensor::getStatus() 00076 { 00077 return(this->_status); 00078 } 00079 00080 char* TemperatureSensor::getStrStatus() 00081 { 00082 return(this->_strStatus); 00083 }
Generated on Tue Jul 12 2022 21:07:58 by
1.7.2
