#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>
LiquidCrystal_I2C lcd(0x27,16,2);
#define ENCODER_CLK 2
#define ENCODER_DT 3
#define ENCODER_SW 4
int menu = 0;
void setup() {
// put your setup code here, to run once:
lcd.init();
lcd.clear();
lcd.backlight();
int dtValue = digitalRead(ENCODER_DT);
// Initialize encoder pins
pinMode(ENCODER_CLK, INPUT);
pinMode(ENCODER_DT, INPUT);
pinMode(ENCODER_SW, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(ENCODER_CLK), readEncoder, FALLING);
}
void updateMenu() {
switch (menu) {
case 0:
menu = 1;
break;
case 1:
lcd.clear();
lcd.print(">LED1");
lcd.setCursor(0, 1);
lcd.print(" LED2");
break;
case 2:
lcd.clear();
lcd.print(" LED1");
lcd.setCursor(0, 1);
lcd.print(">LED2");
break;
case 3:
lcd.clear();
lcd.print(">LED3");
lcd.setCursor(0, 1);
lcd.print(" LED4");
break;
case 4:
lcd.clear();
lcd.print(" LED3");
lcd.setCursor(0, 1);
lcd.print(">LED4");
break;
case 5:
menu = 4;
break;
}
}
void readEncoder() {
if (digitalRead(ENCODER_DT) == HIGH) {menu++; // Clockwise
//updateMenu();
}
if (digitalRead(ENCODER_DT) == LOW) {menu--; // Counterclockwise
//updateMenu();
}
}
void loop() {
// put your main code here, to run repeatedly:
lcd.setCursor(2,0);
lcd.print("Lepo menu");
lcd.setCursor(5,1);
lcd.print(menu);
if (digitalRead(ENCODER_SW) == LOW) {
lcd.clear();
menu=0;
}
}