#include "RTClib.h"
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
RTC_DS1307 rtc;
int btn_verh = 12; // кнопка вверх
int btn_vniz = 13; // кнопка вниз
int btn_vvod = 11;
int led = 7;
bool led_mode;
unsigned long period = 500;
unsigned long timer;
char menu[3][6] = {"month", "day ", "hour "}; // пункты меню
int btn_meny_poz = 0; // позиция меню
int menu_poz_value[3] = {1, 1, 1}; // значениея переменнх пунктов меню
void setup()
{
pinMode(led, OUTPUT);
pinMode(btn_verh, INPUT); // пин кнопки вверх
pinMode(btn_vniz, INPUT); // пин кнопки вниз
lcd.init();
lcd.backlight();
rtc.begin();
rtc.adjust(DateTime(2014, menu_poz_value[1], 21, 3, 0, 0));
DateTime now = rtc.now();
}
void loop()
{
if (millis() - timer >= period){
timer = millis();
digitalWrite(led, led_mode);
led_mode != led_mode;
}
if (digitalRead(btn_vvod) == HIGH){ // условия нажатия кнопки ввод (следующий пункт меню)
while (digitalRead(btn_vvod) == HIGH){}
btn_meny_poz = btn_meny_poz + 1;
if (btn_meny_poz > 2){
btn_meny_poz = 0;}
rtc.adjust(DateTime(2014, menu_poz_value[0], 21, 3, 0, 0));
}
if (digitalRead(btn_verh) == HIGH){ // условия нажатия кнопки вверх
while (digitalRead(btn_verh) == HIGH){}
menu_poz_value[btn_meny_poz] = menu_poz_value[btn_meny_poz] + 1;
}
if (digitalRead(btn_vniz) == HIGH){ // условия нажатия кнопки вниз
while (digitalRead(btn_vniz) == HIGH){}
menu_poz_value[btn_meny_poz] = menu_poz_value[btn_meny_poz] - 1;
}
lcd.setCursor(0,0);
lcd.print(menu[btn_meny_poz]); // вывод пизиции меню
lcd.setCursor(0,1);
lcd.print(String(menu_poz_value[btn_meny_poz]) + " "); // вывод значения переменной позиции меню
}