Ciaran O'Malley
/
HumidityTemeratureSensor_Project
Temp/Humidity alarm
main.cpp@1:42f6beb90ce3, 2020-07-31 (annotated)
- Committer:
- ciaranom
- Date:
- Fri Jul 31 19:33:46 2020 +0000
- Revision:
- 1:42f6beb90ce3
- Parent:
- 0:2e716206ddde
Project
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 | float RH; |
ciaranom | 0:2e716206ddde | 19 | |
ciaranom | 0:2e716206ddde | 20 | float m=160, c=-20; |
ciaranom | 0:2e716206ddde | 21 | float temp; |
ciaranom | 0:2e716206ddde | 22 | float tempK; |
ciaranom | 0:2e716206ddde | 23 | |
ciaranom | 0:2e716206ddde | 24 | float mintemp =5.0, minRH =20.0, maxtemp = 35.0, maxRH =80.0; |
ciaranom | 0:2e716206ddde | 25 | int i; |
ciaranom | 0:2e716206ddde | 26 | |
ciaranom | 0:2e716206ddde | 27 | int main() { |
ciaranom | 0:2e716206ddde | 28 | while(1) { |
ciaranom | 0:2e716206ddde | 29 | |
ciaranom | 0:2e716206ddde | 30 | temp = pot2*m + c; |
ciaranom | 0:2e716206ddde | 31 | tempK= temp +273.15; |
ciaranom | 0:2e716206ddde | 32 | RH = pot1*100; |
ciaranom | 0:2e716206ddde | 33 | |
ciaranom | 0:2e716206ddde | 34 | |
ciaranom | 0:2e716206ddde | 35 | pc.printf(" Relative humidity: %.2f %%\r\n\n" , RH); //check %% |
ciaranom | 0:2e716206ddde | 36 | |
ciaranom | 0:2e716206ddde | 37 | 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 | 38 | //pc.cls(); |
ciaranom | 0:2e716206ddde | 39 | |
ciaranom | 0:2e716206ddde | 40 | wait(3); |
ciaranom | 0:2e716206ddde | 41 | lcd.cls(); |
ciaranom | 0:2e716206ddde | 42 | lcd.locate(0,20); |
ciaranom | 0:2e716206ddde | 43 | lcd.printf("Relative humidity: %.2f %%", RH); //check %% |
ciaranom | 0:2e716206ddde | 44 | |
ciaranom | 0:2e716206ddde | 45 | lcd.locate(0,0); |
ciaranom | 0:2e716206ddde | 46 | lcd.printf("Temperarure: %.2f C \nTemperature: %.2f K", temp, tempK); |
ciaranom | 0:2e716206ddde | 47 | //lcd.locate(10,0); |
ciaranom | 0:2e716206ddde | 48 | //lcd.printf("Temperarure: %.2f °C, Temperature: %.2f K", temp, tempK); |
ciaranom | 0:2e716206ddde | 49 | |
ciaranom | 0:2e716206ddde | 50 | |
ciaranom | 0:2e716206ddde | 51 | |
ciaranom | 0:2e716206ddde | 52 | // if (temp < mintemp){ |
ciaranom | 0:2e716206ddde | 53 | // for( i=0;i<3;i++){ |
ciaranom | 0:2e716206ddde | 54 | // led1 = 1; |
ciaranom | 0:2e716206ddde | 55 | // wait(0.5); |
ciaranom | 0:2e716206ddde | 56 | // led1=0; |
ciaranom | 0:2e716206ddde | 57 | // wait(0.5); |
ciaranom | 0:2e716206ddde | 58 | // } |
ciaranom | 0:2e716206ddde | 59 | // |
ciaranom | 0:2e716206ddde | 60 | // } |
ciaranom | 0:2e716206ddde | 61 | // if (RH < minRH){ |
ciaranom | 0:2e716206ddde | 62 | // for( i=0;i<3;i++){ |
ciaranom | 0:2e716206ddde | 63 | // led2 = 1; |
ciaranom | 0:2e716206ddde | 64 | // wait(0.5); |
ciaranom | 0:2e716206ddde | 65 | // led2=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 (temp > maxtemp){ |
ciaranom | 0:2e716206ddde | 71 | // for( i=0;i<3;i++){ |
ciaranom | 0:2e716206ddde | 72 | // led3 = 1; |
ciaranom | 0:2e716206ddde | 73 | // wait(0.5); |
ciaranom | 0:2e716206ddde | 74 | // led3=0; |
ciaranom | 0:2e716206ddde | 75 | // wait(0.5); |
ciaranom | 0:2e716206ddde | 76 | // } |
ciaranom | 0:2e716206ddde | 77 | // |
ciaranom | 0:2e716206ddde | 78 | // } |
ciaranom | 0:2e716206ddde | 79 | // |
ciaranom | 0:2e716206ddde | 80 | // if (RH > maxRH){ |
ciaranom | 0:2e716206ddde | 81 | // for( i=0;i<3;i++){ |
ciaranom | 0:2e716206ddde | 82 | // led4 = 1; |
ciaranom | 0:2e716206ddde | 83 | // wait(0.5); |
ciaranom | 0:2e716206ddde | 84 | // led4=0; |
ciaranom | 0:2e716206ddde | 85 | // wait(0.5); |
ciaranom | 0:2e716206ddde | 86 | // } |
ciaranom | 0:2e716206ddde | 87 | // |
ciaranom | 0:2e716206ddde | 88 | // } |
ciaranom | 0:2e716206ddde | 89 | |
ciaranom | 0:2e716206ddde | 90 | |
ciaranom | 0:2e716206ddde | 91 | |
ciaranom | 0:2e716206ddde | 92 | // temp < mintemp and RH < minRH 1&2 |
ciaranom | 0:2e716206ddde | 93 | // temp < mintemp and RH > minRH and RH < maxRH 1 |
ciaranom | 0:2e716206ddde | 94 | // temp < mintemp and RH > maxRH 1&4 |
ciaranom | 0:2e716206ddde | 95 | // temp > mintemp and temp < maxtemp and RH < minRH 2 |
ciaranom | 0:2e716206ddde | 96 | // temp > mintemp and temp < maxtemp and RH > minRH and RH < maxRH noLED |
ciaranom | 0:2e716206ddde | 97 | // temp > mintemp and temp < maxtemp and RH > maxRH 4 |
ciaranom | 0:2e716206ddde | 98 | // temp > maxtemp and RH < minRH 3&2 |
ciaranom | 0:2e716206ddde | 99 | // temp > maxtemp and RH > minRH and RH < maxRH 3 |
ciaranom | 0:2e716206ddde | 100 | // temp > maxtemp and RH > maxRH 3&4 |
ciaranom | 0:2e716206ddde | 101 | |
ciaranom | 0:2e716206ddde | 102 | if (temp < mintemp and RH < minRH){ |
ciaranom | 0:2e716206ddde | 103 | 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 | 104 | while(temp < mintemp and RH < minRH){ |
ciaranom | 0:2e716206ddde | 105 | //for( i=0;i<3;i++){ |
ciaranom | 0:2e716206ddde | 106 | led1 = 1,led2 = 1; |
ciaranom | 0:2e716206ddde | 107 | wait(0.5); |
ciaranom | 0:2e716206ddde | 108 | led1 = 0,led2 = 0; |
ciaranom | 0:2e716206ddde | 109 | wait(0.5); |
ciaranom | 0:2e716206ddde | 110 | temp = pot2*m + c; //adding another check within the loop to see if temp and RH have moved back within limits |
ciaranom | 0:2e716206ddde | 111 | RH = pot1*100; |
ciaranom | 0:2e716206ddde | 112 | } |
ciaranom | 0:2e716206ddde | 113 | } |
ciaranom | 0:2e716206ddde | 114 | else if(temp < mintemp and RH > minRH and RH < maxRH){ |
ciaranom | 0:2e716206ddde | 115 | pc.printf("Temperature too low. Please increase \r\n\n"); |
ciaranom | 0:2e716206ddde | 116 | while (temp < mintemp and RH > minRH and RH < maxRH){ |
ciaranom | 0:2e716206ddde | 117 | //for( i=0;i<3;i++){ |
ciaranom | 0:2e716206ddde | 118 | //pc.printf("Temperature too low. Please increase \n"); |
ciaranom | 0:2e716206ddde | 119 | led1 = 1; |
ciaranom | 0:2e716206ddde | 120 | wait(0.5); |
ciaranom | 0:2e716206ddde | 121 | led1 = 0; |
ciaranom | 0:2e716206ddde | 122 | wait(0.5); |
ciaranom | 0:2e716206ddde | 123 | temp = pot2*m + c; |
ciaranom | 0:2e716206ddde | 124 | RH = pot1*100; |
ciaranom | 0:2e716206ddde | 125 | } |
ciaranom | 0:2e716206ddde | 126 | } |
ciaranom | 0:2e716206ddde | 127 | else if (temp < mintemp and RH > maxRH){ |
ciaranom | 0:2e716206ddde | 128 | pc.printf("Temperature too low. Please increase. \r\n Humidty too high. Please reduce \r\n\n"); |
ciaranom | 0:2e716206ddde | 129 | while (temp < mintemp and RH > maxRH){ |
ciaranom | 0:2e716206ddde | 130 | //for( i=0;i<3;i++){ |
ciaranom | 0:2e716206ddde | 131 | //pc.printf("Temperature too low. Please increase. \n Humidty too high. Please reduce \n"); |
ciaranom | 0:2e716206ddde | 132 | led1 = 1,led3 = 1; |
ciaranom | 0:2e716206ddde | 133 | wait(0.5); |
ciaranom | 0:2e716206ddde | 134 | led1 = 0,led3 = 0; |
ciaranom | 0:2e716206ddde | 135 | wait(0.5); |
ciaranom | 0:2e716206ddde | 136 | temp = pot2*m + c; |
ciaranom | 0:2e716206ddde | 137 | RH = pot1*100; |
ciaranom | 0:2e716206ddde | 138 | } |
ciaranom | 0:2e716206ddde | 139 | } |
ciaranom | 0:2e716206ddde | 140 | else if (temp > mintemp and temp < maxtemp and RH < minRH){ |
ciaranom | 0:2e716206ddde | 141 | pc.printf("Humidty too low. Please increase \r\n\n"); |
ciaranom | 0:2e716206ddde | 142 | while (temp > mintemp and temp < maxtemp and RH < minRH){ |
ciaranom | 0:2e716206ddde | 143 | //for( i=0;i<3;i++){ |
ciaranom | 0:2e716206ddde | 144 | //pc.printf("Humidty too low. Please increase \n"); |
ciaranom | 0:2e716206ddde | 145 | led2 = 1; |
ciaranom | 0:2e716206ddde | 146 | wait(0.5); |
ciaranom | 0:2e716206ddde | 147 | led2 = 0; |
ciaranom | 0:2e716206ddde | 148 | wait(0.5); |
ciaranom | 0:2e716206ddde | 149 | temp = pot2*m + c; |
ciaranom | 0:2e716206ddde | 150 | RH = pot1*100; |
ciaranom | 0:2e716206ddde | 151 | } |
ciaranom | 0:2e716206ddde | 152 | } |
ciaranom | 0:2e716206ddde | 153 | |
ciaranom | 0:2e716206ddde | 154 | else if (temp > mintemp and temp < maxtemp and RH > maxRH ){ |
ciaranom | 0:2e716206ddde | 155 | pc.printf("Humidty too high. Please reduce \r\n\n"); |
ciaranom | 0:2e716206ddde | 156 | while (temp > mintemp and temp < maxtemp and RH > maxRH ){ |
ciaranom | 0:2e716206ddde | 157 | //for( i=0;i<3;i++){ |
ciaranom | 0:2e716206ddde | 158 | //pc.printf("Humidty too high. Please reduce \n"); |
ciaranom | 0:2e716206ddde | 159 | led3 = 1; |
ciaranom | 0:2e716206ddde | 160 | wait(0.5); |
ciaranom | 0:2e716206ddde | 161 | led3 = 0; |
ciaranom | 0:2e716206ddde | 162 | wait(0.5); |
ciaranom | 0:2e716206ddde | 163 | temp = pot2*m + c; |
ciaranom | 0:2e716206ddde | 164 | RH = pot1*100; |
ciaranom | 0:2e716206ddde | 165 | } |
ciaranom | 0:2e716206ddde | 166 | } |
ciaranom | 0:2e716206ddde | 167 | |
ciaranom | 0:2e716206ddde | 168 | else if (temp > maxtemp and RH < minRH){ |
ciaranom | 0:2e716206ddde | 169 | pc.printf("Temperature too high. Please reduce. \r\n Humidty too low. Please increase \r\n\n"); |
ciaranom | 0:2e716206ddde | 170 | while (temp > maxtemp and RH < minRH){ |
ciaranom | 0:2e716206ddde | 171 | //for( i=0;i<3;i++){ |
ciaranom | 0:2e716206ddde | 172 | //pc.printf("Temperature too high. Please reduce. \n Humidty too low. Please increase \n"); |
ciaranom | 0:2e716206ddde | 173 | led4 = 1,led2 = 1; |
ciaranom | 0:2e716206ddde | 174 | wait(0.5); |
ciaranom | 0:2e716206ddde | 175 | led4 = 0,led2 = 0; |
ciaranom | 0:2e716206ddde | 176 | wait(0.5); |
ciaranom | 0:2e716206ddde | 177 | temp = pot2*m + c; |
ciaranom | 0:2e716206ddde | 178 | RH = pot1*100; |
ciaranom | 0:2e716206ddde | 179 | } |
ciaranom | 0:2e716206ddde | 180 | } |
ciaranom | 0:2e716206ddde | 181 | |
ciaranom | 0:2e716206ddde | 182 | else if (temp > maxtemp and RH > minRH and RH < maxRH){ |
ciaranom | 0:2e716206ddde | 183 | pc.printf("Temperature too high. Please reduce \r\n\n"); |
ciaranom | 0:2e716206ddde | 184 | while (temp > maxtemp and RH > minRH and RH < maxRH){ |
ciaranom | 0:2e716206ddde | 185 | //for( i=0;i<3;i++){ |
ciaranom | 0:2e716206ddde | 186 | //pc.printf("Temperature too high. Please reduce \n"); |
ciaranom | 0:2e716206ddde | 187 | led4 = 1; |
ciaranom | 0:2e716206ddde | 188 | wait(0.5); |
ciaranom | 0:2e716206ddde | 189 | led4 = 0; |
ciaranom | 0:2e716206ddde | 190 | wait(0.5); |
ciaranom | 0:2e716206ddde | 191 | temp = pot2*m + c; |
ciaranom | 0:2e716206ddde | 192 | RH = pot1*100; |
ciaranom | 0:2e716206ddde | 193 | } |
ciaranom | 0:2e716206ddde | 194 | } |
ciaranom | 0:2e716206ddde | 195 | |
ciaranom | 0:2e716206ddde | 196 | else if (temp > maxtemp and RH > maxRH){ |
ciaranom | 0:2e716206ddde | 197 | pc.printf("Temperature too high. Please reduce. \r\n Humidty too high. Please reduce \r\n\n"); |
ciaranom | 0:2e716206ddde | 198 | while (temp > maxtemp and RH > maxRH){ |
ciaranom | 0:2e716206ddde | 199 | //for( i=0;i<3;i++){ |
ciaranom | 0:2e716206ddde | 200 | //pc.printf("Temperature too high. Please reduce. \n Humidty too high. Please reduce \n"); |
ciaranom | 0:2e716206ddde | 201 | led4 = 1,led3 = 1; |
ciaranom | 0:2e716206ddde | 202 | wait(0.5); |
ciaranom | 0:2e716206ddde | 203 | led4 = 0, led3 = 0; |
ciaranom | 0:2e716206ddde | 204 | wait(0.5); |
ciaranom | 0:2e716206ddde | 205 | temp = pot2*m + c; |
ciaranom | 0:2e716206ddde | 206 | RH = pot1*100; |
ciaranom | 0:2e716206ddde | 207 | } |
ciaranom | 0:2e716206ddde | 208 | } |
ciaranom | 0:2e716206ddde | 209 | |
ciaranom | 0:2e716206ddde | 210 | } |
ciaranom | 0:2e716206ddde | 211 | |
ciaranom | 0:2e716206ddde | 212 | |
ciaranom | 0:2e716206ddde | 213 | |
ciaranom | 0:2e716206ddde | 214 | } |
ciaranom | 0:2e716206ddde | 215 |