Augur rain MASTER

Dependencies:   mbed

Fork of 1A_PROJECT_DIGITAL by Jakkapan Keawsalak

main.cpp

Committer:
gamezajad
Date:
2015-12-08
Revision:
0:ede9cc7e508b

File content as of revision 0:ede9cc7e508b:

#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();


    }
}