#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
#include <Wire.h>
#include <DHT.h>
#define pinDHT 5
#define typDHT22 DHT22
DHT DHT(pinDHT, typDHT22);
int minuty;
int hodiny;
bool change = 0;
byte krajta = 0;
DateTime blbec;
LiquidCrystal_I2C lcd(0x27,16,2);
RTC_DS1307 RTC;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
lcd.init();
lcd.backlight();
RTC.begin();
DHT.begin();
pinMode(9, INPUT_PULLUP);
pinMode(10, INPUT_PULLUP);
pinMode(11, INPUT_PULLUP);
RTC.adjust(DateTime(__DATE__, __TIME__));
}
void loop() {
// put your main code here, to run repeatedly:
blbec = RTC.now();
float tep = DHT.readTemperature();
if(!digitalRead(11))
{
change = true;
krajta = 1;
delay(250);
}
if (!change){
Time();
}
if (change){
switch(krajta){
case 1: eminutes();
break;
case 2: ehours();
break;
case 3: ok();
break;
}
}
}
void Time()
{
minuty = blbec.minute();
hodiny = blbec.hour();
float tep = DHT.readTemperature();
lcd.setCursor(0,0);
lcd.print("Time ");
lcd.print(hodiny < 10 ? "0" + String(hodiny) : hodiny);
lcd.print(":");
lcd.print(minuty < 10 ? "0" + String(minuty) : minuty);
lcd.setCursor(0,1);
lcd.print("Temp ");
lcd.print(tep);
lcd.print("C");
}
void eminutes(){
lcd.setCursor(0,0);
lcd.print(" ");
lcd.print("EDITING MINUTES");
lcd.setCursor(0,1);
lcd.print(hodiny < 10 ? "0" + String(hodiny) : hodiny);
lcd.print(":");
lcd.print(minuty < 10 ? "0" + String(minuty) : minuty);
lcd.print(" ");
if (!digitalRead(10)){
minuty--;
minuty < 0 ? minuty = 59 : minuty;
delay (200);
}
if (!digitalRead(9)){
minuty++;
minuty > 59 ? minuty = 0 : minuty;
delay (200);
}
if (!digitalRead(11)){
delay(200);
krajta = 2;
}
}
void ehours(){
lcd.setCursor(0,0);
lcd.print(" ");
lcd.print("EDITING HOURS ");
lcd.setCursor(0,1);
lcd.print(hodiny < 10 ? "0" + String(hodiny) : hodiny);
lcd.print(":");
lcd.print(minuty < 10 ? "0" + String(minuty) : minuty);
if (!digitalRead(10)) {
hodiny--;
hodiny < 0 ? hodiny = 23 : hodiny;
hodiny > 23 ? hodiny = 0 : hodiny;
delay (200);
}
if (!digitalRead(9)){
hodiny++;
hodiny > 59 ? hodiny = 0 : hodiny;
delay (200);
}
if (!digitalRead(11)){
delay(200);
krajta = 3;
}
}
void ok(){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" OK");
lcd.setCursor(0, 1);
lcd.print("Got it");
krajta=0;
RTC.adjust(DateTime(blbec.year(), blbec.month(), blbec.day(), hodiny, minuty, blbec.second()));
delay(1000);
change = false;
lcd.clear();
loop();
}