#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
#include "DHT.h"
LiquidCrystal_I2C lcd(0x27, 16, 2);
RTC_DS1307 rtc;
DHT dht(27, DHT22);
int x = 0;
int d;
int m;
int y;
int h;
int mi;
int s;
int dnum;
char daysOfTheWeek[7][5] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
int pump = 2 ;
int fan = 4;
int lamp = 5;
int set = 14;
int up = 12;
int down = 13;
int st = 0;
////////////////////set start
int h1 = 0;
int m1 = 0;
int s1 = 0;
////////////////////set stop
int h2 = 0;
int m2 = 0;
int s2 = 0;
void setup() {
pinMode(pump, OUTPUT);
pinMode(fan, OUTPUT);
pinMode(lamp, OUTPUT);
pinMode(set, INPUT_PULLUP);
pinMode(up, INPUT_PULLUP);
pinMode(down, INPUT_PULLUP);
Serial.begin(115200);
rtc.begin();
lcd.init();
lcd.backlight();
///////////////////////// ควบคุมความชื้นและอุณภูมิ
///////////////////////// pump fan lamp
}
void loop() {
int sw1 = digitalRead(set); //sw set เปลี่ยน H>M>S
delay(500);
if (sw1 == 0) { /// hum 70-80 tem 25-38
st++; /// hum<70 pum star 2 stop 1 if >80 pump stop
if (st >= 7) { /// tem>38 fan start 2 stop 1 <25 fan stop
st = 0; /// tem<25 lamp start 2 stop 1 >38 lamp stop
lcd.clear();
}
Serial.println(st);
}
if (st == 0) {
date_time();
//check();
//ht();
///////////ดึงfunction checkด้านล่างสุด มาทำงาน
}
else {
start();
stop();
}
} /// end loop
void date_time() {
DateTime now = rtc.now();
d = now.day();
m = now.month();
y = now.year();
//h = now.hour();
h = 1;
mi = now.minute();
s = now.second();
//dnum = now.dayOfTheWeek();
dnum = 0;
lcd.setCursor(0, 0);
lcd.print(daysOfTheWeek[dnum]);
lcd.setCursor(5, 0);
if (d <= 9) {
lcd.print("0");
}
lcd.print(d);
lcd.setCursor(7, 0);
lcd.print("/");
lcd.setCursor(8, 0);
if (m <= 9) {
lcd.print("0");
}
lcd.print(m);
lcd.setCursor(10, 0);
lcd.print("/");
y = y + 543;
lcd.setCursor(11, 0);
lcd.print(y);
lcd.setCursor(0, 1);
lcd.print("Time ");
lcd.setCursor(5, 1);
if (h <= 9) {
lcd.print("0");
}
lcd.print(h);
lcd.setCursor(7, 1);
lcd.print(":");
lcd.setCursor(8, 1);
if (mi <= 9) {
lcd.print("0");
}
lcd.print(mi);
lcd.setCursor(10, 1);
lcd.print(":");
lcd.setCursor(11, 1);
if (s <= 9) {
lcd.print("0");
}
lcd.print(s);
}
/////////////////////Function start
void start() {
if (st == 1) { /////////////ตั้ง ชั่วโมง
int sw2 = digitalRead(up); //// sw up
delay(100);
if (sw2 == 0) {
h1++;
if (h1 >= 24) {
h1 = 0;
}
}
int sw3 = digitalRead(down); ////sw down
delay(100);
if (sw3 == 0) {
h1--;
if (h1 <= 0) {
h1 = 23;
}
}
lcd.setCursor(5, 0);
lcd.print(" ");
delay(500);
}
if (st == 2) { /////////////ตั้ง นาที
int sw2 = digitalRead(up); ////sw up
delay(100);
if (sw2 == 0) {
m1++;
if (m1 >= 60) {
m1 = 0;
}
}
int sw3 = digitalRead(down); ////sw dw
delay(100);
if (sw3 == 0) {
m1--;
if (m1 <= 0) {
m1 = 59;
}
}
lcd.setCursor(9, 0);
lcd.print(" ");
delay(500);
}
if (st == 3) { /////////////ตั้ง วินาที
int sw2 = digitalRead(up); ////sw up
delay(100);
if (sw2 == 0) {
s1++;
if (s1 >= 60) {
s1 = 0;
}
}
int sw3 = digitalRead(down); ////sw up
delay(100);
if (sw3 == 0) {
s1--;
if (s1 <= 0) {
s1 = 59;
}
lcd.setCursor(12, 0);
lcd.print(" ");
delay(500);
}
}
Serial.println(st);
lcd.setCursor(0, 0);
lcd.print("Start");
///////////////////////Hour
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(14, 0);
lcd.print(" ");
lcd.setCursor(12, 0);
if (s1 <= 9) {
lcd.print("0");
}
lcd.print(s1);
}
//////////////////////////////////////
void stop() {
if (st == 4) { /////////////ตั้ง ชั่วโมง
int sw2 = digitalRead(up); ////sw up สวิทต์อ่านขา9
delay(100);
if (sw2 == 0) {
h2++;
if (h2 >= 24) {
h2 = 0;
}
}
int sw3 = digitalRead(down); ////sw dw อ่านขา 10
delay(100);
if (sw3 == 0) {
h2--;
if (h2 <= 0) {
h2 = 23;
}
}
lcd.setCursor(6, 1);
lcd.print(" ");
delay(500);
}
if (st == 5) { /////////////ตั้ง นาที
int sw2 = digitalRead(9); ////sw up
delay(100);
if (sw2 == 0) {
m2++;
if (m2 >= 60) {
m2 = 0;
}
}
int sw3 = digitalRead(10); ////sw dw
delay(100);
if (sw3 == 0) {
m2--;
if (m2 <= 0) {
m2 = 59;
}
}
lcd.setCursor(9, 1);
lcd.print(" ");
delay(500);
}
if (st == 6) { /////////////ตั้ง วินาที
int sw2 = digitalRead(9); ////sw up
delay(100);
if (sw2 == 0) {
s2++;
if (s2 >= 60) {
s2 = 0;
}
}
int sw3 = digitalRead(10); ////sw dw
delay(100);
if (sw3 == 0) {
s2--;
if (s2 <= 0) {
s2 = 59;
}
}
lcd.setCursor(12, 1);
lcd.print(" ");
delay(500);
}
Serial.println(st);
lcd.setCursor(0, 1);
lcd.print("Stop");
///////////////////////Hour
lcd.setCursor(4, 1);
lcd.print(" ");
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);
lcd.print(" ");
}