Не помню кто поделился , но вот скетчь для цифрового тюнера
PHP код:
#include <Wire.h>


int ess 0;
int es 0;
int enc_s 1;
int enc_ss 0;
int acc 0;
int y 0;
int w 0;
byte t=0;
int g=0;

long int dt 0
long int da 0

int array1[] = {0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0};

int d0 0;
int d1 0;

int encoder0Pos 0;
int encoder0PinALast HIGH;
int n LOW;
byte encoder_mode 0// 0 - громкость.1-баланс.2-фейд.3-low.4-mid.5-hi.6-sub.7-sub-mode,8-ничего
byte controls[] = {30,15,15,10,10,10,18,2,0};
int incomingByte 0// for incoming serial data
int controlword[] = {0,0,0,0,0,0,0,0};
int controlact 0;
long f 0;
long fif 10700;
long fref 50;
int ndec 0;
long ggg 0;

byte a=69;
byte b=82
int onn 0;


void tunera3() {

Wire.beginTransmission(97); 
Wire.send(0x87); 
Wire.send(0xD1); 
Wire.endTransmission(); 
}
void tunera0() {

Wire.beginTransmission(97); 
Wire.send(0x80); 
Wire.send(d0); 
Wire.send(d1); 
Wire.send(0x64); 
Wire.send(0xAC); 
Wire.send(0xC5); 
Wire.send(0x48); 
Wire.send(0xA2); 
Wire.send(0xD1); 
Wire.endTransmission(); 
}
void setup()
{

// тут используются только digital pin2, остальные просто не убирал.

pinMode(13OUTPUT); // RL так же на STB TDA8588 убрать потом.
pinMode(2OUTPUT); // Monitor power (или может включение подсветки)
pinMode(3OUTPUT); // кнопка POWER на компе
pinMode(6INPUT); //enc
digitalWrite(6HIGH);
pinMode(7INPUT); //enc
digitalWrite(7HIGH);
pinMode(5INPUT); //enc button
digitalWrite(5HIGH);


pinMode(14INPUT); //ACC

Wire.begin(); 
Serial.begin(115200);




}
void loop()
{
if (
Serial.available() > 0) {
incomingByte Serial.read();

if (
controlact == 0) {

if (
incomingByte == 13 && != 7) {
incomingByte=0;
g=0;

for (
int i=0<= 7i++) 

controlword[i]=0;
}

Serial.print(a); 
Serial.print (b);
Serial.print("\r\n");



if (
incomingByte == 114 && == 0) {

controlword[g] = incomingByte
g++;
incomingByte=0;
}

if (
incomingByte == 102 && == 1){

controlword[g] = incomingByte
g++;
incomingByte=0;
}

if (
incomingByte >= 48 && incomingByte <= 57 && == 2) {
controlword[g] = incomingByte
g++;
incomingByte=0;
}

if (
incomingByte >= 48 && incomingByte <= 57 && == 3) {
controlword[g] = incomingByte
g++;
incomingByte=0;
}

if (
incomingByte >= 48 && incomingByte <= 57 && == 4) {
controlword[g] = incomingByte
g++;
incomingByte=0;
}

if (
incomingByte >= 48 && incomingByte <= 57 && == 5) {
controlword[g] = incomingByte
g++;
incomingByte=0;
}

if (
incomingByte >= 48 && incomingByte <= 57 && == 6) {
controlword[g] = incomingByte
g++;
incomingByte=0;
}

if (
incomingByte == 13 && == 7) {
controlword[g] = incomingByte
controlact 1;
incomingByte=0;
g=0;
}



}
if (
controlact == 1) {
f=0;

ggg=controlword[2]-48;
ggg*100000;
ggg=controlword[3]-48;
ggg*10000;
ggg=controlword[4]-48;
ggg*1000;
ggg=controlword[5]-48;
ggg*100;
ggg=controlword[6]-48;
ggg*10;


if (
>=87500 && <= 108000) {

Serial.print(f);
Serial.print("\r\n");


ndec = (fif)/fref;
for (
int i=0<= 14i++) 
{
da=ndec/2;
dt=ndec-da*2;
if (
dt == 0) {
array1[i] = 0;
} else {
array1[i] = 1;
}

ndec da;
}
d1=0;
d0=0;
for (
int i=7>= 0i--) 
{
d1=d1*2+array1[i];
}
for (
int i=15>= 8i--) 
{
d0=d0*2+array1[i];
}


if (
onn == 0) {
onn 1;

digitalWrite(2,HIGH);


Wire.beginTransmission(97);
Wire.send(0x82); 
Wire.send(0x64); 
Wire.endTransmission(); 

delay(100);


Wire.beginTransmission(97); 
Wire.send(0x80); 
Wire.send(d0); 
Wire.send(d1); 
Wire.send(0x64); 
Wire.send(0xAB); 
Wire.send(0xC5); 
Wire.send(0x48); 
Wire.send(0xA2); 
Wire.send(0xD1); 
Wire.send(0xFD); 
Wire.endTransmission(); 

delay(100);

Wire.beginTransmission(97);
Wire.send(0x87); 
Wire.send(0xD1); 
Wire.endTransmission(); 
delay(100);
}
tunera0();
tunera3();
} else {

if (
onn == 1) {
onn 0;
digitalWrite(2,LOW);

}

Serial.print(a); 
Serial.print (b);
Serial.print("\r\n");
}
controlact 0;
delay (100);
}
}