#include "RTClib.h"
#define time_delay 120
int DIP1 = 2;
int DIP2 = 3;
int DIP3 = 4;
int DIP4 = 5;
int DIP5 = 6;
int DIP6 = 7;
int start = 13;
int sg_pin = A3;
RTC_DS1307 rtc;
int hh, mm, ss, hh1 , mm1 , ss1 , hh2 , mm2 , ss2 , hh3 , mm3 , ss3 ;
// เริ่มใช้เวลาช่วงเย็น hh1 : mm1 : ss1 ---> hh2 , mm2 , ss2
void setup() {
Serial.begin(9600);
pinMode(DIP1, INPUT_PULLUP);
pinMode(DIP2, INPUT_PULLUP);
pinMode(DIP3, INPUT_PULLUP);
pinMode(DIP4, INPUT_PULLUP);
pinMode(DIP5, INPUT_PULLUP);
pinMode(DIP6, INPUT_PULLUP);
pinMode (start,OUTPUT);
pinMode (sg_pin,INPUT);
hh1 = 5 ; // =ช่วงเช้า
mm1 = 0 ; // =ช่วงเช้า
ss1 = 0 ; // =ช่วงเช้า
hh2 = 21 ; // =ช่วงกลางคืนถึงเที่ยงคืน
mm2 = 0 ; // =ช่วงกลางคืนถึงเที่ยงคืน
ss2 = 0 ; // =ช่วงกลางคืนถึงเที่ยงคืน
hh3 = 0 ; // = ช่วงเวลาหลังเที่ยงคืน
mm3 = 0 ; // = ช่วงเวลาหลังเที่ยงคืน
ss3 = 0 ; // = ช่วงเวลาหลังเที่ยงคืน
// เวลาเช้า 5:00:00 - 20:59:59
//เวลากลางคืน 21:00:00-04:59:59
}
void loop()
{ DateTime now = rtc.now();
hh = now.hour();
mm = now.minute();
ss = now.second();
int sg = analogRead(sg_pin);
if(hh >= hh1 && hh < hh2){ //เช็คเื่อนไขเวลาช่วงเช้า
if (digitalRead(DIP1)==HIGH //program1 start 30 stop 5
&& digitalRead(DIP2)==LOW
&& digitalRead(DIP3)==LOW
&& analogRead(sg_pin)>1015
)
{digitalWrite(start,HIGH);
Serial.println("Program 1 START");
delay(1800000UL);
digitalWrite(start, LOW);
Serial.println("Program 1 STOP");
delay(1800000UL);
return;
}
if (digitalRead(DIP1)==LOW //program2 start 30 stop 10
&& digitalRead(DIP2)==HIGH
&& digitalRead(DIP3)==LOW
&& analogRead(sg_pin)>1015
)
{digitalWrite(start,HIGH);
Serial.println("Program 2 START");
delay(1800000UL);
digitalWrite(start, LOW);
Serial.println("Program 2 STOP");
delay(600000UL);
return;
}
if (digitalRead(DIP1)==LOW //program3 start 40 stop 5
&& digitalRead(DIP2)==LOW
&& digitalRead(DIP3)==HIGH
&& analogRead(sg_pin)>1015
)
{digitalWrite(start,HIGH);
Serial.println("Program 3 START");
delay(2400000UL);
digitalWrite(start, LOW);
Serial.println("Program 3 STOP");
delay(300000UL);
return;
}
if (digitalRead(DIP1)==HIGH //program4 start 40 stop 10
&& digitalRead(DIP2)==HIGH
&& digitalRead(DIP3)==HIGH
&& analogRead(sg_pin)>1015
)
{digitalWrite(start,HIGH);
Serial.println("Program 4 START");
delay(2400000UL);
digitalWrite(start, LOW);
Serial.println("Program 4 STOP");
delay(600000UL);
return;
}
if (digitalRead(DIP1)==LOW //program5 start 50 stop 5
&& digitalRead(DIP2)==HIGH
&& digitalRead(DIP3)==HIGH
&& analogRead(sg_pin)>1015
)
{digitalWrite(start,HIGH);
Serial.println("Program 5 START");
delay(3000000UL);
digitalWrite(start, LOW);
Serial.println("Program 5 STOP");
delay(300000UL);
return;
}
if (digitalRead(DIP1)==HIGH //program6 start 50 stop 10
&& digitalRead(DIP2)==LOW
&& digitalRead(DIP3)==HIGH
&& analogRead(sg_pin)>1015
)
{digitalWrite(start,HIGH);
Serial.println("Program 6 START");
delay(3000000UL);
digitalWrite(start, LOW);
Serial.println("Program 6 STOP");
delay(600000UL);
return;
}
if (digitalRead(DIP1)==HIGH //program7 start 60 stop 5
&& digitalRead(DIP2)==HIGH
&& digitalRead(DIP3)==LOW
&& analogRead(sg_pin)>1015
)
{digitalWrite(start,HIGH);
Serial.println("Program 7 START");
delay(3600000UL);
digitalWrite(start, LOW);
Serial.println("Program 7 STOP");
delay(300000UL);
return;
}
if (digitalRead(DIP1)==HIGH //program8 start 60 stop 10
&& digitalRead(DIP2)==HIGH
&& digitalRead(DIP3)==HIGH
&& analogRead(sg_pin)>1015
)
{digitalWrite(start,HIGH);
Serial.println("Program 8 START");
delay(3600000UL);
digitalWrite(start, LOW);
Serial.println("Program 8 STOP");
delay(600000UL);
return;
}
else{digitalWrite(start,LOW);
Serial.println("Program Error");
delay(1000);}
}
if(hh <= hh2 && hh < hh3 || hh >= hh3 && hh < hh1){ //เช็คเื่อนไขเวลาช่วงเย็น
if (digitalRead(DIP1)==HIGH //program1 start 30 stop 5
&& digitalRead(DIP2)==LOW
&& digitalRead(DIP3)==LOW
&& analogRead(sg_pin)>1015
)
{digitalWrite(start,HIGH);
Serial.println("Program 1 START");
delay(1800000UL);
digitalWrite(start, LOW);
Serial.println("Program 1 STOP");
delay(300000UL);
return;
}
if (digitalRead(DIP1)==LOW //program2 start 30 stop 10
&& digitalRead(DIP2)==HIGH
&& digitalRead(DIP3)==LOW
&& analogRead(sg_pin)>1015
)
{digitalWrite(start,HIGH);
Serial.println("Program 2 START");
delay(1800000UL);
digitalWrite(start, LOW);
Serial.println("Program 2 STOP");
delay(600000UL);
return;
}
if (digitalRead(DIP1)==LOW //program3 start 40 stop 5
&& digitalRead(DIP2)==LOW
&& digitalRead(DIP3)==HIGH
&& analogRead(sg_pin)>1015
)
{digitalWrite(start,HIGH);
Serial.println("Program 3 START");
delay(2400000UL);
digitalWrite(start, LOW);
Serial.println("Program 3 STOP");
delay(300000UL);
return;
}
if (digitalRead(DIP1)==HIGH //program4 start 40 stop 10
&& digitalRead(DIP2)==HIGH
&& digitalRead(DIP3)==HIGH
&& analogRead(sg_pin)>1015
)
{digitalWrite(start,HIGH);
Serial.println("Program 4 START");
delay(2400000UL);
digitalWrite(start, LOW);
Serial.println("Program 4 STOP");
delay(600000UL);
return;
}
if (digitalRead(DIP1)==LOW //program5 start 50 stop 5
&& digitalRead(DIP2)==HIGH
&& digitalRead(DIP3)==HIGH
&& analogRead(sg_pin)>1015
)
{digitalWrite(start,HIGH);
Serial.println("Program 5 START");
delay(3000000UL);
digitalWrite(start, LOW);
Serial.println("Program 5 STOP");
delay(300000UL);
return;
}
if (digitalRead(DIP1)==HIGH //program6 start 50 stop 10
&& digitalRead(DIP2)==LOW
&& digitalRead(DIP3)==HIGH
&& analogRead(sg_pin)>1015
)
{digitalWrite(start,HIGH);
Serial.println("Program 6 START");
delay(3000000UL);
digitalWrite(start, LOW);
Serial.println("Program 6 STOP");
delay(600000UL);
return;
}
if (digitalRead(DIP1)==HIGH //program7 start 60 stop 5
&& digitalRead(DIP2)==HIGH
&& digitalRead(DIP3)==LOW
&& analogRead(sg_pin)>1015
)
{digitalWrite(start,HIGH);
Serial.println("Program 7 START");
delay(3600000UL);
digitalWrite(start, LOW);
Serial.println("Program 7 STOP");
delay(300000UL);
return;
}
if (digitalRead(DIP1)==HIGH //program8 start 60 stop 10
&& digitalRead(DIP2)==HIGH
&& digitalRead(DIP3)==HIGH
&& analogRead(sg_pin)>1015
)
{digitalWrite(start,HIGH);
Serial.println("Program 8 START");
delay(3600000UL);
digitalWrite(start, LOW);
Serial.println("Program 8 STOP");
delay(600000UL);
return;
}
else{digitalWrite(start,LOW);
Serial.println("Program Error");
delay(1000);}
}
}