нужна помощь умельцев.
скетч написан ногой.
из него работает дисплей и кнопки. Нужно добавить сюда правильно энкодер. Как добавил результата естественно не получил
Помогите разобраться
PHP код:
#define LIMIT 10 //предел погрешности сопротивления

byte bytes[2];
int res_dt1res_d;
int encoder0PinA //Вывод А энкодера
int encoder0PinB //Вывод В энкодера
int encoder0PinC 4//Вход кнопки энкодера
int LIGHT_SENS ;   // Вход датчика освещености 
int JOYSTIK_PIN ;  // Вход для рулевых Кнопок 
int CLK 12;
int DI 11;
int CE 10;
int ADDR 130;
byte ReadByte[8];
int i;

unsigned long math_time,old_time,real_time;

void setup()
{
  
pinMode(CLKOUTPUT);
  
pinMode(DIOUTPUT);
  
pinMode(CEOUTPUT);
  
pinMode(encoder0PinAINPUT);   
  
digitalWrite(encoder0PinAHIGH);     // подключить подтягивающий резистор  
  
pinMode(encoder0PinBINPUT);   
  
digitalWrite(encoder0PinBHIGH);    // подключить подтягивающий резистор 
  
pinMode(encoder0PinCINPUT);   
  
digitalWrite(encoder0PinCHIGH);    // подключить подтягивающий резистор  
  
  
attachInterrupt(0doEncoderAFALLING);  // настроить прерывание interrupt 0 на pin 2  
  
attachInterrupt(1doEncoderBFALLING);  // настроить прерывание interrupt 0 на pin 3 
  
Serial.begin(115200); // настроить скорость com порта

  
digitalWrite(CLKLOW);
  
digitalWrite(DILOW);
  
digitalWrite(CELOW);
  
delay(1);
}
//===================================================
void loop()
{
 
hear();
 
ReadDisplay();
 
Encoder();
 
delay(10);
}
//==================================================
void Send_Adress()
{
Byte_Out(DICLKADDR);
delayMicroseconds(5);
digitalWrite(CEHIGH);
}
//==================================================
void Byte_Out(uint8_t DIuint8_t CLKbyte val)
{
int idx;
for (
idx 0idx 8idx++)
{
delayMicroseconds(10);
if (((
val << idx) & B10000000) == 128digitalWrite(DIHIGH); else digitalWrite(DILOW);
// digitalWrite(DI, val & (1 << idx)); /
digitalWrite(CLKHIGH); // педний фронт синхроимульса
delayMicroseconds(15);
digitalWrite(CLKLOW); // задний фронт синхроимульса
}
}
//==================================================
void hear()
{

res_d analogRead(JOYSTIK_PIN); // прочитать данные АЦП
delay(50);
res_dt1 analogRead(JOYSTIK_PIN); // прочитать данные АЦП
//old_time = millis();
/*math_time = 0;
while(math_time < 300 && (res_dt1 > res_d-LIMIT && res_dt1 < res_d+LIMIT ))
{
//real_time = millis(); //получить реальное время
math_time = real_time - old_time; //считаем длительность нажатия
res_dt1 = analogRead(JOYSTIK_PIN); // прочитать данные АЦП
}
*/
    
if (abs(res_dt1-res_d)<=20 and res_dt1<1000 //если нет дребезга и что-то есть
     

        
bytes[0] = res_dt1 255;          // преобразовать в 2-байта  
        
bytes[1] = (res_dt1 768) >> 8;
      if ((
bytes[1]>=-3) || (bytes[1]<=-7))    
      {
        
Serial.writebytes,2); // отправить прочитаное значение компьютеру 
        
delay(10);
        
Serial.flush();        
      }
     }   
      
/*
if( math_time > 50) //если нет дребезга то короткое нажатие
{
  bytes[0] = res_d & 255; // преобразовать в 2-байта
  bytes[1] = (res_d & 768) >> 8;
  if (bytes[1]==1) // выделяем полезную информацию
   {
    Serial.write( bytes,2); // отправить прочитаное значение компьютеру
    delay(10);
    Serial.flush();  
   }
}*/
}
//===============================================
void ReadDisplay()
{
if (
Serial.available() > 7)
{
for (
08i++)
{
(
ReadByte[i]) = Serial.read() ; // принимаем данные с компа в массив
}
Serial.flush(); //очистить входной буфер USB

Send_Adress(); // отправляем адрес устройства

for (08i++)
{
Byte_Out(DICLKReadByte[i]); //отправляем данные в шину в шину
}
digitalWrite(CELOW); // запретить прием данных подчиненым
}
delay(1);
}
//*******************Центральная кнопка***********************
void Encoder()  
{    
 if(
digitalRead(encoder0PinC)==LOW
   {
     
bytes[1]=8;
      
Serial.writebytes,2);  
      while(
digitalRead(encoder0PinC)==LOW){delay(50);}
       
bytes[1]=7
   }
}   
//*******************обработка прерывания***********************
void doEncoderA()
{
cli();
  if(
digitalRead(encoder0PinB)==HIGH){bytes[0]=25;}else{bytes[0]=5;} 
      
bytes[1] = 0;
  
Serial.writebytes,2);
sei(); 
}  
//*******************обработка прерывания***********************
void doEncoderB()
{
cli();
    if(
digitalRead(encoder0PinA)==HIGH){bytes[0]=5;}else{bytes[0]=25;}
      
bytes[1] = 0;
    
Serial.writebytes,2);
sei();