LM35
Dependents: HealthCare_Graduation
Diff: LM35.cpp
- Revision:
- 0:813970f650f3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LM35.cpp Mon Jun 18 07:38:21 2018 +0000 @@ -0,0 +1,60 @@ +#include "LM35.h" + +LM35Therm::LM35Therm(PinName analogPin, float compensation) { + _pAin = new AnalogIn(analogPin); + _calibrate = compensation; + _isFirstRead = true; +} + +LM35Therm::~LM35Therm() { + delete _pAin; +} + +void LM35Therm::getAverageValue() { + _sumAnalog = 0; + + for (uint8_t i = 0; i < SAMPLE_COUNT; i++) { + analogSamples[i] = _pAin->read(); + } + + for (uint8_t i = 0; i < SAMPLE_COUNT; i++) { + _sumAnalog = _sumAnalog + analogSamples[i]; + } + + averageAnalog = _sumAnalog / SAMPLE_COUNT; + _sumAnalog = 0; + + if (_isFirstRead) { + for (uint8_t i = 0; i < SAMPLE_COUNT; i++) { + analogAverageSamples[i] = averageAnalog; + _sumAnalog = _sumAnalog + analogAverageSamples[i]; + } + filtedAvgAnalog = _sumAnalog / SAMPLE_COUNT; + _isFirstRead = false; + } + else { + for (uint8_t i = 0; i < SAMPLE_COUNT - 1; i++) { + analogAverageSamples[i] = analogAverageSamples[i]; + _sumAnalog = _sumAnalog + analogAverageSamples[i]; + } + analogAverageSamples[SAMPLE_COUNT - 1] = averageAnalog; + _sumAnalog = _sumAnalog + analogAverageSamples[SAMPLE_COUNT - 1]; + } + filtedAvgAnalog = _sumAnalog / SAMPLE_COUNT; +} + +void LM35Therm::setCompensation(float newCompensation) { + _calibrate = newCompensation; +} + +float LM35Therm::LM35Therm::getTempInC() { + _readVoltage = filtedAvgAnalog * 3.3; + float avgVolt = filtedAvgAnalog * _calibrate * 1000.0; + tempInC = avgVolt; + return tempInC; +} + +float LM35Therm::LM35Therm::getTempInF() { + tempInF = (9.0 * tempInC)/5.0 + 32.0; + return tempInF; +} \ No newline at end of file