
Augur rain MASTER
Dependencies: mbed
Fork of 1A_PROJECT_DIGITAL by
main.cpp@0:ede9cc7e508b, 2015-12-08 (annotated)
- Committer:
- gamezajad
- Date:
- Tue Dec 08 19:25:47 2015 +0000
- Revision:
- 0:ede9cc7e508b
1A
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gamezajad | 0:ede9cc7e508b | 1 | #include "mbed.h" |
gamezajad | 0:ede9cc7e508b | 2 | #include "DHT22.h" |
gamezajad | 0:ede9cc7e508b | 3 | #include "DS1307.h" |
gamezajad | 0:ede9cc7e508b | 4 | #include "DigitDisplay.h" |
gamezajad | 0:ede9cc7e508b | 5 | |
gamezajad | 0:ede9cc7e508b | 6 | //+ADDR:98d3:31:504589 |
gamezajad | 0:ede9cc7e508b | 7 | DS1307 rtc(I2C_SDA,I2C_SCL); |
gamezajad | 0:ede9cc7e508b | 8 | Serial Master_to_Slave(PA_11,PA_12 ); |
gamezajad | 0:ede9cc7e508b | 9 | DigitDisplay display(D7,D8); |
gamezajad | 0:ede9cc7e508b | 10 | AnalogIn lightsensor(A3); |
gamezajad | 0:ede9cc7e508b | 11 | Ticker flipper; |
gamezajad | 0:ede9cc7e508b | 12 | |
gamezajad | 0:ede9cc7e508b | 13 | DigitalOut LEDOUT1(D2); |
gamezajad | 0:ede9cc7e508b | 14 | DigitalOut LEDOUT2(D3); |
gamezajad | 0:ede9cc7e508b | 15 | DigitalOut LEDOUT3(D4); |
gamezajad | 0:ede9cc7e508b | 16 | DigitalOut LEDOUT4(D5); |
gamezajad | 0:ede9cc7e508b | 17 | DigitalOut buzzer(D6); |
gamezajad | 0:ede9cc7e508b | 18 | DHT22 hum_temp(D9); |
gamezajad | 0:ede9cc7e508b | 19 | |
gamezajad | 0:ede9cc7e508b | 20 | void Sunny(); |
gamezajad | 0:ede9cc7e508b | 21 | void DHT22(); |
gamezajad | 0:ede9cc7e508b | 22 | void lightLDR(); |
gamezajad | 0:ede9cc7e508b | 23 | void realtime(); |
gamezajad | 0:ede9cc7e508b | 24 | void Augur_Rain(); |
gamezajad | 0:ede9cc7e508b | 25 | void Senddata(); |
gamezajad | 0:ede9cc7e508b | 26 | void printf_data(); |
gamezajad | 0:ede9cc7e508b | 27 | |
gamezajad | 0:ede9cc7e508b | 28 | int test_hum=3,test_light = 3500; |
gamezajad | 0:ede9cc7e508b | 29 | int rain_hum_bf=0,rain_hum_af=0,Sum=0,rain_drop=0,Send_light=0; |
gamezajad | 0:ede9cc7e508b | 30 | float Analog,temp,hum; |
gamezajad | 0:ede9cc7e508b | 31 | float Max_temp,Max_hum,Max_light; |
gamezajad | 0:ede9cc7e508b | 32 | int sec=00,mins=8,hour=23,day=01,date=8,month=12,year=15,done=0; |
gamezajad | 0:ede9cc7e508b | 33 | int sec_new,mins_new,hour_new,day_new,date_new,month_new,year_new; |
gamezajad | 0:ede9cc7e508b | 34 | |
gamezajad | 0:ede9cc7e508b | 35 | void Sunny() |
gamezajad | 0:ede9cc7e508b | 36 | { |
gamezajad | 0:ede9cc7e508b | 37 | DHT22();//วัดอุหภูมินในอากาศกับความชื้น |
gamezajad | 0:ede9cc7e508b | 38 | lightLDR();//ค่าแสงที่ได |
gamezajad | 0:ede9cc7e508b | 39 | Augur_Rain();//พยากรณ์ฝน |
gamezajad | 0:ede9cc7e508b | 40 | printf_data();//ออกมาทาง PC |
gamezajad | 0:ede9cc7e508b | 41 | LEDOUT4=1; |
gamezajad | 0:ede9cc7e508b | 42 | //printf("%d\n",hour_new); |
gamezajad | 0:ede9cc7e508b | 43 | if(hour_new >= 6 && hour_new <= 18 ) { |
gamezajad | 0:ede9cc7e508b | 44 | LEDOUT2=1; |
gamezajad | 0:ede9cc7e508b | 45 | LEDOUT3=0; //สถานะของ LED |
gamezajad | 0:ede9cc7e508b | 46 | |
gamezajad | 0:ede9cc7e508b | 47 | //DHT22();//วัดอุหภูมินในอากาศกับความชื้น |
gamezajad | 0:ede9cc7e508b | 48 | //lightLDR();//ค่าแสงที่ได |
gamezajad | 0:ede9cc7e508b | 49 | //Augur_Rain();//พยากรณ์ฝน |
gamezajad | 0:ede9cc7e508b | 50 | //printf_data();//ออกมาทาง PC |
gamezajad | 0:ede9cc7e508b | 51 | //Senddata(); |
gamezajad | 0:ede9cc7e508b | 52 | |
gamezajad | 0:ede9cc7e508b | 53 | |
gamezajad | 0:ede9cc7e508b | 54 | |
gamezajad | 0:ede9cc7e508b | 55 | |
gamezajad | 0:ede9cc7e508b | 56 | } else { |
gamezajad | 0:ede9cc7e508b | 57 | |
gamezajad | 0:ede9cc7e508b | 58 | //printf("Sleeping guy \n"); |
gamezajad | 0:ede9cc7e508b | 59 | LEDOUT3=1; |
gamezajad | 0:ede9cc7e508b | 60 | LEDOUT2=0; |
gamezajad | 0:ede9cc7e508b | 61 | } |
gamezajad | 0:ede9cc7e508b | 62 | |
gamezajad | 0:ede9cc7e508b | 63 | |
gamezajad | 0:ede9cc7e508b | 64 | } |
gamezajad | 0:ede9cc7e508b | 65 | |
gamezajad | 0:ede9cc7e508b | 66 | void DHT22() |
gamezajad | 0:ede9cc7e508b | 67 | { |
gamezajad | 0:ede9cc7e508b | 68 | |
gamezajad | 0:ede9cc7e508b | 69 | if(hum_temp.readData() == DHT_ERROR_NONE) done=1; |
gamezajad | 0:ede9cc7e508b | 70 | { |
gamezajad | 0:ede9cc7e508b | 71 | temp = hum_temp.getTemperatureC(); |
gamezajad | 0:ede9cc7e508b | 72 | hum = hum_temp.getHumidity(); |
gamezajad | 0:ede9cc7e508b | 73 | |
gamezajad | 0:ede9cc7e508b | 74 | |
gamezajad | 0:ede9cc7e508b | 75 | } |
gamezajad | 0:ede9cc7e508b | 76 | |
gamezajad | 0:ede9cc7e508b | 77 | if(temp > Max_temp) { |
gamezajad | 0:ede9cc7e508b | 78 | Max_temp=temp; |
gamezajad | 0:ede9cc7e508b | 79 | } |
gamezajad | 0:ede9cc7e508b | 80 | if(hum > Max_hum) { |
gamezajad | 0:ede9cc7e508b | 81 | Max_hum=hum; |
gamezajad | 0:ede9cc7e508b | 82 | } |
gamezajad | 0:ede9cc7e508b | 83 | if(hour_new > 18) { |
gamezajad | 0:ede9cc7e508b | 84 | Max_temp=0; |
gamezajad | 0:ede9cc7e508b | 85 | Max_hum=0; |
gamezajad | 0:ede9cc7e508b | 86 | } |
gamezajad | 0:ede9cc7e508b | 87 | |
gamezajad | 0:ede9cc7e508b | 88 | } |
gamezajad | 0:ede9cc7e508b | 89 | void lightLDR() |
gamezajad | 0:ede9cc7e508b | 90 | { |
gamezajad | 0:ede9cc7e508b | 91 | Analog=lightsensor.read(); |
gamezajad | 0:ede9cc7e508b | 92 | Analog=Analog*5000; |
gamezajad | 0:ede9cc7e508b | 93 | |
gamezajad | 0:ede9cc7e508b | 94 | if(Analog < 700 ) { |
gamezajad | 0:ede9cc7e508b | 95 | Send_light=1; //มีแสงง |
gamezajad | 0:ede9cc7e508b | 96 | } else { |
gamezajad | 0:ede9cc7e508b | 97 | Send_light=0;//ไม่มีแสงหรือมีแสงน้อย |
gamezajad | 0:ede9cc7e508b | 98 | } |
gamezajad | 0:ede9cc7e508b | 99 | |
gamezajad | 0:ede9cc7e508b | 100 | |
gamezajad | 0:ede9cc7e508b | 101 | if(Analog > Max_light) { |
gamezajad | 0:ede9cc7e508b | 102 | Max_light=Analog; |
gamezajad | 0:ede9cc7e508b | 103 | } |
gamezajad | 0:ede9cc7e508b | 104 | if(hour_new > 17) { |
gamezajad | 0:ede9cc7e508b | 105 | Max_light=0; |
gamezajad | 0:ede9cc7e508b | 106 | } |
gamezajad | 0:ede9cc7e508b | 107 | |
gamezajad | 0:ede9cc7e508b | 108 | |
gamezajad | 0:ede9cc7e508b | 109 | |
gamezajad | 0:ede9cc7e508b | 110 | } |
gamezajad | 0:ede9cc7e508b | 111 | void Augur_Rain() |
gamezajad | 0:ede9cc7e508b | 112 | { |
gamezajad | 0:ede9cc7e508b | 113 | |
gamezajad | 0:ede9cc7e508b | 114 | if(mins_new == 5) { |
gamezajad | 0:ede9cc7e508b | 115 | rain_hum_af=hum; |
gamezajad | 0:ede9cc7e508b | 116 | //rain_hum_af=78; |
gamezajad | 0:ede9cc7e508b | 117 | } |
gamezajad | 0:ede9cc7e508b | 118 | if(mins_new == 10) { |
gamezajad | 0:ede9cc7e508b | 119 | rain_hum_bf=hum; |
gamezajad | 0:ede9cc7e508b | 120 | } |
gamezajad | 0:ede9cc7e508b | 121 | if(mins_new == 15) { |
gamezajad | 0:ede9cc7e508b | 122 | rain_hum_af=hum; |
gamezajad | 0:ede9cc7e508b | 123 | } |
gamezajad | 0:ede9cc7e508b | 124 | if(mins_new == 20) { |
gamezajad | 0:ede9cc7e508b | 125 | rain_hum_bf=hum; |
gamezajad | 0:ede9cc7e508b | 126 | } |
gamezajad | 0:ede9cc7e508b | 127 | if(mins_new == 25) { |
gamezajad | 0:ede9cc7e508b | 128 | rain_hum_af=hum; |
gamezajad | 0:ede9cc7e508b | 129 | } |
gamezajad | 0:ede9cc7e508b | 130 | if(mins_new == 30) { |
gamezajad | 0:ede9cc7e508b | 131 | rain_hum_bf=hum; |
gamezajad | 0:ede9cc7e508b | 132 | } |
gamezajad | 0:ede9cc7e508b | 133 | if(mins_new == 35) { |
gamezajad | 0:ede9cc7e508b | 134 | rain_hum_af=hum; |
gamezajad | 0:ede9cc7e508b | 135 | } |
gamezajad | 0:ede9cc7e508b | 136 | if(mins_new == 40) { |
gamezajad | 0:ede9cc7e508b | 137 | rain_hum_bf=hum; |
gamezajad | 0:ede9cc7e508b | 138 | } |
gamezajad | 0:ede9cc7e508b | 139 | if(mins_new == 45) { |
gamezajad | 0:ede9cc7e508b | 140 | rain_hum_af=hum; |
gamezajad | 0:ede9cc7e508b | 141 | } |
gamezajad | 0:ede9cc7e508b | 142 | if(mins_new == 50) { |
gamezajad | 0:ede9cc7e508b | 143 | rain_hum_bf=hum; |
gamezajad | 0:ede9cc7e508b | 144 | } |
gamezajad | 0:ede9cc7e508b | 145 | if(mins_new == 55) { |
gamezajad | 0:ede9cc7e508b | 146 | rain_hum_af=hum; |
gamezajad | 0:ede9cc7e508b | 147 | } |
gamezajad | 0:ede9cc7e508b | 148 | if(mins_new == 0) { |
gamezajad | 0:ede9cc7e508b | 149 | rain_hum_bf=hum; |
gamezajad | 0:ede9cc7e508b | 150 | rain_hum_af=0; |
gamezajad | 0:ede9cc7e508b | 151 | //rain_hum_bf=75; |
gamezajad | 0:ede9cc7e508b | 152 | |
gamezajad | 0:ede9cc7e508b | 153 | } |
gamezajad | 0:ede9cc7e508b | 154 | |
gamezajad | 0:ede9cc7e508b | 155 | Sum=rain_hum_bf - rain_hum_af;//ค่าที่ได้ออกมาถ้าห่างกัน2-3ผมอาจจะตกตามที่วัดจากของจิง |
gamezajad | 0:ede9cc7e508b | 156 | |
gamezajad | 0:ede9cc7e508b | 157 | //test_hum=3,test_light = 3500; |
gamezajad | 0:ede9cc7e508b | 158 | //Sum=test_hum; |
gamezajad | 0:ede9cc7e508b | 159 | //Analog=test_light; |
gamezajad | 0:ede9cc7e508b | 160 | |
gamezajad | 0:ede9cc7e508b | 161 | if(((Sum >=-5 && Sum <= -3) || (Sum >= 3 && Sum <= 5)) && (Analog > 1500 && Analog <= 5000) ) { |
gamezajad | 0:ede9cc7e508b | 162 | rain_drop=1;//อีกประมาณ5-30นาทีฝนตก |
gamezajad | 0:ede9cc7e508b | 163 | LEDOUT1=1; |
gamezajad | 0:ede9cc7e508b | 164 | } else { |
gamezajad | 0:ede9cc7e508b | 165 | rain_drop=0;//ฝนไม่ตก |
gamezajad | 0:ede9cc7e508b | 166 | LEDOUT1=0; |
gamezajad | 0:ede9cc7e508b | 167 | } |
gamezajad | 0:ede9cc7e508b | 168 | if(hour_new > 18) { |
gamezajad | 0:ede9cc7e508b | 169 | //Sum=0; |
gamezajad | 0:ede9cc7e508b | 170 | } |
gamezajad | 0:ede9cc7e508b | 171 | } |
gamezajad | 0:ede9cc7e508b | 172 | void Senddata() |
gamezajad | 0:ede9cc7e508b | 173 | { |
gamezajad | 0:ede9cc7e508b | 174 | |
gamezajad | 0:ede9cc7e508b | 175 | Master_to_Slave.printf("%.2d%.2d%.1f%.1f%.1d%.1d\n",hour_new,mins_new,temp,hum,Send_light,rain_drop); |
gamezajad | 0:ede9cc7e508b | 176 | |
gamezajad | 0:ede9cc7e508b | 177 | } |
gamezajad | 0:ede9cc7e508b | 178 | void printf_data() |
gamezajad | 0:ede9cc7e508b | 179 | { |
gamezajad | 0:ede9cc7e508b | 180 | printf("time :: %d:%d \n",hour_new,mins_new); |
gamezajad | 0:ede9cc7e508b | 181 | printf("Temperature :: %f C \n",temp); |
gamezajad | 0:ede9cc7e508b | 182 | printf("Humidity :: %f g/m3\n",hum); |
gamezajad | 0:ede9cc7e508b | 183 | printf("Light by LDR :: %f\n",Analog); |
gamezajad | 0:ede9cc7e508b | 184 | //printf("Max_Temperature :: %f C \n",Max_temp); |
gamezajad | 0:ede9cc7e508b | 185 | // printf("Max_Humidity :: %f g/m3\n",Max_hum); |
gamezajad | 0:ede9cc7e508b | 186 | // printf("Max_Light :: %f\n",Max_light); |
gamezajad | 0:ede9cc7e508b | 187 | printf("light :: %d \n",Send_light); |
gamezajad | 0:ede9cc7e508b | 188 | printf("Sum :: %d \n",Sum); |
gamezajad | 0:ede9cc7e508b | 189 | printf("Rain_drop :: %d \n",rain_drop); |
gamezajad | 0:ede9cc7e508b | 190 | printf("Sendata M TO SL :: %.2d%.2d%.1f%.1f%.1d%.1d\n\n",hour_new,mins_new,temp,hum,Send_light,rain_drop); |
gamezajad | 0:ede9cc7e508b | 191 | } |
gamezajad | 0:ede9cc7e508b | 192 | void realtime() |
gamezajad | 0:ede9cc7e508b | 193 | { |
gamezajad | 0:ede9cc7e508b | 194 | rtc.gettime(&sec_new,&mins_new,&hour_new,&day_new,&date_new,&month_new,&year_new); |
gamezajad | 0:ede9cc7e508b | 195 | rtc.displays(); |
gamezajad | 0:ede9cc7e508b | 196 | |
gamezajad | 0:ede9cc7e508b | 197 | } |
gamezajad | 0:ede9cc7e508b | 198 | void flip() |
gamezajad | 0:ede9cc7e508b | 199 | { |
gamezajad | 0:ede9cc7e508b | 200 | //if(hour_new >= 6 && hour_new <= 18 ) |
gamezajad | 0:ede9cc7e508b | 201 | //{Senddata();} |
gamezajad | 0:ede9cc7e508b | 202 | Senddata(); |
gamezajad | 0:ede9cc7e508b | 203 | } |
gamezajad | 0:ede9cc7e508b | 204 | |
gamezajad | 0:ede9cc7e508b | 205 | int main() |
gamezajad | 0:ede9cc7e508b | 206 | { |
gamezajad | 0:ede9cc7e508b | 207 | |
gamezajad | 0:ede9cc7e508b | 208 | rtc.settime(sec,mins,hour,day,date,month,year); |
gamezajad | 0:ede9cc7e508b | 209 | flipper.attach(&flip, 10.0); |
gamezajad | 0:ede9cc7e508b | 210 | |
gamezajad | 0:ede9cc7e508b | 211 | while(1) { |
gamezajad | 0:ede9cc7e508b | 212 | |
gamezajad | 0:ede9cc7e508b | 213 | |
gamezajad | 0:ede9cc7e508b | 214 | realtime(); |
gamezajad | 0:ede9cc7e508b | 215 | Sunny(); |
gamezajad | 0:ede9cc7e508b | 216 | |
gamezajad | 0:ede9cc7e508b | 217 | |
gamezajad | 0:ede9cc7e508b | 218 | } |
gamezajad | 0:ede9cc7e508b | 219 | } |