#include <DHT.h>
#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
DHT dht(2, DHT22);
LiquidCrystal_I2C lcd (0x27,16,2);
RTC_DS1307 rtc;
int temp; // อุณหภูมฺิ
int hum; // ความชื้น
int y; //ปี
int m; //เดือน
int d; // วัน
int hr; // ชั่วโมง
int mi; // นาที
int s; //วินาที
int num = 0;
int swmenu = 0;
const int buttonPin = 8;
const int ledPin = 4;
int ledState = HIGH;
int buttonState;
int lastButtonState = LOW;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;
void setup() {
Serial.begin(115200);
dht.begin();
lcd.init();
lcd.backlight();
rtc.begin();
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, ledState);
}// end setup
void loop() {
millisw();
//int sw = digitalRead(8);
/*
if(sw == 0){
swmenu = !swmenu +1;
lcd.clear();
}
if(swmenu == 0){
time();
}
if(swmenu == 1){
dhtsensor();
}
if (swmenu == 2) {
text();
}
if (swmenu >= 3) {
swmenu = 0;
}*/
///Serial.print("swmenu");
///Serial.println(swmenu);
//Serial.print("sw");
//Serial.println(sw);
}// end loop
////////////////
void time (){ ///ชุดวัน-เวลา-ทำงาน
DateTime now = rtc.now();
y = now.year();
m = now.month();
d = now.day();
hr = now.hour();
mi= now.minute();
s = now.second ();
///delay(2000);
Serial.print("Current time: ");
Serial.print(d);
Serial.print('/');
Serial.print(m);
Serial.print('/');
Serial.print(y);
Serial.print(" hr: ");
Serial.print(hr);
Serial.print(':');
Serial.print(mi);
Serial.print(':');
Serial.print(s);
Serial.println();
lcd.setCursor(0,0); //row , colum
lcd.print("Date:");
if (d < 10) {
lcd.print (0);
}
lcd.print(d);
lcd.print("/");
if (m < 10) {
lcd.print (0);
}
lcd.print(m);
lcd.print("/");
lcd.print(y+543);
lcd.print(" ");
lcd.setCursor(0,1); //row , colum
lcd.print("Time:");
if (mi < 10) {
lcd.print (0);
}
lcd.print(hr);
lcd.print(":");
if (mi < 10) {
lcd.print (0);
}
lcd.print(mi);
lcd.print(":");
if (s < 10) {
lcd.print (0);
}
lcd.print(s);
lcd.print(" ");
}
void dhtsensor() { ///ชุดsenser ทำงาน
int t = dht.readTemperature(); /// อุณหภูมิ
int h = dht.readHumidity(); /// ความชื้น
lcd.setCursor (0,0);
lcd.print("Temp : ");
lcd.print(t);
lcd.setCursor (0,1);
lcd.print("Hum : ");
lcd.print(h);
}
void text (){
lcd.setCursor (0,0);
lcd.print("Hello World");
}
void millisw(){
int sw = digitalRead(buttonPin);
if (sw != swmenu) {
// reset the debouncing timer
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (sw != buttonState) {
buttonState = sw;
if (buttonState == HIGH) {
ledState = !ledState;
num = num + 1;
lcd.clear();
}
}
}
////set the LED
digitalWrite(ledPin, ledState);
if (num == 1 ){
time();
}
if (num == 2 ){
dhtsensor();
}
if (num == 3 ){
text();
}
swmenu = sw;
Serial.println(num);
if(num > 3 ){
num = 1;
}
}