Augur rain MASTER

Dependencies:   mbed

Fork of 1A_PROJECT_DIGITAL by Jakkapan Keawsalak

Committer:
gamezajad
Date:
Tue Dec 08 19:25:47 2015 +0000
Revision:
0:ede9cc7e508b
1A

Who changed what in which revision?

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