#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal_I2C.h>
#include "DHT.h"
#define DHTecko 2
#define Nastaveni 10
#define Plus 9
#define Minus 11
DateTime datumCas;
LiquidCrystal_I2C lcd(0x27, 16, 2);
RTC_DS1307 DS1307;
DHT Mojedht(DHTecko, DHT22);
int minuta;
int hodina;
int vterinky;
int menu = 0;
int jednicka = 0;
//float teplota;
void setup() {
pinMode(10,INPUT_PULLUP);
pinMode(9,INPUT_PULLUP);
pinMode(11,INPUT_PULLUP);
lcd.init();
lcd.backlight();
Mojedht.begin();
if (! DS1307.begin()) {
lcd.print("Hodiny nejsou pripojeny!");
while (1);
}
// kontrolu spuštění obvodu reálného času
if (! DS1307.isrunning()) {
Serial.println("Hodiny nejsou spusteny! Spoustim nyni..");
}
DS1307.adjust(DateTime(__DATE__,__TIME__));
}
void loop() {
datumCas = DS1307.now();
if(!digitalRead(Nastaveni))
{
menu++;
jednicka++;
delay(200);
while (!digitalRead(Nastaveni));
}
if(menu==0){
AktualniCas();
}
if(menu==1){
if(jednicka==1){
lcd.clear();
jednicka =0;
}
MeniHodiny();
}
delay(100);
}
void AktualniCas(){
datumCas = DS1307.now();
hodina = datumCas.hour();
minuta = datumCas.minute();
vterinky = datumCas.second();
float teplota = Mojedht.readTemperature();
lcd.setCursor(0,0);
lcd.print("cas ");
lcd.setCursor(5,0);
lcd.print(hodina);
lcd.setCursor(7,0);
lcd.print(':');
lcd.setCursor(8,0);
lcd.print(minuta);
lcd.setCursor(10,0);
lcd.print(':');
lcd.setCursor(11,0);
lcd.print(vterinky);
lcd.setCursor(0,1);
lcd.print("TeploTa ");
lcd.setCursor(10,1);
lcd.print(teplota);
}
void MeniHodiny(){
datumCas = DS1307.now();
hodina = datumCas.hour();
minuta = datumCas.minute();
vterinky = datumCas.second();
if(!digitalRead(Plus)){
hodina++;
hodina > 23 ? hodina = 0 : hodina;
delay(200);
}
if(!digitalRead(Minus)){
hodina--;
hodina < 0 ? hodina = 23 : hodina;
delay(200);
lcd.setCursor(0,0);
lcd.print("zmen hodiny ");
lcd.setCursor(0,1);
lcd.print(hodina);
lcd.setCursor(2,1);
lcd.print(':');
lcd.setCursor(3,1);
lcd.print(minuta);
lcd.setCursor(5,1);
lcd.print(':');
lcd.setCursor(6,1);
lcd.print(vterinky);
}
}