![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Temp/Humidity alarm
main.cpp@0:2e716206ddde, 2020-07-31 (annotated)
- Committer:
- ciaranom
- Date:
- Fri Jul 31 11:22:21 2020 +0000
- Revision:
- 0:2e716206ddde
- Child:
- 1:42f6beb90ce3
Project Temp/Hum alarm
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ciaranom | 0:2e716206ddde | 1 | #include "mbed.h" |
ciaranom | 0:2e716206ddde | 2 | #include "C12832.h" |
ciaranom | 0:2e716206ddde | 3 | |
ciaranom | 0:2e716206ddde | 4 | Serial pc(USBTX, USBRX);//pc is an object of class Serial |
ciaranom | 0:2e716206ddde | 5 | DigitalOut led1(LED1), led2(LED2), led3(LED3), led4(LED4);//LED object |
ciaranom | 0:2e716206ddde | 6 | C12832 lcd(p5, p7, p6, p8, p11);// LCD object |
ciaranom | 0:2e716206ddde | 7 | AnalogIn pot1(p19), pot2(p20);// Pot object |
ciaranom | 0:2e716206ddde | 8 | |
ciaranom | 0:2e716206ddde | 9 | // Relitive humidity from 0% to 100% |
ciaranom | 0:2e716206ddde | 10 | // Temperature from -20°C to 140°C - See word doc for calculations |
ciaranom | 0:2e716206ddde | 11 | |
ciaranom | 0:2e716206ddde | 12 | //LED4 = humidty high |
ciaranom | 0:2e716206ddde | 13 | //LED3 = temperature high |
ciaranom | 0:2e716206ddde | 14 | //LED2 = humidty low |
ciaranom | 0:2e716206ddde | 15 | //LED1 = temperature low |
ciaranom | 0:2e716206ddde | 16 | |
ciaranom | 0:2e716206ddde | 17 | |
ciaranom | 0:2e716206ddde | 18 | |
ciaranom | 0:2e716206ddde | 19 | //bool check = true; |
ciaranom | 0:2e716206ddde | 20 | |
ciaranom | 0:2e716206ddde | 21 | float RH; |
ciaranom | 0:2e716206ddde | 22 | |
ciaranom | 0:2e716206ddde | 23 | float m=160, c=-20; |
ciaranom | 0:2e716206ddde | 24 | float temp; |
ciaranom | 0:2e716206ddde | 25 | float tempK; |
ciaranom | 0:2e716206ddde | 26 | |
ciaranom | 0:2e716206ddde | 27 | float mintemp =5.0, minRH =20.0, maxtemp = 35.0, maxRH =80.0; |
ciaranom | 0:2e716206ddde | 28 | int i; |
ciaranom | 0:2e716206ddde | 29 | |
ciaranom | 0:2e716206ddde | 30 | int main() { |
ciaranom | 0:2e716206ddde | 31 | while(1) { |
ciaranom | 0:2e716206ddde | 32 | |
ciaranom | 0:2e716206ddde | 33 | //while(check) |
ciaranom | 0:2e716206ddde | 34 | // { |
ciaranom | 0:2e716206ddde | 35 | //check =false; |
ciaranom | 0:2e716206ddde | 36 | //} |
ciaranom | 0:2e716206ddde | 37 | |
ciaranom | 0:2e716206ddde | 38 | |
ciaranom | 0:2e716206ddde | 39 | temp = pot2*m + c; |
ciaranom | 0:2e716206ddde | 40 | tempK= temp +273.15; |
ciaranom | 0:2e716206ddde | 41 | RH = pot1*100; |
ciaranom | 0:2e716206ddde | 42 | |
ciaranom | 0:2e716206ddde | 43 | |
ciaranom | 0:2e716206ddde | 44 | pc.printf(" Relative humidity: %.2f %%\r\n\n" , RH); //check %% |
ciaranom | 0:2e716206ddde | 45 | |
ciaranom | 0:2e716206ddde | 46 | pc.printf(" Temperarure: %.2f C\r\n Temperature: %.2f K\r\n\n\n", temp, tempK); //Show temperature in degree Celcius and in Kelvin |
ciaranom | 0:2e716206ddde | 47 | //pc.cls(); |
ciaranom | 0:2e716206ddde | 48 | |
ciaranom | 0:2e716206ddde | 49 | wait(3); |
ciaranom | 0:2e716206ddde | 50 | lcd.cls(); |
ciaranom | 0:2e716206ddde | 51 | lcd.locate(0,20); |
ciaranom | 0:2e716206ddde | 52 | lcd.printf("Relative humidity: %.2f %%", RH); //check %% |
ciaranom | 0:2e716206ddde | 53 | |
ciaranom | 0:2e716206ddde | 54 | lcd.locate(0,0); |
ciaranom | 0:2e716206ddde | 55 | lcd.printf("Temperarure: %.2f C \nTemperature: %.2f K", temp, tempK); |
ciaranom | 0:2e716206ddde | 56 | //lcd.locate(10,0); |
ciaranom | 0:2e716206ddde | 57 | //lcd.printf("Temperarure: %.2f °C, Temperature: %.2f K", temp, tempK); |
ciaranom | 0:2e716206ddde | 58 | |
ciaranom | 0:2e716206ddde | 59 | |
ciaranom | 0:2e716206ddde | 60 | |
ciaranom | 0:2e716206ddde | 61 | // if (temp < mintemp){ |
ciaranom | 0:2e716206ddde | 62 | // for( i=0;i<3;i++){ |
ciaranom | 0:2e716206ddde | 63 | // led1 = 1; |
ciaranom | 0:2e716206ddde | 64 | // wait(0.5); |
ciaranom | 0:2e716206ddde | 65 | // led1=0; |
ciaranom | 0:2e716206ddde | 66 | // wait(0.5); |
ciaranom | 0:2e716206ddde | 67 | // } |
ciaranom | 0:2e716206ddde | 68 | // |
ciaranom | 0:2e716206ddde | 69 | // } |
ciaranom | 0:2e716206ddde | 70 | // if (RH < minRH){ |
ciaranom | 0:2e716206ddde | 71 | // for( i=0;i<3;i++){ |
ciaranom | 0:2e716206ddde | 72 | // led2 = 1; |
ciaranom | 0:2e716206ddde | 73 | // wait(0.5); |
ciaranom | 0:2e716206ddde | 74 | // led2=0; |
ciaranom | 0:2e716206ddde | 75 | // wait(0.5); |
ciaranom | 0:2e716206ddde | 76 | // } |
ciaranom | 0:2e716206ddde | 77 | // |
ciaranom | 0:2e716206ddde | 78 | // } |
ciaranom | 0:2e716206ddde | 79 | // if (temp > maxtemp){ |
ciaranom | 0:2e716206ddde | 80 | // for( i=0;i<3;i++){ |
ciaranom | 0:2e716206ddde | 81 | // led3 = 1; |
ciaranom | 0:2e716206ddde | 82 | // wait(0.5); |
ciaranom | 0:2e716206ddde | 83 | // led3=0; |
ciaranom | 0:2e716206ddde | 84 | // wait(0.5); |
ciaranom | 0:2e716206ddde | 85 | // } |
ciaranom | 0:2e716206ddde | 86 | // |
ciaranom | 0:2e716206ddde | 87 | // } |
ciaranom | 0:2e716206ddde | 88 | // |
ciaranom | 0:2e716206ddde | 89 | // if (RH > maxRH){ |
ciaranom | 0:2e716206ddde | 90 | // for( i=0;i<3;i++){ |
ciaranom | 0:2e716206ddde | 91 | // led4 = 1; |
ciaranom | 0:2e716206ddde | 92 | // wait(0.5); |
ciaranom | 0:2e716206ddde | 93 | // led4=0; |
ciaranom | 0:2e716206ddde | 94 | // wait(0.5); |
ciaranom | 0:2e716206ddde | 95 | // } |
ciaranom | 0:2e716206ddde | 96 | // |
ciaranom | 0:2e716206ddde | 97 | // } |
ciaranom | 0:2e716206ddde | 98 | |
ciaranom | 0:2e716206ddde | 99 | |
ciaranom | 0:2e716206ddde | 100 | |
ciaranom | 0:2e716206ddde | 101 | // temp < mintemp and RH < minRH 1&2 |
ciaranom | 0:2e716206ddde | 102 | // temp < mintemp and RH > minRH and RH < maxRH 1 |
ciaranom | 0:2e716206ddde | 103 | // temp < mintemp and RH > maxRH 1&4 |
ciaranom | 0:2e716206ddde | 104 | // temp > mintemp and temp < maxtemp and RH < minRH 2 |
ciaranom | 0:2e716206ddde | 105 | // temp > mintemp and temp < maxtemp and RH > minRH and RH < maxRH noLED |
ciaranom | 0:2e716206ddde | 106 | // temp > mintemp and temp < maxtemp and RH > maxRH 4 |
ciaranom | 0:2e716206ddde | 107 | // temp > maxtemp and RH < minRH 3&2 |
ciaranom | 0:2e716206ddde | 108 | // temp > maxtemp and RH > minRH and RH < maxRH 3 |
ciaranom | 0:2e716206ddde | 109 | // temp > maxtemp and RH > maxRH 3&4 |
ciaranom | 0:2e716206ddde | 110 | |
ciaranom | 0:2e716206ddde | 111 | if (temp < mintemp and RH < minRH){ |
ciaranom | 0:2e716206ddde | 112 | pc.printf("Temperature too low. Please increase. \r\n Humidty too low. Please increase \r\n\n"); // adding\r for TeraTeam, to print starts at 0 on the x axis. |
ciaranom | 0:2e716206ddde | 113 | while(temp < mintemp and RH < minRH){ |
ciaranom | 0:2e716206ddde | 114 | //for( i=0;i<3;i++){ |
ciaranom | 0:2e716206ddde | 115 | led1 = 1,led2 = 1; |
ciaranom | 0:2e716206ddde | 116 | wait(0.5); |
ciaranom | 0:2e716206ddde | 117 | led1 = 0,led2 = 0; |
ciaranom | 0:2e716206ddde | 118 | wait(0.5); |
ciaranom | 0:2e716206ddde | 119 | temp = pot2*m + c; //adding another check within the loop to see if temp and RH have moved back within limits |
ciaranom | 0:2e716206ddde | 120 | RH = pot1*100; |
ciaranom | 0:2e716206ddde | 121 | } |
ciaranom | 0:2e716206ddde | 122 | } |
ciaranom | 0:2e716206ddde | 123 | else if(temp < mintemp and RH > minRH and RH < maxRH){ |
ciaranom | 0:2e716206ddde | 124 | pc.printf("Temperature too low. Please increase \r\n\n"); |
ciaranom | 0:2e716206ddde | 125 | while (temp < mintemp and RH > minRH and RH < maxRH){ |
ciaranom | 0:2e716206ddde | 126 | //for( i=0;i<3;i++){ |
ciaranom | 0:2e716206ddde | 127 | //pc.printf("Temperature too low. Please increase \n"); |
ciaranom | 0:2e716206ddde | 128 | led1 = 1; |
ciaranom | 0:2e716206ddde | 129 | wait(0.5); |
ciaranom | 0:2e716206ddde | 130 | led1 = 0; |
ciaranom | 0:2e716206ddde | 131 | wait(0.5); |
ciaranom | 0:2e716206ddde | 132 | temp = pot2*m + c; |
ciaranom | 0:2e716206ddde | 133 | RH = pot1*100; |
ciaranom | 0:2e716206ddde | 134 | } |
ciaranom | 0:2e716206ddde | 135 | } |
ciaranom | 0:2e716206ddde | 136 | else if (temp < mintemp and RH > maxRH){ |
ciaranom | 0:2e716206ddde | 137 | pc.printf("Temperature too low. Please increase. \r\n Humidty too high. Please reduce \r\n\n"); |
ciaranom | 0:2e716206ddde | 138 | while (temp < mintemp and RH > maxRH){ |
ciaranom | 0:2e716206ddde | 139 | //for( i=0;i<3;i++){ |
ciaranom | 0:2e716206ddde | 140 | //pc.printf("Temperature too low. Please increase. \n Humidty too high. Please reduce \n"); |
ciaranom | 0:2e716206ddde | 141 | led1 = 1,led3 = 1; |
ciaranom | 0:2e716206ddde | 142 | wait(0.5); |
ciaranom | 0:2e716206ddde | 143 | led1 = 0,led3 = 0; |
ciaranom | 0:2e716206ddde | 144 | wait(0.5); |
ciaranom | 0:2e716206ddde | 145 | temp = pot2*m + c; |
ciaranom | 0:2e716206ddde | 146 | RH = pot1*100; |
ciaranom | 0:2e716206ddde | 147 | } |
ciaranom | 0:2e716206ddde | 148 | } |
ciaranom | 0:2e716206ddde | 149 | else if (temp > mintemp and temp < maxtemp and RH < minRH){ |
ciaranom | 0:2e716206ddde | 150 | pc.printf("Humidty too low. Please increase \r\n\n"); |
ciaranom | 0:2e716206ddde | 151 | while (temp > mintemp and temp < maxtemp and RH < minRH){ |
ciaranom | 0:2e716206ddde | 152 | //for( i=0;i<3;i++){ |
ciaranom | 0:2e716206ddde | 153 | //pc.printf("Humidty too low. Please increase \n"); |
ciaranom | 0:2e716206ddde | 154 | led2 = 1; |
ciaranom | 0:2e716206ddde | 155 | wait(0.5); |
ciaranom | 0:2e716206ddde | 156 | led2 = 0; |
ciaranom | 0:2e716206ddde | 157 | wait(0.5); |
ciaranom | 0:2e716206ddde | 158 | temp = pot2*m + c; |
ciaranom | 0:2e716206ddde | 159 | RH = pot1*100; |
ciaranom | 0:2e716206ddde | 160 | } |
ciaranom | 0:2e716206ddde | 161 | } |
ciaranom | 0:2e716206ddde | 162 | |
ciaranom | 0:2e716206ddde | 163 | else if (temp > mintemp and temp < maxtemp and RH > maxRH ){ |
ciaranom | 0:2e716206ddde | 164 | pc.printf("Humidty too high. Please reduce \r\n\n"); |
ciaranom | 0:2e716206ddde | 165 | while (temp > mintemp and temp < maxtemp and RH > maxRH ){ |
ciaranom | 0:2e716206ddde | 166 | //for( i=0;i<3;i++){ |
ciaranom | 0:2e716206ddde | 167 | //pc.printf("Humidty too high. Please reduce \n"); |
ciaranom | 0:2e716206ddde | 168 | led3 = 1; |
ciaranom | 0:2e716206ddde | 169 | wait(0.5); |
ciaranom | 0:2e716206ddde | 170 | led3 = 0; |
ciaranom | 0:2e716206ddde | 171 | wait(0.5); |
ciaranom | 0:2e716206ddde | 172 | temp = pot2*m + c; |
ciaranom | 0:2e716206ddde | 173 | RH = pot1*100; |
ciaranom | 0:2e716206ddde | 174 | } |
ciaranom | 0:2e716206ddde | 175 | } |
ciaranom | 0:2e716206ddde | 176 | |
ciaranom | 0:2e716206ddde | 177 | else if (temp > maxtemp and RH < minRH){ |
ciaranom | 0:2e716206ddde | 178 | pc.printf("Temperature too high. Please reduce. \r\n Humidty too low. Please increase \r\n\n"); |
ciaranom | 0:2e716206ddde | 179 | while (temp > maxtemp and RH < minRH){ |
ciaranom | 0:2e716206ddde | 180 | //for( i=0;i<3;i++){ |
ciaranom | 0:2e716206ddde | 181 | //pc.printf("Temperature too high. Please reduce. \n Humidty too low. Please increase \n"); |
ciaranom | 0:2e716206ddde | 182 | led4 = 1,led2 = 1; |
ciaranom | 0:2e716206ddde | 183 | wait(0.5); |
ciaranom | 0:2e716206ddde | 184 | led4 = 0,led2 = 0; |
ciaranom | 0:2e716206ddde | 185 | wait(0.5); |
ciaranom | 0:2e716206ddde | 186 | temp = pot2*m + c; |
ciaranom | 0:2e716206ddde | 187 | RH = pot1*100; |
ciaranom | 0:2e716206ddde | 188 | } |
ciaranom | 0:2e716206ddde | 189 | } |
ciaranom | 0:2e716206ddde | 190 | |
ciaranom | 0:2e716206ddde | 191 | else if (temp > maxtemp and RH > minRH and RH < maxRH){ |
ciaranom | 0:2e716206ddde | 192 | pc.printf("Temperature too high. Please reduce \r\n\n"); |
ciaranom | 0:2e716206ddde | 193 | while (temp > maxtemp and RH > minRH and RH < maxRH){ |
ciaranom | 0:2e716206ddde | 194 | //for( i=0;i<3;i++){ |
ciaranom | 0:2e716206ddde | 195 | //pc.printf("Temperature too high. Please reduce \n"); |
ciaranom | 0:2e716206ddde | 196 | led4 = 1; |
ciaranom | 0:2e716206ddde | 197 | wait(0.5); |
ciaranom | 0:2e716206ddde | 198 | led4 = 0; |
ciaranom | 0:2e716206ddde | 199 | wait(0.5); |
ciaranom | 0:2e716206ddde | 200 | temp = pot2*m + c; |
ciaranom | 0:2e716206ddde | 201 | RH = pot1*100; |
ciaranom | 0:2e716206ddde | 202 | } |
ciaranom | 0:2e716206ddde | 203 | } |
ciaranom | 0:2e716206ddde | 204 | |
ciaranom | 0:2e716206ddde | 205 | else if (temp > maxtemp and RH > maxRH){ |
ciaranom | 0:2e716206ddde | 206 | pc.printf("Temperature too high. Please reduce. \r\n Humidty too high. Please reduce \r\n\n"); |
ciaranom | 0:2e716206ddde | 207 | while (temp > maxtemp and RH > maxRH){ |
ciaranom | 0:2e716206ddde | 208 | //for( i=0;i<3;i++){ |
ciaranom | 0:2e716206ddde | 209 | //pc.printf("Temperature too high. Please reduce. \n Humidty too high. Please reduce \n"); |
ciaranom | 0:2e716206ddde | 210 | led4 = 1,led3 = 1; |
ciaranom | 0:2e716206ddde | 211 | wait(0.5); |
ciaranom | 0:2e716206ddde | 212 | led4 = 0, led3 = 0; |
ciaranom | 0:2e716206ddde | 213 | wait(0.5); |
ciaranom | 0:2e716206ddde | 214 | temp = pot2*m + c; |
ciaranom | 0:2e716206ddde | 215 | RH = pot1*100; |
ciaranom | 0:2e716206ddde | 216 | } |
ciaranom | 0:2e716206ddde | 217 | } |
ciaranom | 0:2e716206ddde | 218 | |
ciaranom | 0:2e716206ddde | 219 | } |
ciaranom | 0:2e716206ddde | 220 | |
ciaranom | 0:2e716206ddde | 221 | // instead of running through cycle 3 times with a for loop, while loop will continue to run while RH and temp are outside of parameters. |
ciaranom | 0:2e716206ddde | 222 | |
ciaranom | 0:2e716206ddde | 223 | |
ciaranom | 0:2e716206ddde | 224 | |
ciaranom | 0:2e716206ddde | 225 | |
ciaranom | 0:2e716206ddde | 226 | |
ciaranom | 0:2e716206ddde | 227 | |
ciaranom | 0:2e716206ddde | 228 | } |
ciaranom | 0:2e716206ddde | 229 |