// Práce Patrik Šťastného
#include <Wire.h>
#include "RTClib.h"
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
RTC_DS1307 DS1307;
int MENU = 9, DOLU = 10, NAHORU = 11; //menu zluty, dolu modry, nahoru sedy
int strana;
int sekundy, minuty, hodiny, den, rok, mesic;
DateTime datumCas;
void setup() {
pinMode(9,INPUT_PULLUP);
pinMode(10,INPUT_PULLUP);
pinMode(11,INPUT_PULLUP);
lcd.init();
lcd.backlight();
if (!DS1307.begin()) {
lcd.println("hodiny nejsou pripojeny!");
for(;;);
}
if (!DS1307.isrunning()) {
lcd.println("hodiny nejsou spusteny! Spoutim nyni");
}
//DS1307.adjust(DateTime(2016, 4, 26, 8, 9, 9)); //nastaveni vlastniho datumu
DS1307.adjust(DateTime(__DATE__,__TIME__));
}
void loop() {
datumCas = DS1307.now();
if (!digitalRead(MENU)){
strana = 1;
delay(100);
while (!digitalRead(MENU));
}
switch (strana) {
case 0:
casmore();
break;
case 1:
vyberhodin();
break;
case 2:
vyberminut();
break;
case 3:
vyberden();
break;
case 4:
vybermesic();
break;
case 5:
vyberrok();
break;
case 6:
nastaveniukonceno();
break;
case 7:
nahoruu();
break;
case 8:
doluu();
break;
}
}
// HODINY
void vyberhodin(){
if(!digitalRead(NAHORU)){
hodiny++;
hodiny > 23 ? hodiny = 0 : hodiny; // když hodiny vetší než 23 tak hodiny 0
hodiny < 0 ? hodiny = 23 : hodiny;
delay(200);
while (!digitalRead(NAHORU));
}
if(!digitalRead(DOLU)){
hodiny--;
hodiny > 23 ? hodiny = 0 : hodiny;
hodiny < 0 ? hodiny = 23 : hodiny;
delay(200);
while (!digitalRead(DOLU));
}
lcd.setCursor(0, 0);
lcd.print("NASTAVENI HODIN ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.print(hodiny < 10 ? "0" + String(hodiny) : hodiny);
lcd.print(':');
lcd.print(minuty < 10 ? "0" + String(minuty) : minuty);
lcd.print(":");
lcd.print(sekundy < 10 ? "0" + String(sekundy) : sekundy);
lcd.print(" ");
if(!digitalRead(MENU)){
strana = 2;
delay(200);
while (!digitalRead(MENU));
}
}
// MINUTY
void vyberminut(){
if(!digitalRead(NAHORU)){
minuty++;
minuty > 59 ? minuty = 0 : minuty;
minuty < 0 ? minuty = 59 : minuty;
delay(200);
while (!digitalRead(NAHORU));
}
if(!digitalRead(DOLU)){
minuty--;
minuty > 59 ? minuty = 0 : minuty;
minuty < 0 ? minuty = 59 : minuty;
delay(200);
while (!digitalRead(DOLU));
}
lcd.setCursor(0, 0);
lcd.print("NASTAVENI MINUT ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.print(hodiny < 10 ? "0" + String(hodiny) : hodiny);
lcd.print(':');
lcd.print(minuty < 10 ? "0" + String(minuty) : minuty);
lcd.print(":");
lcd.print(sekundy < 10 ? "0" + String(sekundy) : sekundy);
lcd.print(" ");
if(!digitalRead(MENU)){
strana = 3;
delay(200);
while (!digitalRead(MENU));
}
}
// DNY
void vyberden(){
if(!digitalRead(NAHORU)){
den++;
den > 31 ? den = 1 : den;
den < 1 ? den = 31 : den;
delay(200);
while (!digitalRead(NAHORU));
}
if(!digitalRead(DOLU)){
den--;
den > 31 ? den = 1 : den;
den < 1 ? den = 31 : den;
delay(200);
while (!digitalRead(DOLU));
}
lcd.setCursor(0, 0);
lcd.print("NASTAVENI DNE ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.print(den < 10? "0" + String(den) : den);
lcd.print('.');
lcd.print(mesic < 10? "0" + String(mesic) : mesic);
lcd.print('.');
lcd.print(rok < 10? "0" + String(rok) : rok);
lcd.print(" ");
if(!digitalRead(MENU)){
strana = 4;
delay(200);
while (!digitalRead(MENU));
}
}
// MESICE
void vybermesic(){
if(!digitalRead(NAHORU)){
mesic++;
mesic > 12 ? mesic = 1 : mesic;
mesic < 1 ? mesic = 12 : mesic;
delay(200);
while (!digitalRead(NAHORU));
}
if(!digitalRead(DOLU)){
mesic--;
mesic > 12 ? mesic = 1 : mesic;
mesic < 1 ? mesic = 12 : mesic;
delay(200);
while (!digitalRead(DOLU));
}
lcd.setCursor(0, 0);
lcd.print("NASTAVENI MESICE ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.print(den < 10? "0" + String(den) : den);
lcd.print('.');
lcd.print(mesic < 10? "0" + String(mesic) : mesic);
lcd.print('.');
lcd.print(rok < 10? "0" + String(rok) : rok);
lcd.print(" ");
if(!digitalRead(MENU)){
strana = 5;
delay(200);
while (!digitalRead(MENU));
}
}
// ROK
void vyberrok(){
if(!digitalRead(NAHORU)){
rok++;
delay(200);
while (!digitalRead(NAHORU));
}
if(!digitalRead(DOLU)){
rok--;
delay(200);
while (!digitalRead(DOLU));
}
lcd.setCursor(0, 0);
lcd.print("NASTAVENI ROKU ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.print(den < 10? "0" + String(den) : den);
lcd.print('.');
lcd.print(mesic < 10? "0" + String(mesic) : mesic);
lcd.print('.');
lcd.print(rok < 10? "0" + String(rok) : rok);
lcd.print(" ");
if(!digitalRead(MENU)){
strana = 6;
delay(200);
while (!digitalRead(MENU));
}
}
// DOKONCENO
void nastaveniukonceno(){
lcd.setCursor(0, 0);
lcd.print(" NASTAVENI ");
lcd.setCursor(0, 1);
lcd.print(" HOTOVO ");
DS1307.adjust(DateTime(rok, mesic, den, hodiny, minuty, sekundy));
delay(500);
strana = 0;
casmore();
}
// cas no
void casmore(){
sekundy = datumCas.second();
minuty = datumCas.minute();
hodiny = datumCas.hour();
den = datumCas.day();
mesic = datumCas.month();
rok = datumCas.year();
lcd.setCursor(0,0);
lcd.print(" ");
lcd.print(hodiny < 10? "0" + String(hodiny) : hodiny );
lcd.print(':');
lcd.print(minuty < 10? "0" + String(minuty) : minuty);
lcd.print(':');
lcd.print(sekundy < 10? "0" + String(sekundy) : sekundy);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.print(den < 10? "0" + String(den) : den);
lcd.print('.');
lcd.print(mesic < 10? "0" + String(mesic) : mesic);
lcd.print('.');
lcd.print(rok < 10? "0" + String(rok) : rok);
lcd.print(" ");
if(!digitalRead(NAHORU)){
strana = 7;
delay(200);
while (!digitalRead(NAHORU));
}
if(!digitalRead(DOLU)){
strana = 8;
delay(200);
while (!digitalRead(DOLU));
}
}
void nahoruu(){
lcd.setCursor(0,0);
lcd.print(" Nejprve zluty ");
lcd.setCursor(0,1);
lcd.print(" tlacitko ");
if(!digitalRead(MENU)){
strana = 0;
delay(200);
while (!digitalRead(MENU));
}
}
void doluu(){
lcd.setCursor(0,0);
lcd.print(" Nejprve zluty ");
lcd.setCursor(0,1);
lcd.print(" tlacitko ");
if(!digitalRead(MENU)){
strana = 0;
delay(200);
while (!digitalRead(MENU));
}
}
// if(!digitalRead(NAHORU)){
// lcd.setCursor(0,0);
// lcd.print(" ");
// lcd.print("Easter Egg :)");
// lcd.setCursor(0,1);
// lcd.print(" ");
// delay(200);
// while (!digitalRead(NAHORU));
// }
//
// if(!digitalRead(DOLU)){
// lcd.setCursor(0,0);
// lcd.print(" ");
// lcd.setCursor(0,1);
// lcd.print(" ");
// lcd.print("Easter Egg :)");
// delay(200);
// while (!digitalRead(DOLU));
// }
// Práce Patrik Šťastného