Augur rain MASTER

Dependencies:   mbed

Fork of 1A_PROJECT_DIGITAL by Jakkapan Keawsalak

Revision:
0:ede9cc7e508b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Dec 08 19:25:47 2015 +0000
@@ -0,0 +1,219 @@
+#include "mbed.h"
+#include "DHT22.h"
+#include "DS1307.h"
+#include "DigitDisplay.h"
+
+//+ADDR:98d3:31:504589
+DS1307 rtc(I2C_SDA,I2C_SCL);
+Serial Master_to_Slave(PA_11,PA_12 );
+DigitDisplay display(D7,D8);
+AnalogIn  lightsensor(A3);
+Ticker flipper;
+
+DigitalOut LEDOUT1(D2);
+DigitalOut LEDOUT2(D3);
+DigitalOut LEDOUT3(D4);
+DigitalOut LEDOUT4(D5);
+DigitalOut buzzer(D6);
+DHT22 hum_temp(D9);
+
+void Sunny();
+void DHT22();
+void lightLDR();
+void realtime();
+void Augur_Rain();
+void Senddata();
+void printf_data();
+
+int test_hum=3,test_light = 3500;
+int rain_hum_bf=0,rain_hum_af=0,Sum=0,rain_drop=0,Send_light=0;
+float Analog,temp,hum;
+float Max_temp,Max_hum,Max_light;
+int sec=00,mins=8,hour=23,day=01,date=8,month=12,year=15,done=0;
+int sec_new,mins_new,hour_new,day_new,date_new,month_new,year_new;
+
+void Sunny()
+{
+    DHT22();//วัดอุหภูมินในอากาศกับความชื้น
+    lightLDR();//ค่าแสงที่ได
+    Augur_Rain();//พยากรณ์ฝน
+    printf_data();//ออกมาทาง PC
+    LEDOUT4=1;
+    //printf("%d\n",hour_new);
+    if(hour_new >= 6 && hour_new <= 18 ) {
+        LEDOUT2=1;
+        LEDOUT3=0; //สถานะของ LED
+
+        //DHT22();//วัดอุหภูมินในอากาศกับความชื้น
+        //lightLDR();//ค่าแสงที่ได
+        //Augur_Rain();//พยากรณ์ฝน
+        //printf_data();//ออกมาทาง PC
+        //Senddata();
+
+
+
+
+    } else {
+
+        //printf("Sleeping guy \n");
+        LEDOUT3=1;
+        LEDOUT2=0;
+    }
+
+
+}
+
+void  DHT22()
+{
+
+    if(hum_temp.readData() == DHT_ERROR_NONE) done=1;
+    {
+        temp = hum_temp.getTemperatureC();
+        hum = hum_temp.getHumidity();
+
+
+    }
+
+    if(temp > Max_temp) {
+        Max_temp=temp;
+    }
+    if(hum > Max_hum) {
+        Max_hum=hum;
+    }
+    if(hour_new > 18) {
+        Max_temp=0;
+        Max_hum=0;
+    }
+
+}
+void lightLDR()
+{
+    Analog=lightsensor.read();
+    Analog=Analog*5000;
+
+    if(Analog < 700 ) {
+        Send_light=1;  //มีแสงง
+    } else {
+        Send_light=0;//ไม่มีแสงหรือมีแสงน้อย
+    }
+
+
+    if(Analog > Max_light) {
+        Max_light=Analog;
+    }
+    if(hour_new > 17) {
+        Max_light=0;
+    }
+
+
+
+}
+void Augur_Rain()
+{
+
+    if(mins_new == 5) {
+        rain_hum_af=hum;
+        //rain_hum_af=78;
+    }
+    if(mins_new == 10) {
+        rain_hum_bf=hum;
+    }
+    if(mins_new == 15) {
+        rain_hum_af=hum;
+    }
+    if(mins_new == 20) {
+        rain_hum_bf=hum;
+    }
+    if(mins_new == 25) {
+        rain_hum_af=hum;
+    }
+    if(mins_new == 30) {
+        rain_hum_bf=hum;
+    }
+    if(mins_new == 35) {
+        rain_hum_af=hum;
+    }
+    if(mins_new == 40) {
+        rain_hum_bf=hum;
+    }
+    if(mins_new == 45) {
+        rain_hum_af=hum;
+    }
+    if(mins_new == 50) {
+        rain_hum_bf=hum;
+    }
+    if(mins_new == 55) {
+        rain_hum_af=hum;
+    }
+    if(mins_new == 0) {
+        rain_hum_bf=hum;
+        rain_hum_af=0;
+        //rain_hum_bf=75;
+
+    }
+
+    Sum=rain_hum_bf - rain_hum_af;//ค่าที่ได้ออกมาถ้าห่างกัน2-3ผมอาจจะตกตามที่วัดจากของจิง
+
+    //test_hum=3,test_light = 3500;
+    //Sum=test_hum;
+    //Analog=test_light;
+
+    if(((Sum >=-5 && Sum <= -3) || (Sum >= 3  && Sum <= 5)) &&  (Analog > 1500 && Analog <= 5000) ) {
+        rain_drop=1;//อีกประมาณ5-30นาทีฝนตก
+        LEDOUT1=1;
+    } else {
+        rain_drop=0;//ฝนไม่ตก
+        LEDOUT1=0;
+    }
+    if(hour_new > 18) { 
+        //Sum=0;
+    }
+}
+void Senddata()
+{
+
+    Master_to_Slave.printf("%.2d%.2d%.1f%.1f%.1d%.1d\n",hour_new,mins_new,temp,hum,Send_light,rain_drop);
+
+}
+void printf_data()
+{
+    printf("time            :: %d:%d  \n",hour_new,mins_new);
+    printf("Temperature     :: %f C \n",temp);
+    printf("Humidity        :: %f g/m3\n",hum);
+    printf("Light  by LDR   :: %f\n",Analog);
+    //printf("Max_Temperature :: %f C \n",Max_temp);
+    // printf("Max_Humidity    :: %f g/m3\n",Max_hum);
+    // printf("Max_Light       :: %f\n",Max_light);
+    printf("light           :: %d \n",Send_light);
+    printf("Sum             :: %d \n",Sum);
+    printf("Rain_drop       :: %d \n",rain_drop);
+    printf("Sendata M TO SL :: %.2d%.2d%.1f%.1f%.1d%.1d\n\n",hour_new,mins_new,temp,hum,Send_light,rain_drop);
+}
+void realtime()
+{
+    rtc.gettime(&sec_new,&mins_new,&hour_new,&day_new,&date_new,&month_new,&year_new);
+    rtc.displays();
+
+}
+void flip()
+{
+    //if(hour_new >= 6 && hour_new <= 18 )
+    //{Senddata();}
+    Senddata();
+}
+
+int main()
+{
+
+    rtc.settime(sec,mins,hour,day,date,month,year);
+    flipper.attach(&flip, 10.0);
+
+    while(1) {
+
+
+        realtime();
+        Sunny();
+
+
+    }
+}