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.
SalinitySensor.cpp@11:dcaaf1bb21ce, 2016-06-22 (annotated)
- Committer:
- mariosimaremare
- Date:
- Wed Jun 22 00:16:33 2016 +0000
- Revision:
- 11:dcaaf1bb21ce
- Parent:
- 5:4cbe44452889
- Child:
- 15:e112bab9aa2f
Added alarm.
Who changed what in which revision?
| User | Revision | Line number | New 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 "SalinitySensor.h" |
| mariosimaremare | 0:ad9362f18797 | 6 | #include "mbed.h" |
| mariosimaremare | 3:7c648d1d8802 | 7 | #include <algorithm> |
| mariosimaremare | 3:7c648d1d8802 | 8 | #include "Printer.h" |
| mariosimaremare | 0:ad9362f18797 | 9 | |
| mariosimaremare | 0:ad9362f18797 | 10 | SalinitySensor::SalinitySensor( |
| mariosimaremare | 3:7c648d1d8802 | 11 | Printer &printer, |
| mariosimaremare | 5:4cbe44452889 | 12 | PinName pin |
| mariosimaremare | 0:ad9362f18797 | 13 | ): |
| mariosimaremare | 3:7c648d1d8802 | 14 | _printer(printer), |
| mariosimaremare | 0:ad9362f18797 | 15 | _analog_in(pin), |
| mariosimaremare | 1:f448c12d2c5b | 16 | _reading(0.0), |
| mariosimaremare | 1:f448c12d2c5b | 17 | _voltage(0.0), |
| mariosimaremare | 2:ed17e258da0d | 18 | _salinity(0.0), |
| mariosimaremare | 3:7c648d1d8802 | 19 | _status(0.0), |
| mariosimaremare | 3:7c648d1d8802 | 20 | _strStatus("OK") |
| mariosimaremare | 0:ad9362f18797 | 21 | { |
| mariosimaremare | 2:ed17e258da0d | 22 | this->reload(); |
| mariosimaremare | 0:ad9362f18797 | 23 | } |
| mariosimaremare | 0:ad9362f18797 | 24 | |
| mariosimaremare | 2:ed17e258da0d | 25 | void SalinitySensor::reload() |
| mariosimaremare | 0:ad9362f18797 | 26 | { |
| mariosimaremare | 5:4cbe44452889 | 27 | double readings[SAMPLING_NUMBER]; |
| mariosimaremare | 3:7c648d1d8802 | 28 | |
| mariosimaremare | 5:4cbe44452889 | 29 | for(int counter = 0; counter < SAMPLING_NUMBER; ++counter){ |
| mariosimaremare | 3:7c648d1d8802 | 30 | // the reading from sensor. |
| mariosimaremare | 3:7c648d1d8802 | 31 | readings[counter] = this->_analog_in.read(); |
| mariosimaremare | 3:7c648d1d8802 | 32 | } |
| mariosimaremare | 3:7c648d1d8802 | 33 | |
| mariosimaremare | 5:4cbe44452889 | 34 | sort(readings, readings + SAMPLING_NUMBER); |
| mariosimaremare | 3:7c648d1d8802 | 35 | |
| mariosimaremare | 5:4cbe44452889 | 36 | this->_reading = readings[SAMPLING_NUMBER / 2]; |
| mariosimaremare | 3:7c648d1d8802 | 37 | |
| mariosimaremare | 1:f448c12d2c5b | 38 | // converted voltage. |
| mariosimaremare | 1:f448c12d2c5b | 39 | this->_voltage = |
| mariosimaremare | 1:f448c12d2c5b | 40 | this->_reading * |
| mariosimaremare | 5:4cbe44452889 | 41 | VIN * |
| mariosimaremare | 5:4cbe44452889 | 42 | CONVERTER; |
| mariosimaremare | 1:f448c12d2c5b | 43 | // the salinity value. |
| mariosimaremare | 1:f448c12d2c5b | 44 | this->_salinity = |
| mariosimaremare | 1:f448c12d2c5b | 45 | this->_voltage * |
| mariosimaremare | 5:4cbe44452889 | 46 | MULTIPLIER; |
| mariosimaremare | 11:dcaaf1bb21ce | 47 | |
| mariosimaremare | 11:dcaaf1bb21ce | 48 | |
| mariosimaremare | 11:dcaaf1bb21ce | 49 | if(this->_salinity > 0.0){ |
| mariosimaremare | 11:dcaaf1bb21ce | 50 | this->_salinity += VARIANCE; |
| mariosimaremare | 11:dcaaf1bb21ce | 51 | } |
| mariosimaremare | 2:ed17e258da0d | 52 | this->_status = 0.0; |
| mariosimaremare | 3:7c648d1d8802 | 53 | this->_strStatus = "OK"; |
| mariosimaremare | 5:4cbe44452889 | 54 | if(this->_salinity < LOWER_BOUNDARY){ |
| mariosimaremare | 5:4cbe44452889 | 55 | this->_status = this->_salinity - LOWER_BOUNDARY; |
| mariosimaremare | 3:7c648d1d8802 | 56 | this->_strStatus = "LW"; |
| mariosimaremare | 5:4cbe44452889 | 57 | } else if(this->_salinity > UPPER_BOUNDARY){ |
| mariosimaremare | 11:dcaaf1bb21ce | 58 | this->_status = this->_salinity - UPPER_BOUNDARY; |
| mariosimaremare | 3:7c648d1d8802 | 59 | this->_strStatus = "HI"; |
| mariosimaremare | 2:ed17e258da0d | 60 | } |
| mariosimaremare | 2:ed17e258da0d | 61 | } |
| mariosimaremare | 1:f448c12d2c5b | 62 | |
| mariosimaremare | 2:ed17e258da0d | 63 | double SalinitySensor::getReading() |
| mariosimaremare | 2:ed17e258da0d | 64 | { |
| mariosimaremare | 1:f448c12d2c5b | 65 | return(this->_reading); |
| mariosimaremare | 0:ad9362f18797 | 66 | } |
| mariosimaremare | 0:ad9362f18797 | 67 | |
| mariosimaremare | 0:ad9362f18797 | 68 | double SalinitySensor::getVoltage() |
| mariosimaremare | 0:ad9362f18797 | 69 | { |
| mariosimaremare | 1:f448c12d2c5b | 70 | return(this->_voltage); |
| mariosimaremare | 0:ad9362f18797 | 71 | } |
| mariosimaremare | 0:ad9362f18797 | 72 | |
| mariosimaremare | 0:ad9362f18797 | 73 | double SalinitySensor::getSalinity() |
| mariosimaremare | 0:ad9362f18797 | 74 | { |
| mariosimaremare | 1:f448c12d2c5b | 75 | return(this->_salinity); |
| mariosimaremare | 0:ad9362f18797 | 76 | } |
| mariosimaremare | 2:ed17e258da0d | 77 | |
| mariosimaremare | 2:ed17e258da0d | 78 | double SalinitySensor::getStatus() |
| mariosimaremare | 2:ed17e258da0d | 79 | { |
| mariosimaremare | 2:ed17e258da0d | 80 | return(this->_status); |
| mariosimaremare | 2:ed17e258da0d | 81 | } |
| mariosimaremare | 3:7c648d1d8802 | 82 | |
| mariosimaremare | 3:7c648d1d8802 | 83 | char* SalinitySensor::getStrStatus() |
| mariosimaremare | 3:7c648d1d8802 | 84 | { |
| mariosimaremare | 3:7c648d1d8802 | 85 | return(this->_strStatus); |
| mariosimaremare | 3:7c648d1d8802 | 86 | } |