// Rotary Encoder Inputs
#define CLK 2
#define DT 4
#define SW 3

int currentStateCLK;
int lastStateCLK;
unsigned long lastButtonPress = 0;

int leds [] = {27, 28};

unsigned int menu = 0;
int ledStatus[27] = {0};
int timer = 500;

void setup() {
  Serial1.begin(9600);

  // Set encoder pins as input
  pinMode(CLK, INPUT);
  pinMode(DT, INPUT);
  pinMode(SW, INPUT_PULLUP);

  for (int i = 0; i < 2; i++) {
    pinMode(leds[i], OUTPUT);
  }

  menu = 0;
  updateMenu();
}

void loop() {
  currentStateCLK = digitalRead(CLK);

  if (currentStateCLK != lastStateCLK  && currentStateCLK == 1) {
    if (digitalRead(DT) != currentStateCLK) {
      menu --;
      updateMenu();
    } else {
      menu ++;
      updateMenu();
    }
  }
  lastStateCLK = currentStateCLK;

  int btnState = digitalRead(SW);
  if (btnState == LOW) {
    if (millis() - lastButtonPress > 50) {
      executeAction();
      updateMenu();
    }
    lastButtonPress = millis();
  }
  delay(1);
}

void printlcd(){
  Serial1.println("LED Controller");
  }

void updateMenu() {
  
  switch (menu) {
    case 0:
      menu = 1;
      break;
    case 1:
      printlcd();
      Serial1.println("<LED 1>");
      break;
    case 2:
      printlcd();
      Serial1.println("<LED 2>");
      break;
    case 3:
      menu = 4;
      break;
  }
}
void executeAction() {
  switch (menu) {
    case 1:
      action1();
      break;
    case 2:
      action2();
      break;
  }
}

void action1() {
  if (ledStatus[menu] != 0) {
    ledStatus[menu] = 0;
    Serial1.println("> LED 1 OFF...");
    digitalWrite(leds[menu - 1], ledStatus[menu]);
    delay(timer);
  } else {
    ledStatus[menu] = 1;
    // display.clearDisplay();
    // display.println("> LED 1 ON...");
    Serial1.println("> LED 1 ON...");
    digitalWrite(leds[menu - 1], ledStatus[menu]);
    delay(timer);
  }
}
void action2() {
  if (ledStatus[menu] != 0) {
    ledStatus[menu] = 0;
    Serial1.println("> LED 2 OFF...");
    digitalWrite(leds[menu - 1], ledStatus[menu]);
    delay(timer);
  } else {
    ledStatus[menu] = 1;
    Serial1.println("> LED 2 ON...");
    digitalWrite(leds[menu - 1], ledStatus[menu]);
    delay(timer);
  }
}
$abcdeabcde151015202530fghijfghij
BOOTSELLED1239USBRaspberryPiPico©2020RP2-8020/21P64M15.00TTT
pico:GP0
pico:GP1
pico:GND.1
pico:GP2
pico:GP3
pico:GP4
pico:GP5
pico:GND.2
pico:GP6
pico:GP7
pico:GP8
pico:GP9
pico:GND.3
pico:GP10
pico:GP11
pico:GP12
pico:GP13
pico:GND.4
pico:GP14
pico:GP15
pico:GP16
pico:GP17
pico:GND.5
pico:GP18
pico:GP19
pico:GP20
pico:GP21
pico:GND.6
pico:GP22
pico:RUN
pico:GP26
pico:GP27
pico:GND.7
pico:GP28
pico:ADC_VREF
pico:3V3
pico:3V3_EN
pico:GND.8
pico:VSYS
pico:VBUS
oled1:GND
oled1:VCC
oled1:SCL
oled1:SDA
encoder1:CLK
encoder1:DT
encoder1:SW
encoder1:VCC
encoder1:GND
led1:A
led1:C
led3:A
led3:C
r1:1
r1:2
r2:1
r2:2