#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>

//display
U8G2_SH1107_SEEED_128X128_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

//variables
int startx = 0;
const int buttonUp = 5;
const int buttonDown = 6;
const int buttonEnter = 9;
const int mainLoopLED = 10;

int buttonUpState = 0;
int lastButtonUpState = 0;
int buttonDownState = 0;
int lastButtonDownState = 0;
int buttonEnterState = 0;
int lastButtonEnterState = 0;
int menuIndex = 0;
bool mainMenu = true;

void setup() {
  // put your setup code here, to run once:
u8g2.begin();
u8g2.clearBuffer();
u8g2.sendBuffer();
pinMode(buttonUp, INPUT);
pinMode(buttonDown, INPUT);
pinMode(buttonEnter, INPUT);
pinMode(mainLoopLED, OUTPUT);
}

void loadloop() {
  //u8g2.clearBuffer();
  for (int starty = 0; starty <= 255; starty++) {
    u8g2.clearBuffer();
    u8g2.drawArc(64, 64, 25, 0, starty);
    u8g2.drawArc(64, 64, 26, 0, starty);
    u8g2.drawArc(64, 64, 27, 0, starty);
    u8g2.drawArc(64, 64, 35, 0, starty);
    u8g2.drawArc(64, 64, 36, 0, starty);
    //starty = starty -1;
    startx = starty -55;

  u8g2.sendBuffer();
  }
}
void drawMenu(){
  //u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_gb24st_t_1);
  u8g2.setCursor(1, 12);
  u8g2.print("Menu");
  u8g2.drawHLine(0, 15, 128);
  u8g2.setCursor(5, 34);
  u8g2.print("LED");
  u8g2.setCursor(5, 54);
  u8g2.print("LED2");
  u8g2.setCursor(5, 74);
  u8g2.print("LED3");
  //u8g2.sendBuffer();

}
void loop() {
  while (mainMenu == true) {
    u8g2.clearBuffer();
    drawMenu();
    u8g2.sendBuffer();
    mainMenu = false;
    digitalWrite(mainLoopLED, HIGH);
    delay(1000);
  }
digitalWrite(mainLoopLED, LOW);

lastButtonUpState = 0;
lastButtonDownState = 0;

buttonUpState = digitalRead(buttonUp);
buttonDownState = digitalRead(buttonDown);

if (buttonUpState == HIGH & lastButtonUpState == 0 & menuIndex >= 0) {
  digitalWrite(mainLoopLED, HIGH);
  lastButtonUpState = 1;
    if (menuIndex == 0) {
      u8g2.clearBuffer();
      u8g2.drawFrame(0, 20, 128, 15);
      drawMenu();
      u8g2.sendBuffer();
    } else if ( menuIndex == 1) {
      u8g2.clearBuffer();
      u8g2.drawFrame(0, 40, 128, 15);
      drawMenu();
      u8g2.sendBuffer();
    }else if ( menuIndex == 2) {
      u8g2.clearBuffer();
      u8g2.drawFrame(0, 60, 128, 15);
      drawMenu();
      u8g2.sendBuffer();
    }
  if (menuIndex > 0) { 
      menuIndex--;
    }
    delay(100);
  }

if (buttonDownState == HIGH & lastButtonDownState == 0 & menuIndex <= 2) {
  lastButtonDownState = 1;
  digitalWrite(mainLoopLED, HIGH);
    if (menuIndex == 0) {
      u8g2.clearBuffer();
      u8g2.drawFrame(0, 20, 128, 15);
      drawMenu();
      u8g2.sendBuffer();
    } else if ( menuIndex == 1) {
      u8g2.clearBuffer();
      u8g2.drawFrame(0, 40, 128, 15);
      drawMenu();
      u8g2.sendBuffer();
    }else if ( menuIndex == 2) {
      u8g2.clearBuffer();
      u8g2.drawFrame(0, 60, 128, 15);
      drawMenu();
      u8g2.sendBuffer();
    }
  if (menuIndex < 2) { 
      menuIndex++;
    }
    delay(100);
  }
}
