#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
#include "DHT.h"
LiquidCrystal_I2C lcd(0x27, 16, 2);
RTC_DS1307 rtc;
DHT dht(8, DHT22);
unsigned long pre1 = 0;
unsigned long pre2 = 0;
unsigned long pre3 = 0;
unsigned long pre4 = 0;
unsigned long time1 = 100;
unsigned long time2 = 100;
unsigned long time3 = 100;
unsigned long time4 = 100;
unsigned long current1 = 0;
unsigned long current2 = 0;
unsigned long current3 = 0;
unsigned long current4 = 0;
int led1 = 1;
int led2 = 1;
int led3 = 1;
int led4 = 1;
////////////////////////////////current time
int h = 0;
int m = 0;
int s = 0;
//////////////////////////////start time
int h1 = 0;
int m1 = 0;
int s1 = 0;
////////////////////////////stop time
int h2 = 0;
int m2 = 0;
int s2 = 0;
//////////////////////////////////temp&Hum
int tmax = 38; ///////temp เกิน 38 พัดลมทำงาน/ หยุด 1 นาทีจนได้25
int tmin = 25; ////////ถ้าต่ำกว่า 25 หลอดไฟติด
int hmax = 80;
int hmin = 70; ///////ต่ำกว่า 70 ปั้มทำงานนาน 2 นาที หยุด 1 นาที อ่าน Humจนถึง 80 ปั้มหยุด
//////จนถึง 80
//////////////////////////////////////////////////
int pump = 13;
int fan = 12;
int lamp = 11;
int hum;
int temp;
void setup() {
//Serial.begin(115200);
rtc.begin();
dht.begin();
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(pump, OUTPUT);
pinMode(fan, OUTPUT);
pinMode(lamp, OUTPUT);
// pinMode(13, OUTPUT);
lcd.init();
lcd.backlight();
} ///////////end ของsetup
int st = 0;
void loop() {
/////////////////////////////////////////////////////////////set h>m>
int sw1 = digitalRead(4);
delay(100);
if (sw1 == 0) {
st++;
if (st >= 7) {
st = 0;
lcd.clear();
}
}
/////////////////////////////////////////////////////////////////
if (st == 0) {
time();
ht();
} else
{
start(); ////////////////เป็นfunction
stop();
}
} ////////end ของloop
//////////////////////////////////////////////////////////////function start
void start() {
///////////////////////////////////////////////////////hour 1
if (st == 1) {
int sw2 = digitalRead(3);
delay(100);
if (sw2 == 0) {
h1++;
if (h1 >= 24) {
h1 = 0;
}
}
int sw3 = digitalRead(5);
delay(100);
if (sw3 == 0) {
h1--;
if (h1 <= 0) {
h1 = 23;
}
}
lcd.setCursor(6, 0);
lcd.print(" ");
lcd.setCursor(7, 0);
lcd.print(" ");
delay(200);
}
/////////////////////////////////////////////////////////////////minute 1
if (st == 2) {
int sw2 = digitalRead(3);
delay(100);
if (sw2 == 0) {
m1++;
if (m1 >= 60) {
m1 = 0;
}
}
int sw3 = digitalRead(5);
delay(100);
if (sw3 == 0) {
m1--;
if (m1 <= 0) {
m1 = 59;
}
}
lcd.setCursor(9, 0);
lcd.print(" ");
lcd.setCursor(10, 0);
lcd.print(" ");
delay(200);
}
////////////////////////////////////////////////////////////////////second 1
if (st == 3) {
int sw2 = digitalRead(3);
delay(100);
if (sw2 == 0) {
s1++;
if (s1 >= 60) {
s1 = 0;
}
}
int sw3 = digitalRead(5);
delay(100);
if (sw3 == 0) {
s1--;
if (s1 <= 0) {
s1 = 59;
}
}
lcd.setCursor(12, 0);
lcd.print(" ");
lcd.setCursor(13, 0);
lcd.print(" ");
delay(200);
}
///////////////////////////////////////////เขียนคำstart นำหน้า ช่วงแสดง
lcd.setCursor(0, 0);
lcd.print("Start");
///////////////////////////////////////////hour บังคับให้มีเลข "0" ตัวหน้า
lcd.setCursor(6, 0);
if (h1 <= 9) {
lcd.print("0");
}
lcd.print(h1);
lcd.setCursor(8, 0);
lcd.print(":");
//////////////////////////////////////////minute
lcd.setCursor(9, 0);
if (m1 <= 9) {
lcd.print("0");
}
lcd.print(m1);
lcd.setCursor(11, 0);
lcd.print(":");
////////////////////////////////////////second
lcd.setCursor(12, 0);
if (s1 <= 9) {
lcd.print("0");
}
lcd.print(s1);
}
///////////////////////////////////////////////////////////funtion stop
void stop() {
if (st == 4) {
int sw2 = digitalRead(3);
delay(100);
if (sw2 == 0) {
h2++;
if (h2 >= 24) {
h2 = 0;
}
}
int sw3 = digitalRead(5);
delay(100);
if (sw3 == 0) {
h2--;
if (h2 >= 0) {
h2 = 23;
}
}
lcd.setCursor(6, 1);
lcd.print(" ");
lcd.setCursor(7, 1);
lcd.print(" ");
delay(200);
}
/////////////////////////////////////////////////////////////////////////
if (st == 5) {
int sw2 = digitalRead(3);
delay(100);
if (sw2 == 0) {
m2++;
if (m2 >= 60) {
m2 = 0;
}
}
int sw3 = digitalRead(5);
delay(100);
if (sw3 == 0) {
m2--;
if (m2 <= 0) {
m2 = 59;
}
}
lcd.setCursor(9, 1);
lcd.print(" ");
lcd.setCursor(10, 1);
lcd.print(" ");
delay(200);
}
//////////////////////////////////////////////////////////////////////////////
if (st == 6) {
int sw2 = digitalRead(3);
delay(100);
if (sw2 == 0) {
s2++;
if (s2 >= 60) {
s2 = 0;
}
}
int sw3 = digitalRead(5);
delay(100);
if (sw3 == 0) {
s2--;
if (s2 <= 0) {
s2 = 59;
}
}
lcd.setCursor(12, 1);
lcd.print(" ");
lcd.setCursor(13, 1);
lcd.print(" ");
delay(200);
}
///////////////////////////////////////////เขียนคำstopนำหน้า
lcd.setCursor(0, 1);
lcd.print("Stop");
lcd.setCursor(4, 1); ////////clear
lcd.print(" ");
///////////////////////////////////////////hour
lcd.setCursor(6, 1);
if (h2 <= 9) {
lcd.print("0");
}
lcd.print(h2);
lcd.setCursor(8, 1);
lcd.print(":");
//////////////////////////////////////////minute
lcd.setCursor(9, 1);
if (m2 <= 9) {
lcd.print("0");
}
lcd.print(m2);
lcd.setCursor(11, 1);
lcd.print(":");
////////////////////////////////////////second
lcd.setCursor(12, 1);
if (s2 <= 9) {
lcd.print("0");
}
lcd.print(s2);
lcd.setCursor(14, 1); ////////clear
lcd.print(" ");
}
//////////////////////////////////////////////////////////function time
void time() {
DateTime now = rtc.now();
h = now.hour();
m = now.minute();
s = now.second();
lcd.setCursor(0, 0);
lcd.print("Time");
/////////////////////////////////////////////////hour
lcd.setCursor(6, 0);
if (h <= 9) {
lcd.print("0");
}
lcd.print(h);
lcd.setCursor(8, 0);
lcd.print(":");
//////////////////////////////////////////minute
lcd.setCursor(9, 0);
if (m <= 9) {
lcd.print("0");
}
lcd.print(m);
lcd.setCursor(11, 0);
lcd.print(":");
////////////////////////////////////////second
lcd.setCursor(12, 0);
if (s <= 9) {
lcd.print("0");
}
lcd.print(s);
}
///////////////////////////////////////////////function dht22
void ht() {
int hum = dht.readHumidity(); ////hum
int temp = dht.readTemperature(); ////temp
lcd.setCursor(0, 1);
lcd.print("Hum");
lcd.setCursor(3, 1);
lcd.print(" ");
lcd.setCursor(4, 1);
lcd.print(hum);
lcd.setCursor(7, 1);
lcd.print("%");
lcd.setCursor(8, 1);
lcd.print("Temp");
lcd.setCursor(12, 1); //////clear lcd
lcd.print(" ");
lcd.setCursor(13, 1);
lcd.print(temp);
////////////////////////////////////////////////read DHT22
if (hum < 70) {
current1 = millis();
if (current1 - pre1 >= time1) { ////เวลาปัจจุบัน - เวลาเริ่มต้น =เวลาที่ต้องการ
//Serial.println(pre1);
pre1 = current1;
if (led1 == LOW) {
led1 = HIGH;
} else {
led1 = LOW;
}
digitalWrite(13, led1);
if (led1 == HIGH){
time1 = time1 + 120000;
}else {
time1 = time1 + 60000;
}
}
else if (hum >= 80) {
digitalWrite(pump, LOW);
}
}
///////////////////////////////////////////////////////////////temp>38
if (temp > 38) {
current2 = millis();
if (current2 - pre2 >= time2) {
// Serial.println(pre2);
pre2 = current2;
if (led2 == LOW) {
led2 = HIGH;
} else {
led2 = LOW;
}
digitalWrite(12, led2);
}
digitalWrite(fan, HIGH);
}
else if (temp <= 25) {
digitalWrite(fan, LOW);
}
if (temp < 25) {
digitalWrite(lamp, HIGH);
} else {
digitalWrite(lamp, LOW);
}
} /////////////end void ht