#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
#include "DHT.h"
LiquidCrystal_I2C lcd(0x27, 16, 2);
RTC_DS1307 rtc;
DHT dht(8, DHT22);
////////////////////////////////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;
void setup() {
//Serial.begin(115200);
rtc.begin();
dht.begin();
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(13, OUTPUT);
lcd.init();
lcd.backlight();
} //end ของsetup
int st = 0;
void loop() {
//DateTime now = rtc.now();
/////////////////////////////////////////////////////////////set h>m>
int sw1 = digitalRead(4);
delay(100);
if (sw1 == 0) {
st++;
if (st >= 7) {
st = 0;
lcd.clear();
}
}
/////////////////////////////////////////////////////////////////
if (st == 0) {
time();
} else
{
start(); ////////////////เป็นfunction
stop();
}
if (h == h1) { /////////////////ตั้งเวลาstart
if (m == m1) {
digitalWrite(13, HIGH);
}
}
if (h == h2) { ///////////////ตั้งเวลาstop
if (m == m2) {
digitalWrite(13, LOW);
}
}
pinMode(13, HIGH);
delay(200);
pinMode(13, LOW);
delay(200);
////////////////////////////////////////////////read DHT22
dht22();
} //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 >= 24) {
h1 = 0;
}
}
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 >= 60) {
m1 = 0;
}
}
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 >= 60) {
s1 = 0;
}
}
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 >= 24) {
h2 = 0;
}
}
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 >= 60) {
m2 = 0;
}
}
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 >= 60) {
s2 = 0;
}
}
lcd.setCursor(12, 1);
lcd.print(" ");
lcd.setCursor(13, 1);
lcd.print(" ");
delay(200);
}
///////////////////////////////////////////เขียนคำstopนำหน้า
lcd.setCursor(0, 1);
lcd.print("Stop");
///////////////////////////////////////////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);
}
//////////////////////////////////////////////////////////////////////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 dht22(){
int hum = dht.readHumidity();
int temp = dht.readTemperature();
lcd.setCursor(0, 1);
lcd.print("Hum");
lcd.setCursor(7, 1);
lcd.print("%");
lcd.setCursor(4, 1);
lcd.print(hum);
lcd.setCursor(8, 1);
lcd.print("Temp");
lcd.setCursor(15, 1);
lcd.print("C");
lcd.setCursor(13, 1);
lcd.print(temp);
}