Need help. always showing error when compiling

Always error,
i am newbie,just showing someone doing this project,
need to build,but can't compiling.

full codes below

#include <Rotary.h>
#include <si5351.h>
#include "Wire.h"
#include <LiquidCrystal.h>

#define OLED_RESET 4
#define ENCODER_A 3 // Encoder pin A
#define ENCODER_B 2 // Encoder pin B
#define ENCODER_BTN 11
#define LCD_RS 5
#define LCD_E 6
#define LCD_D4 7
#define LCD_D5 8
#define LCD_D6 9
#define LCD_D7 10

LiquidCrystal lcd(LCD_RS, LCD_E, LCD_D4, LCD_D5, LCD_D6, LCD_D7); // LCD - pin assignement in
Si5351 si5351;
Rotary r = Rotary(ENCODER_A, ENCODER_B);

volatile uint32_t frequency0 = 144e8L / SI5351_FREQ_MULT; //10Mhz - change to suit your needs
//just take care to count the right number of zeros.
// volatile uint32_t frequency1 = 9000000L;
// volatile uint32_t frequency2 = 10000000L;
volatile uint32_t radix = 1e6;
boolean changed_f = 0;

//
/* Interrupt service routine for /
/
encoder frequency change */
/
/
ISR(PCINT2_vect) {
unsigned char result = r.process();
if (result == DIR_CW)
set_frequency(1);
else if (result == DIR_CCW)
set_frequency(-1);
}
//
/* Change the frequency /
/
dir = 1 Increment /
/
dir = -1 Decrement */
/
/
void set_frequency(short dir)
{
if(dir == 1)
frequency0 += radix;
if(dir == -1)
frequency0 -= radix;
changed_f = 1;
}
//
/* Read the button with debouncing */
/
/
boolean get_button()
{
if(!digitalRead(ENCODER_BTN))
{
delay(20);
if(!digitalRead(ENCODER_BTN))
{
while(!digitalRead(ENCODER_BTN));
return 1;
}
}
return 0;
}

//
/* Displays the frequency */
/
/
void display_frequency()
{
uint16_t f, g;

lcd.setCursor(3, 0);
f = frequency0 / 1000000;
if(f<10)
  lcd.print(' ');
lcd.print(f);
lcd.print('.');
f = (frequency0 % 1000000)/1000;
if(f<100)
  lcd.print('0');
if(f<10)
  lcd.print('0');
lcd.print(f);
lcd.print('.');
f = frequency0 % 1000;
if(f<100)
  lcd.print('0');
if(f<10)
  lcd.print('0');
lcd.print(f);
lcd.print("Hz");

}

//
/* Displays the frequency change step */
/
/
void display_radix()
{
lcd.setCursor(9, 1);
switch(radix)
{
case 10:
lcd.print(" 10");
break;
case 100:
lcd.print(" 100");
break;
case 1000:
lcd.print(" 1K");
break;
case 10000:
lcd.print(" 10K");
break;
case 100000:
lcd.print(" 100K");
break;
case 1000000:
lcd.setCursor(9, 1);
lcd.print("1000K"); //1MHz increments
break;
}
lcd.print("Hz");
}

void setup()
{
lcd.begin(16, 2); // Initialize and clear the LCD
lcd.clear();
Wire.begin();
// Start serial and initialize the Si5351 with load capacitance and crystal freq
//0 will provide default freq of 25Mhz. If you have a 27MHz crystal put in 27000000
si5351.init(SI5351_CRYSTAL_LOAD_8PF, 0); //you could measure your crystal and put it here to correct for errors.
// Set CLK0 to output 10 MHz with a fixed PLL frequency
si5351.set_pll(SI5351_PLL_FIXED, SI5351_PLLA);
//set frequency with 1 Hz resolution
si5351.set_freq(frequency0* SI5351_FREQ_MULT, SI5351_PLL_FIXED, SI5351_CLK0);
//si5351.drive_strength(SI5351_CLK0,SI5351_DRIVE_6MA);
pinMode(ENCODER_BTN, INPUT_PULLUP);
PCICR |= (1 << PCIE2); // Enable pin change interrupt for the encoder
PCMSK2 |= (1 << PCINT18) | (1 << PCINT19);
sei();
changed_f = 1; //added to initialize si5351
display_frequency(); // Update the display
display_radix();
}

void loop()
{
// Update the display if the frequency has been changed
if(changed_f)
{
display_frequency();
si5351.set_freq(frequency0 * SI5351_FREQ_MULT, 0, SI5351_CLK0);
changed_f = 0;
}

// Button press changes the frequency change step
if(get_button())
{
  switch(radix)
  {
    case 10:
      radix = 100;
      break;
    case 100:
      radix = 1000;
      break;
    case 1000:
      radix = 10000;
      break;
      case 10000:
      radix = 100000;
      break;
    case 100000: //change these lines to tune in 1MHz increments
      radix = 1000000;
      break;
    case 1000000:
      radix = 10;
      break;
  }
  display_radix();
}   

}

when compiling, the problems always show at unsigned char for this line

ISR(PCINT2_vect) {
unsigned char result = r.process();
if (result == DIR_CW)
set_frequency(1);
else if (result == DIR_CCW)
set_frequency(-1);
}

thank you for help

Where did this code come from?
Are you sure you have the right Rotary library installed?

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.