/*#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
#define CLK 2
#define DT 3
#define SW 4
void setup() {
pinMode(CLK, INPUT);
pinMode(DT, INPUT);
pinMode(SW, INPUT_PULLUP);
lcd.init();
lcd.backlight();
}
void loop() {
lcd.print();
}*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define CLK 2
#define DT 3
#define SW 4
int menuOption = 0;
const char *menuItems[] = {"Item 1", "Item 2", "Item 3", "Item 4"};
void setup() {
pinMode(CLK, INPUT);
pinMode(DT, INPUT);
pinMode(SW, INPUT_PULLUP);
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(menuItems[menuOption]);
}
void loop() {
static int prevEncoderValue = 0;
int encoderValue = digitalRead(CLK) << 1 | digitalRead(DT);
if (encoderValue != prevEncoderValue) {
if (encoderValue == 0b11) {
menuOption = (menuOption + 1) % (sizeof(menuItems) / sizeof(menuItems[0]));
} else if (encoderValue == 0b01) {
menuOption = (menuOption - 1 + sizeof(menuItems) / sizeof(menuItems[0])) % (sizeof(menuItems) / sizeof(menuItems[0]));
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(menuItems[menuOption]);
}
prevEncoderValue = encoderValue;
if (digitalRead(SW) == LOW) {
lcd.clear();
lcd.setCursor(0, 1);
switch (menuOption) {
case 0:
lcd.print('1');
break;
case 1:
lcd.print('2');
break;
case 2:
lcd.print('3');
break;
case 3:
// Додайте логіку для виведення часу з RTC
lcd.print('4');
break;
}
delay(1000); // Затримка для уникнення множинних дій при утриманні кнопки
}
}