// rtc22 set time start stop
#include "RTClib.h" //rtc ต้องมี
#include <LiquidCrystal_I2C.h> //lcd ต้องมี
#include "DHT.h" //dht22
RTC_DS1307 rtc; // rtc ต้องมี
LiquidCrystal_I2C lcd(0x27, 16, 2 ); // lcd ต้องมี
DHT dht(8, DHT22); //dht22
int h = 0;
int m = 0;
int s = 0;
int h1 = 0;
int m1 = 0;
int s1 = 0;
int h2 = 0;
int m2 = 0;
int s2 = 0;
int st = 0;
////dht22
int tmax = 38; //temp >38 fan on 2 m stop 1 m to 25, <25 lamp on
int tmin = 25;
int hmax = 80; //<70 pump on 2 m stop 1m check hum 80pump off
int hmin = 70;
int pump = 13; /////relay
int fan = 12; /////relay
int lamp = 11; /////relay
int hum;
int temp;
///////////////////////////////
void setup() {
dht.begin(); // dht22
rtc.begin(); //ต้องมีrct
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(pump, OUTPUT);
pinMode(fan, OUTPUT);
pinMode(lamp, OUTPUT);
lcd.init(); //ต้องมี lcd
lcd.backlight(); //ต้องมี lcd
}///////////////////////////
void loop() {
int sw1 = digitalRead(4);
delay(100);
if (sw1 == 0) {
st++;
if (st >= 7) {
st = 0;
lcd.clear();
}
}
///////////////////
if ( st == 0){
time();
ht();
} else{
start ();
stop();
}
}////////////end loop
/////////////////////function /////// start
void start() {
if (st == 1) {
int sw2 = digitalRead(3);
delay(50);
if (sw2 == 0) {
h1++;
if ( h1 >= 24) {
h1 = 0;
}
}
/////////
int sw3 = digitalRead(5);
delay(50);
if (sw3 == 0) {
h1--;
if ( h1 <= 0) {
h1 = 23;
}
}
lcd.setCursor(6, 0);
lcd.print(" ");
delay(200); ///////////500
}
if (st == 2) {
int sw2 = digitalRead(3);
delay(50);
if (sw2 == 0) {
m1++;
if ( m1 >= 60) {
m1 = 0;
}
}
///////////////////////////
int sw3 = digitalRead(5);
delay(50);
if (sw3 == 0) {
m1--;
if ( m1 <= 0) {
m1 = 59;
}
}
lcd.setCursor(9, 0);
lcd.print(" ");
delay(200);/////////////500
}
if (st == 3) {
int sw2 = digitalRead(3);
delay(50);
if (sw2 == 0) {
s1++;
if ( s1 >= 60) {
s1 = 0;
}
}
int sw3 = digitalRead(5);
delay(50);
if (sw3 == 0) {
s1--;
if ( s1 <= 0) {
s1 = 59;
}
}
lcd.setCursor(12, 0);
lcd.print(" ");
delay(200);///////////////
}
////////////////////////
lcd.setCursor(0, 0);
lcd.print("Start");
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);
}///////////////end loop
//////////////////////////function stop
void stop() {
if (st == 4) {
int sw2 = digitalRead(3);
delay(50);
if (sw2 == 0) {
h2++;
if ( h2 >= 24) {
h2 = 0;
}
}
int sw3 = digitalRead(5);
delay(50);
if (sw3 == 0) {
h2--;
if ( h2 <= 0) {
h2 = 23;
}
}
lcd.setCursor(6, 1);
lcd.print(" ");
delay(200);/////////////////////500
}
if (st == 5) {
int sw2 = digitalRead(3);
delay(50);
if (sw2 == 0) {
m2++;
if ( m2 >= 60) {
m2 = 0;
}
}
int sw3 = digitalRead(5);
delay(50);
if (sw3 == 0) {
m2--;
if ( m2 <= 0) {
m2 = 59;
}
}
lcd.setCursor(9, 1);
lcd.print(" ");
delay(200);///////////500
}
if (st == 6) {
int sw2 = digitalRead(3);
delay(50);
if (sw2 == 0) {
s2++;
if ( s2 >= 60) {
s2 = 0;
}
}
int sw3 = digitalRead(5);
delay(50);
if (sw3 == 0) {
s2--;
if ( s2 <= 0) {
s2 = 59;
}
}
lcd.setCursor(12, 1);
lcd.print(" ");
delay(200); //////////////500
}
////////////////////////
lcd.setCursor(0, 1); //copy
lcd.print("Stop");
lcd.setCursor(4, 1); ////////clear
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); ////////clear
lcd.print(" ");
}
////////
void time() {
DateTime now = rtc.now(); /////// rtc
h = now.hour();
m = now.minute();
s = now.second();
hum = dht.readHumidity(); ////hum
temp = dht.readTemperature(); ////temp
lcd.setCursor(0, 0);
lcd.print("Time");
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(":");
lcd.setCursor(12, 0);
if (s <= 9) {
lcd.print("0");
}
lcd.print(s);
}////////////////////////end loop
void ht(){ /////////////////////function dht22
hum = dht.readHumidity(); // อ่าน hum
temp = dht.readTemperature();// อ่าน temp
lcd.setCursor(0, 1);
lcd.print("Hum");
lcd.setCursor(5 , 1);
lcd.print(" ");
lcd.setCursor(4, 1);
lcd.print(hum);
lcd.setCursor(8, 1);
lcd.print("Temp");
lcd.setCursor(12 , 1); /////clear
lcd.print(" ");
lcd.setCursor(13, 1);
lcd.print(temp);
if(hum<70){
digitalWrite( pump, HIGH);
delay(2000);
digitalWrite( pump, LOW);
delay(1000);
}
else{
digitalWrite(pump, LOW);
delay(500);
}
if (temp > 38) {
digitalWrite(fan, HIGH);
delay(2000);
digitalWrite(fan, LOW);
delay(1000);
}
else if( temp <= 25){
digitalWrite(fan, LOW);
}
if (temp <25){
digitalWrite(lamp, HIGH);
}
else {
digitalWrite(lamp, LOW);
}
}///////////////////////end loop