#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>


Adafruit_SSD1306 oled = Adafruit_SSD1306(128, 64, &Wire);

int offsetX=0;
int offsetY=0;
int offsetZ=0;

int offsetRX=0;
int offsetRY=0;
int offsetRZ=0;
 
int zSupport=10;
int zTransfer=20;

int jCoxaKirKan = 80; //jarak antara coxa kaki (depan kiri dan kanan) atau (belakang kiri dan kanan) (satuan mm)
int jCoxaDepBel = 80;  //jarak antara coxa kaki (depan kiri dan kanan) atau (belakang kiri dan kanan) (satuan mm)

int pTibia = 83; //panjang Tibia (mm)
int pFemur = 55; //panjang Femur (mm)
int pCoxa = 25; //panjang Coxa (mm)

int osDCoxa = 45; //Bukaan kaki luar (depan kiri kanan dan belakang kiri kanan / coxa 1, coxa 2, coxa 3, coxa 4). satuan derajat 
int osDTibia = 90; //Bukaan kaki luar (depan kiri kanan dan belakang kiri kanan / coxa 1, coxa 2, coxa 3, coxa 4). satuan derajat 
   

int m = 0, m1 = 0;
int maxm = 11;
int minm = 0;
int maxm1 = 5;
int minm1 = 0;

#define pinU 12
#define pinD 13
#define pinP 14
#define pinM 27

String menuSet[11]={
  "offsetX  :",
  "offsetY  :",
  "offsetZ  :",
  "offsetRX :",
  "offsetRY :",
  "offsetRZ :",
  "zSupport :",
  "zTransfer:",
  "lCoxa LR :",
  "lCoxa FB :",
  "osDCoxa  :"
};

void setup() { 

  pinMode(pinU, INPUT_PULLUP);
  pinMode(pinD, INPUT_PULLUP);
  pinMode(pinP, INPUT_PULLUP);
  pinMode(pinM, INPUT_PULLUP);
  
  Serial.begin(115200);
  oled.begin(SSD1306_SWITCHCAPVCC, 0x3C); 
  oled.setTextSize(1);
  oled.setTextColor(SSD1306_WHITE);
}

void loop() {  
  oled.clearDisplay();

  for(int x=0; x<maxm; x++){ 
    setCursor(1,x-(m-m1));
    oled.print(menuSet[x]);
  }

  setCursor(0,m1); 
  oled.print(">"); 

  setCursor(15,0); 
  oled.print(m);
  oled.print(" ");
  oled.print(m1);

  // setCursor(1,m);
  // oled.print("pTibia  : "); oled.print(pTibia); oled.print("cm");
  // setCursor(1,m+1);
  // oled.print("pFemur  : "); oled.print(pFemur); oled.print("cm");
  // setCursor(1,m+2);
  // oled.print("pCoxa   : "); oled.print(pCoxa); oled.print("cm");


  if(digitalRead(pinU)==0 && m>0){
    m--;  
    m1--;
    if(m1<minm1){
      m1=minm1; 
    } 
  
  }
  if(digitalRead(pinD)==0 && m<10){
    m++;
    m1++;  
    if(m1>maxm1){
      m1=maxm1;
    } 

  } 
  oled.display();

}


void setCursor(int x, int y){
  oled.setCursor(x*6,y*11);
}