eka sinambela / Mbed 2 deprecated g3_waterplay

Dependencies:   mbed

Fork of g3_waterplay by Mario Simaremare

Committer:
mariosimaremare
Date:
Fri Jun 17 11:03:37 2016 +0000
Revision:
5:4cbe44452889
Parent:
3:7c648d1d8802
Child:
7:46e65aeb4df2
Update the constants to the proper place across the classes.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mariosimaremare 0:ad9362f18797 1 /*
mariosimaremare 0:ad9362f18797 2 * G3: WATERPLAY
mariosimaremare 0:ad9362f18797 3 */
mariosimaremare 0:ad9362f18797 4
mariosimaremare 0:ad9362f18797 5 #include "TemperatureSensor.h"
mariosimaremare 3:7c648d1d8802 6 #include <algorithm>
mariosimaremare 0:ad9362f18797 7 #include "mbed.h"
mariosimaremare 0:ad9362f18797 8
mariosimaremare 0:ad9362f18797 9 TemperatureSensor::TemperatureSensor(
mariosimaremare 3:7c648d1d8802 10 Printer &printer,
mariosimaremare 5:4cbe44452889 11 PinName pin
mariosimaremare 0:ad9362f18797 12 ):
mariosimaremare 3:7c648d1d8802 13 _printer(printer),
mariosimaremare 0:ad9362f18797 14 _analog_in(pin),
mariosimaremare 2:ed17e258da0d 15 _reading(0.0),
mariosimaremare 2:ed17e258da0d 16 _voltage(0.0),
mariosimaremare 1:f448c12d2c5b 17 _temperature(0.0),
mariosimaremare 2:ed17e258da0d 18 _status(0.0),
mariosimaremare 5:4cbe44452889 19 _strStatus("OK")
mariosimaremare 0:ad9362f18797 20 {
mariosimaremare 2:ed17e258da0d 21 this->reload();
mariosimaremare 0:ad9362f18797 22 }
mariosimaremare 0:ad9362f18797 23
mariosimaremare 2:ed17e258da0d 24 void TemperatureSensor::reload()
mariosimaremare 0:ad9362f18797 25 {
mariosimaremare 5:4cbe44452889 26 double readings[SAMPLING_NUMBER];
mariosimaremare 5:4cbe44452889 27 for(int counter = 0; counter < SAMPLING_NUMBER; ++counter){
mariosimaremare 3:7c648d1d8802 28 readings[counter] = _analog_in.read();
mariosimaremare 3:7c648d1d8802 29 }
mariosimaremare 3:7c648d1d8802 30
mariosimaremare 5:4cbe44452889 31 sort(readings, readings + SAMPLING_NUMBER);
mariosimaremare 3:7c648d1d8802 32
mariosimaremare 5:4cbe44452889 33 this->_reading = readings[SAMPLING_NUMBER / 2];
mariosimaremare 5:4cbe44452889 34 this->_voltage = this->_reading * VIN * CONVERTER;
mariosimaremare 5:4cbe44452889 35 double RT = (this->_voltage * RESISTANCE) / (VIN - this->_voltage);
mariosimaremare 1:f448c12d2c5b 36 double logRT = log(RT);
mariosimaremare 5:4cbe44452889 37 double k0 = K0;
mariosimaremare 5:4cbe44452889 38 double k1 = K1 * logRT;
mariosimaremare 5:4cbe44452889 39 double k2 = K2 * pow(logRT, 3.0);
mariosimaremare 5:4cbe44452889 40 double kelvin = 1.0 / (k0 + k1 + k2);
mariosimaremare 5:4cbe44452889 41 this->_temperature = (kelvin + KELVIN_TO_CELCIUS) + VARIANCE;
mariosimaremare 1:f448c12d2c5b 42
mariosimaremare 2:ed17e258da0d 43 this->_status = 0.0;
mariosimaremare 3:7c648d1d8802 44 this->_strStatus = "OK";
mariosimaremare 5:4cbe44452889 45 if(this->_temperature < LOWER_BOUNDARY){
mariosimaremare 5:4cbe44452889 46 this->_status = this->_temperature - LOWER_BOUNDARY;
mariosimaremare 3:7c648d1d8802 47 this->_strStatus = "LW";
mariosimaremare 5:4cbe44452889 48 } else if(this->_temperature > UPPER_BOUNDARY){
mariosimaremare 5:4cbe44452889 49 this->_status = this->_temperature - UPPER_BOUNDARY;
mariosimaremare 3:7c648d1d8802 50 this->_strStatus = "HI";
mariosimaremare 2:ed17e258da0d 51 }
mariosimaremare 2:ed17e258da0d 52 }
mariosimaremare 2:ed17e258da0d 53
mariosimaremare 2:ed17e258da0d 54 double TemperatureSensor::getReading()
mariosimaremare 2:ed17e258da0d 55 {
mariosimaremare 1:f448c12d2c5b 56 return(this->_reading);
mariosimaremare 0:ad9362f18797 57 }
mariosimaremare 0:ad9362f18797 58
mariosimaremare 2:ed17e258da0d 59
mariosimaremare 0:ad9362f18797 60 double TemperatureSensor::getVoltage()
mariosimaremare 0:ad9362f18797 61 {
mariosimaremare 1:f448c12d2c5b 62 return(this->_voltage);
mariosimaremare 0:ad9362f18797 63 }
mariosimaremare 0:ad9362f18797 64
mariosimaremare 0:ad9362f18797 65 double TemperatureSensor::getTemperature()
mariosimaremare 0:ad9362f18797 66 {
mariosimaremare 1:f448c12d2c5b 67 return(this->_temperature);
mariosimaremare 0:ad9362f18797 68 }
mariosimaremare 2:ed17e258da0d 69
mariosimaremare 2:ed17e258da0d 70 double TemperatureSensor::getStatus()
mariosimaremare 2:ed17e258da0d 71 {
mariosimaremare 2:ed17e258da0d 72 return(this->_status);
mariosimaremare 3:7c648d1d8802 73 }
mariosimaremare 3:7c648d1d8802 74
mariosimaremare 3:7c648d1d8802 75 char* TemperatureSensor::getStrStatus()
mariosimaremare 3:7c648d1d8802 76 {
mariosimaremare 3:7c648d1d8802 77 return(this->_strStatus);
mariosimaremare 2:ed17e258da0d 78 }