#include <rotary.h>;
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
#define rselPINA 4
#define rselPINB 6
#define rselPUSHB 5
int rselval = 0;
// Initialize the Rotary object
// Rotary(Encoder Pin 1, Encoder Pin 2, Button Pin) Attach center to ground
Rotary r = Rotary(rselPINA, rselPINB, rselPUSHB);        // there is no must for using interrupt pins !!
#define rsetPINA 8
#define rsetPINB 9
#define rsetPUSHB 10
int rsetval = 0;
int rsetold = 0;
Rotary s = Rotary(rsetPINA, rsetPINB, rsetPUSHB);        // there is no must for using interrupt pins !!
//
///*---------------------comvariables----------------------------------*/
float c1 = 123.45;
float c1s = 120.45;
float c2 = 123.45;
float c2s = 120.45;
float ct = 0;
///*---------------------comvariables----------------------------------*/
///*---------------------navvariables----------------------------------*/
float n1 = 113.45;
float n1s = 110.45;
float n2 = 113.45;
float n2s = 110.45;
float nt = 0;
///*---------------------navvariables----------------------------------*/
float chval= 0.05;
void setup ()
{
  digitalWrite (rselPINA, HIGH);     // enable pull-ups
  digitalWrite (rselPINB, HIGH);
  digitalWrite (rselPUSHB, HIGH);
  digitalWrite (rsetPINA, HIGH);     // enable pull-ups
  digitalWrite (rsetPINB, HIGH);
  digitalWrite (rsetPUSHB, HIGH);
  lcd.begin ();
  Serial.begin(9600);
  lcd.setCursor(0, 0);
  lcd.print("*" );
  lcd.setCursor(1, 0);
  lcd.print("com1 " );
  lcd.setCursor(6, 0);
  lcd.print(c1);
  lcd.setCursor(14, 0);
  lcd.print(c1s);
  //
  lcd.setCursor(1, 1);
  lcd.print("com2 " );
  lcd.setCursor(6, 1);
  lcd.print(c2);
  lcd.setCursor(14, 1);
  lcd.print(c2s);
  lcd.setCursor(1, 2);
  lcd.print("nav1 " );
  lcd.setCursor(6, 2);
  lcd.print(n1);
  lcd.setCursor(14, 2);
  lcd.print(n1s);
  //
  lcd.setCursor(1, 3);
  lcd.print("nav2 " );
  lcd.setCursor(6, 3);
  lcd.print(n2);
  lcd.setCursor(14, 3);
  lcd.print(n2s);
}  // end of setup
void choice(int chval )
{
  Serial.print(chval);
  if ( chval == 0)
  {
    lcd.setCursor(0, 0);
    lcd.print("*");
    lcd.setCursor(0, 1);
    lcd.print(" ");
    lcd.setCursor(0, 2);
    lcd.print(" ");
    lcd.setCursor(0, 3);
    lcd.print(" ");
  } else if ( chval == 1)
  {
    lcd.setCursor(0, 0);
    lcd.print(" ");
    lcd.setCursor(0, 1);
    lcd.print("*");
    lcd.setCursor(0, 2);
    lcd.print(" ");
    lcd.setCursor(0, 3);
    lcd.print(" ");
  } else if ( chval == 2)
  {
    lcd.setCursor(0, 0);
    lcd.print(" ");
    lcd.setCursor(0, 1);
    lcd.print(" ");
    lcd.setCursor(0, 2);
    lcd.print("*");
    lcd.setCursor(0, 3);
    lcd.print(" ");
  } else if ( chval == 3)
  {
    lcd.setCursor(0, 0);
    lcd.print(" ");
    lcd.setCursor(0, 1);
    lcd.print(" ");
    lcd.setCursor(0, 2);
    lcd.print(" ");
    lcd.setCursor(0, 3);
    lcd.print("*");
  }
}
//int rsetfunc(int rsetfval )
//{
//  volatile unsigned char result = s.process();
//  if (result == DIR_CCW) {
//    rsetfval++;
//    delay(50);
//  } else if (result == DIR_CW) {
//    rsetfval--;  
//  }
//  Serial.print("rsetfval : ");
//  Serial.println(rsetfval);
//}
void loop ()
{
  volatile unsigned char result = r.process();
  if (result == DIR_CCW) {
    rselval++;
    if (rselval > 3 )
    {
      rselval = 3 ;
    }
    choice(rselval);
    delay(50);
  } else if (result == DIR_CW) {
    rselval--;  
    if (rselval < 0 )
    {
      rselval = 0 ;
    }
    choice(rselval);
    delay(50);
  }
  //Serial.println(rselval);
  volatile unsigned char resultt = s.process();
  if (resultt == DIR_CCW) {
    rsetval++;
     delay(50);
  } else if (resultt == DIR_CW) {
    rsetval--;  
    delay(50);
  }
 
 if (rsetval > rsetold)
 {
  if ( rselval == 0 )
  {
    float ct= c1 + chval;
    c1=ct;
    lcd.setCursor(6, 0);
    lcd.print(c1);
    //c1 chval kadar arttiracak buton ekle  
  } else if ( rselval == 1 )
  {
    float ct= c2 + chval;
    c2=ct;
    lcd.setCursor(6, 1);
    lcd.print(c2);  
    //c2 chval kadar arttiracak buton ekle  
  }else if ( rselval == 2 )
  {
    float nt= n1 + chval;
    n1=nt;
    lcd.setCursor(6, 2);
    lcd.print(n1);  
    //n1 chval kadar arttiracak buton ekle  
  }else if ( rselval == 3 )
  {
    float nt= n2 + chval;
    n2=nt;
    lcd.setCursor(6, 3);
    lcd.print(n2);  
    //n2 chval kadar arttiracak buton ekle  
  }
 } else if (rsetval < rsetold)
 {
  if ( rselval == 0 )
  {
    float ct= c1 - chval;
    c1=ct;
    lcd.setCursor(6, 0);
    lcd.print(c1);  
    //c1 chval kadar arttiracak buton ekle  
  } else if ( rselval == 1 )
  {
    float ct= c2 - chval;
    c2=ct;
    lcd.setCursor(6, 1);
    lcd.print(c2);  
    //c2 chval kadar arttiracak buton ekle
  }else if ( rselval == 2 )
  {
    float nt= n1 - chval;
    n1=nt;
    lcd.setCursor(6, 2);
    lcd.print(n1);  
    //n1 chval kadar arttiracak buton ekle
  }else if ( rselval == 3 )
  {
    float nt= n2 - chval;
    n2=nt;
    lcd.setCursor(6, 3);
    lcd.print(n2);  
    //n2 chval kadar arttiracak buton ekle
  }
 
 }
rsetold=rsetval;
  if (s.buttonPressedReleased(25)) {
    if ( rselval == 0 )
    {
      ct= c1;
      c1=c1s;
      c1s=ct;
      lcd.setCursor(6, 0);
      lcd.print(c1);
      lcd.setCursor(14, 0);
      lcd.print(c1s);
      //com1swap icin buton ekle        
    } else if ( rselval == 1 )
    {
      ct= c2;
      c2=c2s;
      c2s=ct;
      lcd.setCursor(6, 1);
      lcd.print(c2);
      lcd.setCursor(14, 1);
      lcd.print(c2s);        
      //com2 swap icin buton ekle
    }
    else if ( rselval == 2 )
    {
      nt= n1;
      n1=n1s;
      n1s=nt;
      lcd.setCursor(6, 2);
      lcd.print(n1);
      lcd.setCursor(14, 2);
      lcd.print(n1s);
      //nav1 swap icin buton ekle        
    } else if ( rselval == 3 )
    {
      nt= n2;
      n2=n2s;
      n2s=nt;
      lcd.setCursor(6, 3);
      lcd.print(n2);
      lcd.setCursor(14, 3);
      lcd.print(n2s);
      //nav2 swap icin buton ekle          
    }
   
  } //endif buttonPressedReleased
  if (r.buttonPressedReleased(25)) {
    Serial.println("burada frekans 1.00 olacak");
  } //endif buttonPressedReleased
} //End loop()