#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 h;
int mi;
int s;
int menu = 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(8, INPUT_PULLUP);
pinMode(4, OUTPUT);
digitalWrite(4, ledState);
} //////////////////end setup
void loop() {
millissw();
/* 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.println("swmenu :");
Serial.println(swmenu);
Serial.println("sw :");
Serial.println(sw);*/
}
/////////////////////// End Loop
void time () {
DateTime now = rtc.now();
y = now.year();
m = now.month();
d = now.day();
h = now.hour();
mi = now.minute();
s = now.second();
lcd.setCursor(0, 0);
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("/");
y = y + 543;
lcd.print(y);
lcd.setCursor(0, 1);
lcd.print("Time ");
if (h < 10) {
lcd.print("0");
}
lcd.print(h);
lcd.print(":");
if (mi < 10) {
lcd.print("0");
}
lcd.print(mi);
lcd.print(":");
if (s < 10) {
lcd.print("0");
}
lcd.print(s);
lcd.print(" ");
// Serial.println(y);
// Serial.println(m);
// Serial.println(d);
}
///////////////// end time
void displaytemp() {
temp = dht.readTemperature();
hum = dht.readHumidity();
Serial.print("Temperature : ");
Serial.println(temp);
Serial.print("Humidity : ");
Serial.println(hum);
lcd.setCursor(0, 0);
lcd.print("Temp ");
lcd.print(temp);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print("Humi ");
lcd.print(hum);
lcd.print(" ");
}////////////end displaytemp
void dhtsensor() {
int t = dht.readTemperature();
int h = dht.readHumidity();
lcd.setCursor(0, 0);
lcd.print("Temp ");
lcd.print(t);
lcd.setCursor(0, 1);
lcd.print("Humi ");
lcd.print(h);
}////////////////End dhtsensor
void text() {
lcd.setCursor(0, 0);
lcd.print("Hello World");
}
////////////////End text
void millissw() {
int reading = digitalRead(8);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == HIGH) {
menu = menu + 1;
lcd.clear();
}
}
}
// set the LED:
digitalWrite(4, ledState);
if (menu = 1) {
time();
}
if (menu = 2) {
dhtsensor();
}
if (menu = 3) {
text();
}
if (menu >= 4) {
menu = 0;
}
// save the reading. Next time through the loop, it'll be the lastButtonState:
lastButtonState = reading;
Serial.println(menu);
}
////////////////End millissw