Temp/Humidity alarm

Dependencies:   mbed C12832

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?

UserRevisionLine numberNew 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