PRO2_Team 1_collected code with ticker_not working yet
Fork of PRO2_samlet_kode by
compare.cpp@1:135bd458e39e, 2017-05-18 (annotated)
- Committer:
- OlgaHoeyer
- Date:
- Thu May 18 22:34:57 2017 +0000
- Revision:
- 1:135bd458e39e
half finished modular design
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
OlgaHoeyer | 1:135bd458e39e | 1 | //Author : Olga Hoeyer |
OlgaHoeyer | 1:135bd458e39e | 2 | //Date : 18 May 2017 |
OlgaHoeyer | 1:135bd458e39e | 3 | //Version : 2.0 |
OlgaHoeyer | 1:135bd458e39e | 4 | //Changes: Structure changed to modular, to ease future use of the funktion. |
OlgaHoeyer | 1:135bd458e39e | 5 | //Copyright : Open for everyone |
OlgaHoeyer | 1:135bd458e39e | 6 | // |
OlgaHoeyer | 1:135bd458e39e | 7 | // Description : Analysis part for EDE PRO2 Team 1 project. |
OlgaHoeyer | 1:135bd458e39e | 8 | //Program takes temperature and humidity as arguments (read from sensors), |
OlgaHoeyer | 1:135bd458e39e | 9 | //together with lower and higher limit on temperature and evaluate air quality. |
OlgaHoeyer | 1:135bd458e39e | 10 | //Output is status (int, from 1 to 5). |
OlgaHoeyer | 1:135bd458e39e | 11 | |
OlgaHoeyer | 1:135bd458e39e | 12 | #include "mbed.h" |
OlgaHoeyer | 1:135bd458e39e | 13 | |
OlgaHoeyer | 1:135bd458e39e | 14 | int Compare_values(float hum, float temp, |
OlgaHoeyer | 1:135bd458e39e | 15 | int temperature_low, int temperature_high) |
OlgaHoeyer | 1:135bd458e39e | 16 | { |
OlgaHoeyer | 1:135bd458e39e | 17 | //local variables |
OlgaHoeyer | 1:135bd458e39e | 18 | int status, humidity, temperature; |
OlgaHoeyer | 1:135bd458e39e | 19 | |
OlgaHoeyer | 1:135bd458e39e | 20 | //__________________________________ |
OlgaHoeyer | 1:135bd458e39e | 21 | // Definition of limits |
OlgaHoeyer | 1:135bd458e39e | 22 | //__________________________________ |
OlgaHoeyer | 1:135bd458e39e | 23 | |
OlgaHoeyer | 1:135bd458e39e | 24 | //Humidity limits. |
OlgaHoeyer | 1:135bd458e39e | 25 | const int HUMIDITY_LOW = 20; |
OlgaHoeyer | 1:135bd458e39e | 26 | const int HUMIDITY_HIGH= 60; |
OlgaHoeyer | 1:135bd458e39e | 27 | |
OlgaHoeyer | 1:135bd458e39e | 28 | //Extra limits where LED will start blinking in red: |
OlgaHoeyer | 1:135bd458e39e | 29 | //13 < Temp < 30; 10%< hum < 80% |
OlgaHoeyer | 1:135bd458e39e | 30 | const int HUMIDITY_EXTRA_LOW = 10; |
OlgaHoeyer | 1:135bd458e39e | 31 | const int HUMIDITY_EXTRA_HIGH= 80; |
OlgaHoeyer | 1:135bd458e39e | 32 | const int TEMPERATURE_EXTRA_LOW = 13; |
OlgaHoeyer | 1:135bd458e39e | 33 | const int TEMPERATURE_EXTRA_HIGH= 30; |
OlgaHoeyer | 1:135bd458e39e | 34 | |
OlgaHoeyer | 1:135bd458e39e | 35 | //Definition of output values |
OlgaHoeyer | 1:135bd458e39e | 36 | const int GOOD_LEVEL = 1; //green |
OlgaHoeyer | 1:135bd458e39e | 37 | const int ACCEPT_LEVEL = 2; //orange |
OlgaHoeyer | 1:135bd458e39e | 38 | const int CRITICAL_LEVEL = 3; //red |
OlgaHoeyer | 1:135bd458e39e | 39 | const int EXTRA_CRITICAL_LEVEL = 4; //red strobe |
OlgaHoeyer | 1:135bd458e39e | 40 | const int USER_NEEDED = 5; //blue strobe |
OlgaHoeyer | 1:135bd458e39e | 41 | |
OlgaHoeyer | 1:135bd458e39e | 42 | |
OlgaHoeyer | 1:135bd458e39e | 43 | //__________________________________ |
OlgaHoeyer | 1:135bd458e39e | 44 | // main body: comparison |
OlgaHoeyer | 1:135bd458e39e | 45 | //__________________________________ |
OlgaHoeyer | 1:135bd458e39e | 46 | |
OlgaHoeyer | 1:135bd458e39e | 47 | humidity=(int)hum; //convertation of float to int. |
OlgaHoeyer | 1:135bd458e39e | 48 | temperature=(int)temp; |
OlgaHoeyer | 1:135bd458e39e | 49 | |
OlgaHoeyer | 1:135bd458e39e | 50 | // check if there is a connection to the sensor |
OlgaHoeyer | 1:135bd458e39e | 51 | // (if null=no data=there is no connection |
OlgaHoeyer | 1:135bd458e39e | 52 | |
OlgaHoeyer | 1:135bd458e39e | 53 | if ((temperature == 0) || (humidity == 0)) |
OlgaHoeyer | 1:135bd458e39e | 54 | status= USER_NEEDED; |
OlgaHoeyer | 1:135bd458e39e | 55 | |
OlgaHoeyer | 1:135bd458e39e | 56 | //comparing in nested loop. |
OlgaHoeyer | 1:135bd458e39e | 57 | else if ((temperature < TEMPERATURE_EXTRA_LOW) || |
OlgaHoeyer | 1:135bd458e39e | 58 | (temperature > TEMPERATURE_EXTRA_HIGH)) |
OlgaHoeyer | 1:135bd458e39e | 59 | |
OlgaHoeyer | 1:135bd458e39e | 60 | status= EXTRA_CRITICAL_LEVEL; |
OlgaHoeyer | 1:135bd458e39e | 61 | |
OlgaHoeyer | 1:135bd458e39e | 62 | else if ((humidity < HUMIDITY_EXTRA_LOW) || |
OlgaHoeyer | 1:135bd458e39e | 63 | (humidity > HUMIDITY_EXTRA_HIGH)) |
OlgaHoeyer | 1:135bd458e39e | 64 | |
OlgaHoeyer | 1:135bd458e39e | 65 | status= EXTRA_CRITICAL_LEVEL; |
OlgaHoeyer | 1:135bd458e39e | 66 | |
OlgaHoeyer | 1:135bd458e39e | 67 | else if ((temperature < temperature_low) || |
OlgaHoeyer | 1:135bd458e39e | 68 | (temperature > temperature_high)) |
OlgaHoeyer | 1:135bd458e39e | 69 | |
OlgaHoeyer | 1:135bd458e39e | 70 | status= CRITICAL_LEVEL; |
OlgaHoeyer | 1:135bd458e39e | 71 | |
OlgaHoeyer | 1:135bd458e39e | 72 | else if ((temperature < temperature_high) && |
OlgaHoeyer | 1:135bd458e39e | 73 | (temperature > temperature_low) && |
OlgaHoeyer | 1:135bd458e39e | 74 | (humidity < HUMIDITY_HIGH) && |
OlgaHoeyer | 1:135bd458e39e | 75 | (humidity > HUMIDITY_LOW)) |
OlgaHoeyer | 1:135bd458e39e | 76 | |
OlgaHoeyer | 1:135bd458e39e | 77 | status= GOOD_LEVEL; |
OlgaHoeyer | 1:135bd458e39e | 78 | |
OlgaHoeyer | 1:135bd458e39e | 79 | else status= ACCEPT_LEVEL; |
OlgaHoeyer | 1:135bd458e39e | 80 | |
OlgaHoeyer | 1:135bd458e39e | 81 | return(status); |
OlgaHoeyer | 1:135bd458e39e | 82 | } |