<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[forum.rcl-radio.ru &mdash; Аудиопроцессор - LC75343M]]></title>
	<link rel="self" href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=428&amp;type=atom" />
	<updated>2022-07-20T08:08:48Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.rcl-radio.ru/viewtopic.php?id=428</id>
		<entry>
			<title type="html"><![CDATA[Re: Аудиопроцессор - LC75343M]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=6474#p6474" />
			<content type="html"><![CDATA[<p>Спасибо! На выходных буду проверять.<br />Отпишусь</p>]]></content>
			<author>
				<name><![CDATA[Cat777]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1699</uri>
			</author>
			<updated>2022-07-20T08:08:48Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=6474#p6474</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Аудиопроцессор - LC75343M]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=6465#p6465" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>А с R2A15908SP поможете?</p></blockquote></div><p> </p><p>Сложно сказать, памяти мало, и библиотеку надо бы переписать.</p><p>Тестируйте:</p><div class="codebox"><pre><code>// LC75343M
#define CE 3
#define DI 2
#define CL 4
// IR
#define IR_2 0x2FDB24D // Кнопка menu
#define IR_4 0x2FD906F // Кнопка &gt;
#define IR_5 0x2FDF20D // Кнопка &lt;
#define IR_6 0x2FD6A95 // Кнопка IN
#define IR_7 0x2FDF00F // Кнопка MUTE
#define IR_8 0x2FD00FF // Кнопка STANDBY (POWER)
 
#include &lt;Wire.h&gt; 
#include &lt;OLED_I2C.h&gt;           // http://rcl-radio.ru/wp-content/uploads/2022/01/OLED_I2C.zip
#include &lt;Encoder.h&gt;            // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip    
#include &lt;EEPROM.h&gt;
#include &lt;MsTimer2.h&gt;           // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip       
#include &lt;boarddefs.h&gt;          // входит в состав библиотеки IRremote
#include &lt;IRremote.h&gt;           // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip
#include &lt;DS3231.h&gt;             // http://rcl-radio.ru/wp-content/uploads/2022/07/DS3231.zip
 
 
  DS3231 clock;RTCDateTime DateTime;
  OLED  myOLED(SDA, SCL, 8);
  extern uint8_t SmallFont[],BigNumbers[];
  IRrecv irrecv(12); // указываем вывод модуля IR приемника
  Encoder myEnc(9, 8);// DT, CLK
  decode_results ir; 
 
  unsigned long times,oldPosition  = -999,newPosition;
  int menu,vol_reg,mute_reg,in_reg,bass_reg,s_bass_reg,treb_reg,vol_old,mid_reg;
  int gain0,gain1,gain2,gain3,gain4,gain5;
  int hour,minut,secon,old_sec,power,ball,chl,chr,i1;
  byte w,w2,gr1,gr2,www;
  byte a[6];

  byte input_m[8]={0b0001,0b1001,0b0101,0b1101,0b0011,0b0111,0b1111};
  byte input_gain_m[16]{0b0000,0b1000,0b0100,0b1100,0b0010,0b1010,0b0110,0b1110,0b0001,0b1001,0b0101,0b1101,0b0011,0b1011,0b0111,0b1111};
  byte volume_m[64]{0b000000,0b100000,0b010000,0b110000,0b001000,0b101000,0b011000,0b111000,0b000100,0b100100,0b010100,0b110100,0b001100,
0b101100,0b011100,0b111100,0b000010,0b100010,0b010010,0b110010,0b001010,0b101010,0b011010,0b111010,0b000110,0b100110,0b010110,0b110110,
0b001110,0b101110,0b011110,0b111110,0b000001,0b100001,0b010001,0b110001,0b001001,0b101001,0b011001,0b111001,0b000101,0b100101,0b010101,
0b110101,0b001101,0b101101,0b011101,0b111101,0b000011,0b100011,0b010011,0b110011,0b001011,0b101011,0b011011,0b111011,0b000111,0b100111,
0b010111,0b110111,0b001111,0b101111,0b011111,0b111111};
  byte ch_sel_m[3]{0b10,0b01,0b11};
  byte tembr_m[11]{0b1010,0b0010,0b1100,0b0100,0b1000,0b0000,0b1001,0b0101,0b1101,0b0011,0b1011};
 
 
 
void setup(){
  Wire.begin();Wire.setClock(400000L);
  pinMode(CE,OUTPUT);pinMode(DI,OUTPUT);pinMode(CL,OUTPUT);
  digitalWrite(CL,LOW);digitalWrite(CE,LOW);digitalWrite(DI,LOW);
  irrecv.enableIRIn();clock.begin();
  myOLED.begin();
  myOLED.setBrightness(100);
  
  pinMode(10,INPUT);        // КНОПКА МЕНЮ  SW энкодера
  pinMode(11,INPUT_PULLUP); // КНОПКА INPUT
  pinMode(7,INPUT_PULLUP);  // КНОПКА MUTE 
  pinMode(13,OUTPUT);       // ВЫХОД УПРАВЛЕНИЯ STANDBY
  pinMode(A0,INPUT_PULLUP); // КНОПКА POWER
  
  MsTimer2::set(3, to_Timer);MsTimer2::start();
  //  clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
  if(EEPROM.read(100)!=0){for(int i=0;i&lt;101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении  
  myOLED.clrScr();
  myOLED.setFont(SmallFont);
  myOLED.print(F(&quot;Sound Processors&quot;), CENTER, 10);
  myOLED.print(F(&quot;LC75343M&quot;), CENTER, 30);
  myOLED.update();
  delay(2000);
  vol_reg = EEPROM.read(0);treb_reg = EEPROM.read(1);mid_reg = EEPROM.read(2);bass_reg = EEPROM.read(3);
   gain1 = EEPROM.read(4);gain2 = EEPROM.read(5);gain3 = EEPROM.read(6);gain4 = EEPROM.read(7);gain5 = EEPROM.read(8);
    switch(in_reg){
     case 0: gain0 = gain1;break;
     case 1: gain0 = gain2;break;
     case 2: gain0 = gain3;break;
     case 3: gain0 = gain4;break;
     case 4: gain0 = gain5;break;}
  delay(100);au();
  }
 
void loop(){
/// IR ////////////////////////////////////////
   if ( irrecv.decode( &amp;ir )) {irrecv.resume();times=millis();w=1;w2=1;}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
   if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта 

//////// BUTTON //////////////////////////////////////////////////////////////////////////////////////////////////////////////
   if(power==0){
   if(mute_reg==0){ 
    if(digitalRead(10)==LOW||ir.value==IR_2){menu++;gr1=0;gr2=0;cl();delay(200);times=millis();w=1;w2=1;if(menu&gt;4){menu=0;}}
    if(digitalRead(11)==LOW||ir.value==IR_6){in_reg++;menu=5;cl();times=millis();w=1;w2=1;www=1;if(in_reg&gt;4){in_reg=0;}}
    }
    if((digitalRead(7)==LOW||ir.value==IR_7)&amp;&amp;mute_reg==0){mute_reg=1;vol_old=vol_reg;vol_reg=0;w=1;menu=100;cl();au();myOLED.clrScr();myOLED.setFont(SmallFont);myOLED.print(F(&quot;MUTE&quot;), CENTER, 25);myOLED.update();}
    if((digitalRead(7)==LOW||ir.value==IR_7)&amp;&amp;mute_reg==1){mute_reg=0;vol_reg=vol_old;w=1;w=1;menu=0;cl();au();}  
    }// power 
/// POWER ////////////////////////////////////
    if((digitalRead(A0)==LOW||ir.value==IR_8)&amp;&amp;power==0){power=1;menu=100;myOLED.setBrightness(1);cl();myEnc.write(0);vol_old=vol_reg;vol_reg=0;
    myOLED.clrScr();myOLED.setFont(SmallFont);myOLED.print(F(&quot;POWER OFF&quot;), CENTER, 10);myOLED.update();
    au();delay(2000);cl();}
    
    if((digitalRead(A0)==LOW||ir.value==IR_8)&amp;&amp;power==1&amp;&amp;digitalRead(10)==HIGH){power=0;menu=0;myOLED.setBrightness(100);cl();myEnc.write(0);vol_reg=vol_old;w=1;
    myOLED.clrScr();myOLED.setFont(SmallFont);myOLED.print(F(&quot;POWER ON&quot;), CENTER, 10);myOLED.update();
    au();delay(2000);cl();}  
    /// standby output 
    if(power==1){digitalWrite(13,LOW);}else{digitalWrite(13,HIGH);} 
    
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//////// VOLUME //////////////////////////////////////////////////////////////////////////////////////////////////////////////  
  if(menu==0){
   if(newPosition != oldPosition){oldPosition = newPosition;vol_reg=vol_reg+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;vol_func();au();}
 
   if(ir.value==IR_4){vol_reg++;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;vol_func();au();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){vol_reg++;gr2=0;cl();times=millis();w=1;w2=1;vol_func();au();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_5){vol_reg--;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;vol_func();au();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){vol_reg--;gr1=0;cl();times=millis();w=1;w2=1;vol_func();au();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
  if(w==1){w=0;
  myOLED.clrScr();
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;VOLUME&quot;), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(vol_reg-4, 75, 0);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;IN&quot;), LEFT, 10);
  myOLED.printNumI(in_reg+1, 20, 10);myOLED.print(F(&quot;GAIN&quot;), LEFT, 20);myOLED.printNumI(gain0, 30, 20);
  myOLED.drawLine(0, 30, 128, 30);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;TREBLE&quot;), LEFT, 35);myOLED.printNumI(treb_reg*2-10, 75, 35);myOLED.print(F(&quot;dB&quot;), RIGHT, 35);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;MIDDLE&quot;), LEFT, 45);myOLED.printNumI(mid_reg*2-10, 75, 45);myOLED.print(F(&quot;dB&quot;), RIGHT, 45);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;BASS&quot;), LEFT, 55);myOLED.printNumI(bass_reg*2-10, 75, 55);myOLED.print(F(&quot;dB&quot;), RIGHT, 55);
  myOLED.update();
  }}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////  

//////// TREBLE //////////////////////////////////////////////////////////////////////////////////////////////////////////////  
  if(menu==1){
  if (newPosition != oldPosition){oldPosition = newPosition;treb_reg=treb_reg+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;treb_func();au();}
 
   if(ir.value==IR_4){treb_reg++;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;treb_func();au();}// кнопка &gt; 
   if(ir.value==IR_5){treb_reg--;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;treb_func();au();}// кнопка &lt;
 
  if(w==1){w=0;
  myOLED.clrScr();
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;TREBLE&quot;), LEFT, 0);;myOLED.setFont(BigNumbers);myOLED.printNumI(treb_reg*2-10, 75, 0);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;dB&quot;), RIGHT, 20);
  myOLED.drawLine(0, 30, 128, 30);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;MIDDLE&quot;), LEFT, 35);myOLED.printNumI(mid_reg*2-10, 75, 35);myOLED.print(F(&quot;dB&quot;), RIGHT, 35);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;BASS&quot;), LEFT, 45);myOLED.printNumI(bass_reg*2-10, 75, 45);myOLED.print(F(&quot;dB&quot;), RIGHT, 45);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;BALANCE&quot;), LEFT, 55);myOLED.printNumI(ball*2, 75, 55);myOLED.print(F(&quot;dB&quot;), RIGHT, 55);myOLED.print(F(&quot;dB&quot;), RIGHT, 55);
  myOLED.update();
  }}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 

//////// MIDDLE //////////////////////////////////////////////////////////////////////////////////////////////////////////////  
  if(menu==2){
  if (newPosition != oldPosition){oldPosition = newPosition;mid_reg=mid_reg+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;mid_func();au();}
 
   if(ir.value==IR_4){mid_reg++;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;mid_func();au();}// кнопка &gt; 
   if(ir.value==IR_5){mid_reg--;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;mid_func();au();}// кнопка &lt;
 
  if(w==1){w=0;
  myOLED.clrScr();
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;MIDDLE&quot;), LEFT, 0);;myOLED.setFont(BigNumbers);myOLED.printNumI(mid_reg*2-10, 75, 0);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;dB&quot;), RIGHT, 20);
  myOLED.drawLine(0, 30, 128, 30);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;BASS&quot;), LEFT, 35);myOLED.printNumI(bass_reg*2-10, 75, 35);myOLED.print(F(&quot;dB&quot;), RIGHT, 35);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;BALANCE&quot;), LEFT, 45);myOLED.printNumI(ball*2, 75, 45);myOLED.print(F(&quot;dB&quot;), RIGHT, 45);myOLED.print(F(&quot;dB&quot;), RIGHT, 45);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;VOLUME&quot;), LEFT, 55);myOLED.printNumI(vol_reg-4, 75, 55);
  myOLED.update();
  }}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 

//////// BASS //////////////////////////////////////////////////////////////////////////////////////////////////////////////  
  if(menu==3){
  if (newPosition != oldPosition){oldPosition = newPosition;bass_reg=bass_reg+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;bass_func();au();}
 
   if(ir.value==IR_4){bass_reg++;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;bass_func();au();}// кнопка &gt; 
   if(ir.value==IR_5){bass_reg--;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;bass_func();au();}// кнопка &lt;
 
  if(w==1){w=0;
  myOLED.clrScr();
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;BASS&quot;), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(bass_reg*2-10, 75, 0);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;dB&quot;), RIGHT, 20);
  myOLED.drawLine(0, 30, 128, 30);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;BALANCE&quot;), LEFT, 35);myOLED.printNumI(ball*2, 75, 35);myOLED.print(F(&quot;dB&quot;), RIGHT, 35);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;VOLUME&quot;), LEFT, 45);myOLED.printNumI(vol_reg-4, 75, 45);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;TREBLE&quot;), LEFT, 55);myOLED.printNumI(treb_reg*2-10, 75, 55);myOLED.print(F(&quot;dB&quot;), RIGHT, 55);
  myOLED.update();
  }}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 

//////// BALANCE //////////////////////////////////////////////////////////////////////////////////////////////////////////////  
  if(menu==4){
  if (newPosition != oldPosition){oldPosition = newPosition;ball=ball+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ball_fun();au();}
 
   if(ir.value==IR_4){ball++;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ball_fun();au();}// кнопка &gt; 
   if(ir.value==IR_5){ball--;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ball_fun();au();}// кнопка &lt;
 
  if(w==1){w=0;
  myOLED.clrScr();
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;BALANCE&quot;), LEFT, 0);;myOLED.setFont(BigNumbers);myOLED.printNumI(abs(ball*2), 75, 0);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;dB&quot;), RIGHT, 0);
  if(ball&lt;=0){myOLED.print(F(&quot;LCH&quot;), 35, 20);}
  if(ball&gt;=0){myOLED.print(F(&quot;RCH&quot;), RIGHT, 20);}
  myOLED.drawLine(0, 30, 128, 30);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;VOLUME&quot;), LEFT, 35);myOLED.printNumI(vol_reg-4, 75, 35);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;TREBLE&quot;), LEFT, 45);myOLED.printNumI(treb_reg*2-10, 75, 45);myOLED.print(F(&quot;dB&quot;), RIGHT, 45);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;BASS&quot;), LEFT, 55);myOLED.printNumI(bass_reg*2-10, 75, 55);myOLED.print(F(&quot;dB&quot;), RIGHT, 55);
  myOLED.update();
  }}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////// INPUT GAIN ///////////////////////////////////////////////////////////////////
 if(menu==5){
  switch(in_reg){
     case 0: gain0 = gain1;break;
     case 1: gain0 = gain2;break;
     case 2: gain0 = gain3;break;
     case 3: gain0 = gain4;break;
     case 4: gain0 = gain5;break;
     }
   if(ir.value==IR_4){gain0++;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;gain_func();au();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){gain0++;gr2=0;cl();times=millis();w=1;w2=1;gain_func();au();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_5){gain0--;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;gain_func();au();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){gain0--;gr1=0;cl();times=millis();w=1;w2=1;gain_func();au();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
  if (newPosition != oldPosition){oldPosition = newPosition;gain0=gain0+newPosition;myEnc.write(0);newPosition=0;times=millis();www=1;w=1;w2=1;gain_func();}
  switch(in_reg){
     case 0: gain1 = gain0;break;
     case 1: gain2 = gain0;break;
     case 2: gain3 = gain0;break;
     case 3: gain4 = gain0;break;
     case 4: gain5 = gain0;break;
     }  
  if(www==1){au();www=0;}
 
  if(w==1){w=0;
  myOLED.clrScr();
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;INPUT&quot;), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(in_reg+1, 65, 0);
  myOLED.drawLine(0, 30, 128, 30);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;GAIN&quot;), LEFT, 35);myOLED.setFont(BigNumbers);myOLED.printNumI(gain0, 65, 35);
  myOLED.update();
  }} 

/////////////////// ЧАСЫ ///////////////////////////////////////////////////////////////////
if(power==1){
  DateTime = clock.getDateTime();hour = DateTime.hour;minut = DateTime.minute;secon = DateTime.second;   
     a[0]=hour/10;
     a[1]=hour%10;
     a[2]=minut/10;
     a[3]=minut%10;
     a[4]=secon/10;
     a[5]=secon%10;
  if(old_sec!=secon){
  myOLED.clrScr();
  myOLED.setFont(BigNumbers);myOLED.printNumI(a[0], 15, 5);myOLED.printNumI(a[1], 30, 5);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;:&quot;), 45, 15);
  myOLED.setFont(BigNumbers);myOLED.printNumI(a[2], 50, 5);myOLED.printNumI(a[3], 65, 5);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;:&quot;), 80, 15);
  myOLED.setFont(BigNumbers);myOLED.printNumI(a[4], 85, 5);myOLED.printNumI(a[5], 100, 5);
  myOLED.update();
  } 
  old_sec=secon;
//// set time ////
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(11)==LOW){hour++;if(hour&gt;23){hour=0;} clock.setDateTime(2022, 7, 15, hour, minut, secon);delay(100);}// input button HH++
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(7)==LOW){minut++;if(minut&gt;59){minut=0;} clock.setDateTime(2022, 7, 15, hour, minut, secon);delay(100);}// mute MM++
}
  
////////////////// EEPROM //////////////////////////////////////////////////////////////
 if(millis()-times&gt;5000 &amp;&amp; w2==1 &amp;&amp; mute_reg==0){
     EEPROM.update(0,vol_reg);EEPROM.update(1,treb_reg);EEPROM.update(2,mid_reg);EEPROM.update(3,bass_reg);
     EEPROM.update(4,gain1);EEPROM.update(5,gain2);EEPROM.update(6,gain3);EEPROM.update(7,gain4);EEPROM.update(8,gain5);
     EEPROM.update(9,in_reg);EEPROM.update(10,ball+4);
     cl();menu=0;w2=0;w=1;}    
      
} // loop end
 
void gain_func(){{if(gain0&lt;0){gain0=0;}if(gain0&gt;15){gain0=15;}}}
void ball_fun(){if(ball&gt;4){ball=4;}if(ball&lt;-4){ball=-4;}}
void treb_func(){if(treb_reg&lt;0){treb_reg=0;}if(treb_reg&gt;10){treb_reg=10;}}
void mid_func(){if(mid_reg&lt;0){mid_reg=0;}if(mid_reg&gt;10){mid_reg=10;}}
void bass_func(){if(bass_reg&lt;0){bass_reg=0;}if(bass_reg&gt;10){bass_reg=10;}}
void vol_func(){if(vol_reg&lt;4){vol_reg=4;}if(vol_reg&gt;63){vol_reg=63;}} 
void to_Timer(){newPosition = myEnc.read()/4;} 
void cl(){myOLED.clrScr();ir.value=0;delay(300);}
void au(){
   Write(in_reg,gain0,63-vol_reg-4+ball,  0 , 10-treb_reg,10-mid_reg,10-bass_reg );
   Write(in_reg,gain0,63-vol_reg-4-ball,  1 , 10-treb_reg,10-mid_reg,10-bass_reg ); 
  }
  
 
void Write(byte input,byte input_gain,byte volume,byte ch_sel,byte treb,byte mid,byte bass){
  digitalWrite(CL,LOW);
  digitalWrite(CE,LOW);
  byte addr = 0b01000001;
     for(int i = 7; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (addr &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }  
  digitalWrite(CE,HIGH); 
      for(int i = 3; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (input_m[input] &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }
      for(int i = 3; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (input_gain_m[input_gain] &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }  
      for(int i = 5; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (volume_m[volume] &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }  
      for(int i = 1; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (ch_sel_m[ch_sel] &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }  
      for(int i = 3; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (tembr_m[treb] &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }        
      for(int i = 3; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (tembr_m[mid] &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }    
      for(int i = 3; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (tembr_m[bass] &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }  
      for(int i = 3; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (0b1101 &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }                                      
   digitalWrite(CL,LOW);
   digitalWrite(CE,LOW);             
  }</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2022-07-19T13:40:33Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=6465#p6465</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Аудиопроцессор - LC75343M]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=6449#p6449" />
			<content type="html"><![CDATA[<p>Нет ещё. Хотелось бы сразу полный тест сделать. С индикатором. Я подожду.<br />А с R2A15908SP поможете?</p>]]></content>
			<author>
				<name><![CDATA[Cat777]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1699</uri>
			</author>
			<updated>2022-07-17T12:27:37Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=6449#p6449</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Аудиопроцессор - LC75343M]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=6448#p6448" />
			<content type="html"><![CDATA[<p>Немного нужно будет подождать (1-3 дня), я пока работаю над LC75421M с oled экраном, этот проект аналогичен Вашему, и переделать его под Ваш аудиопроцессор будет не долго.</p><p>Вы тестировали аудиопроцессор на тестовом скетче?<br />Тестовый скетч:<br /><a href="http://rcl-radio.ru/?p=110883">http://rcl-radio.ru/?p=110883</a></p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2022-07-17T12:19:15Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=6448#p6448</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Аудиопроцессор - LC75343M]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=6445#p6445" />
			<content type="html"><![CDATA[<p>Добрый день.<br />Я получил 4 микросхемы на всякий случай заказывал в 2-х местах) и готов протестировать в макете.<br />И есть ещё просьба - Вы не могли бы так же написать скетч под OLED для этой конструкции?</p><p><a href="http://rcl-radio.ru/?p=83478">http://rcl-radio.ru/?p=83478</a></p><p>Так же получил 4 штуки и готов к тесту.</p><p>Спасибо</p>]]></content>
			<author>
				<name><![CDATA[Cat777]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1699</uri>
			</author>
			<updated>2022-07-17T06:11:22Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=6445#p6445</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Аудиопроцессор - LC75343M]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=6320#p6320" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>liman324 пишет:</cite><blockquote><p>Хорошо. Как получите все компоненты оставьте сообщение. Скетч я быстро напишу.</p></blockquote></div><p>Непременно!<br />Спасибо!</p>]]></content>
			<author>
				<name><![CDATA[Cat777]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1699</uri>
			</author>
			<updated>2022-06-19T08:39:52Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=6320#p6320</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Аудиопроцессор - LC75343M]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=6319#p6319" />
			<content type="html"><![CDATA[<p>И еще кое что. Есть задумка сделать на таком же OLED дисплее спектроанализатор полос на 7 минимум. Я не знаю, потянет ли Arduino nano обработку сигнала и скорость отображения на дисплее. Те варианты, что мне попадались в интернете, явно не то, что хотелось бы. На одних скорость никакая, на других вообще нет соответствия обрабатываемым частотам. Короче - не нашёл то, что хотелось бы. Единственный анализатор, который мне, в общем-то, понравился, это OLEDiUNO одного болгарина. Но он продаёт готовые конструкции. К тому же на голом контроллере (даже не знаю, какой он использует). Но выглядит красиво.<br />Неплохо было бы, если такой анализатор возможен (на символьных LCD дисплеях есть же хорошие реализации!), использовать его в качестве скринсейвера к контроллеру регулятора. Так, например, сделано в Ctrl-Amp-1 питерца Signus. Да и не только у этой конструкции встречается такое. Короче - хочется и функционала достойного, и &quot;красивости&quot;. Готов всячески помогать тестированием и не только. Возможностей для этого предостаточно.</p>]]></content>
			<author>
				<name><![CDATA[Cat777]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1699</uri>
			</author>
			<updated>2022-06-19T08:38:47Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=6319#p6319</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Аудиопроцессор - LC75343M]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=6318#p6318" />
			<content type="html"><![CDATA[<p>Хорошо. Как получите все компоненты оставьте сообщение. Скетч я быстро напишу.</p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2022-06-19T08:28:30Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=6318#p6318</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Аудиопроцессор - LC75343M]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=6317#p6317" />
			<content type="html"><![CDATA[<p>Подтверждаю. Заказал у 2-х продавцов микросхемы (чтобы побыстрее получить для теста и применения). Несколько дней прошло с момента заказа. Думаю, неделя-полторы - получу заказ.<br />Для теста макет уже приготовил. Рассчитываю на 5 входов, тембра - или только низ-верх, или низ-середина-верх. Желательно иметь выбор к установках Arduino (в скетче). Ну и плюс часы в режиме Standby и не только (что то типа скринсейвера, что ли).<br />Так что подтверждаю на все 100%.<br />Жду с нетерпением!</p><p>P.S.: Очень хотелось бы подробные комментарии в скетче.</p>]]></content>
			<author>
				<name><![CDATA[Cat777]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1699</uri>
			</author>
			<updated>2022-06-19T08:27:05Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=6317#p6317</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Аудиопроцессор - LC75343M]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=6302#p6302" />
			<content type="html"><![CDATA[<p>Cat777 подтвердите что Вы готовы протестировать. Без подтверждения я не могу начать написание скетча.</p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2022-06-18T10:13:58Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=6302#p6302</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Аудиопроцессор - LC75343M]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=6271#p6271" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>А возможно сделать по типу LC75341 и LC75342 на OLED дисплее и для этой микросхемы? Ещё бы и с часами, как здесь...<br />Готов протестировать полностью проект</p></blockquote></div><p>Постараюсь в ближайшие дни сделать, с Вас тестирование.</p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2022-06-14T08:55:02Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=6271#p6271</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Аудиопроцессор - LC75343M]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=6266#p6266" />
			<content type="html"><![CDATA[<p>А возможно сделать по типу LC75341 и LC75342 на OLED дисплее и для этой микросхемы? Ещё бы и с часами, как здесь...<br />Готов протестировать полностью проект</p>]]></content>
			<author>
				<name><![CDATA[Cat777]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1699</uri>
			</author>
			<updated>2022-06-13T13:21:03Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=6266#p6266</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Аудиопроцессор - LC75343M]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=4927#p4927" />
			<content type="html"><![CDATA[<p>Доработка 2</p><p>Вывод в меню регулировки громкости часов</p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2021/12/1c53990307d23130c105b4a999b297f6.png" alt="http://forum.rcl-radio.ru/uploads/images/2021/12/1c53990307d23130c105b4a999b297f6.png" /></span> </p><div class="codebox"><pre><code>#define CE 3
#define DI 2
#define CL 4

#define IR1    0x33B850AF // main/setting menu
#define IR2    0x33B820DF // button encoder
#define IR3    0x33B8946B // mute
#define IR4    0x33B810EF // &gt;&gt;&gt;
#define IR5    0x33B8E01F // &lt;&lt;&lt;
#define IR6    0x33B844BB // INPUT
#define POWER  0x33B800FF // STANDBY

#define BRIG_L 50
#define BRIG_H 250

#include &lt;Wire.h&gt; 
#include &lt;LiquidCrystal_I2C.h&gt; // http://forum.rcl-radio.ru/misc.php?action=pan_download&amp;item=45&amp;download=1
#include &lt;Encoder.h&gt;           // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip       
#include &lt;EEPROM.h&gt;
#include &lt;MsTimer2.h&gt;          // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip 
#include &lt;boarddefs.h&gt;         // входит в состав библиотеки IRremote
#include &lt;IRremote.h&gt;          // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip
#include &lt;DS3231.h&gt;            // http://rcl-radio.ru/wp-content/uploads/2021/10/DS3231.zip

LiquidCrystal_I2C lcd(0x27,16,2);  // Устанавливаем дисплей
Encoder myEnc(8, 9);// DT, CLK
IRrecv irrecv(12); // указываем вывод модуля IR приемника
decode_results ir; 
DS3231 clock;RTCDateTime DateTime;

byte input_m[8]={0b0001,0b1001,0b0101,0b1101,0b0011,0b0111,0b1111};
byte input_gain_m[16]{0b0000,0b1000,0b0100,0b1100,0b0010,0b1010,0b0110,0b1110,0b0001,0b1001,0b0101,0b1101,0b0011,0b1011,0b0111,0b1111};
byte volume_m[64]{0b000000,0b100000,0b010000,0b110000,0b001000,0b101000,0b011000,0b111000,0b000100,0b100100,0b010100,0b110100,0b001100,
0b101100,0b011100,0b111100,0b000010,0b100010,0b010010,0b110010,0b001010,0b101010,0b011010,0b111010,0b000110,0b100110,0b010110,0b110110,
0b001110,0b101110,0b011110,0b111110,0b000001,0b100001,0b010001,0b110001,0b001001,0b101001,0b011001,0b111001,0b000101,0b100101,0b010101,
0b110101,0b001101,0b101101,0b011101,0b111101,0b000011,0b100011,0b010011,0b110011,0b001011,0b101011,0b011011,0b111011,0b000111,0b100111,
0b010111,0b110111,0b001111,0b101111,0b011111,0b111111};
byte ch_sel_m[3]{0b10,0b01,0b11};
byte tembr_m[11]{0b1010,0b0010,0b1100,0b0100,0b1000,0b0000,0b1001,0b0101,0b1101,0b0011,0b1011};
byte v1[8] = {0b00111,0b00111,0b00111,0b00111,0b00111,0b00111,0b00111,0b00111};
byte v2[8] = {0b00111,0b00111,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000};      
byte v3[8] = {0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b11111,0b11111};
byte v4[8] = {0b11111,0b11111,0b00000,0b00000,0b00000,0b00000,0b11111,0b11111};
byte v5[8] = {0b11100,0b11100,0b00000,0b00000,0b00000,0b00000,0b11100,0b11100};
byte v6[8] = {0b11100,0b11100,0b11100,0b11100,0b11100,0b11100,0b11100,0b11100};
byte v7[8] = {0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b00111,0b00111};
byte v8[8] = {0b11111,0b11111,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000}; 
unsigned long times,oldPosition  = -999,newPosition;
int menu0=100,menu,vol_reg,in_reg,mute_reg,treb_reg,mid_reg,bass_reg,ball,fun,chl,chr,i,gain0,gain1,gain2,gain3,gain4,gain5,vol_old;
int hour,secon,minut;
byte a[6],d1,d2,d3,d4,d5,d6,e1,e2,e3,w,w2,x,www,gr1,gr2,power;


void setup() {
  pinMode(CE,OUTPUT);pinMode(DI,OUTPUT);pinMode(CL,OUTPUT);
  digitalWrite(CL,LOW);digitalWrite(CE,LOW);digitalWrite(DI,LOW);
  irrecv.enableIRIn();lcd.init();lcd.backlight();Wire.begin();clock.begin(); 
  lcd.createChar(1, v1);lcd.createChar(2, v2);lcd.createChar(3, v3);lcd.createChar(4, v4);
  lcd.createChar(5, v5);lcd.createChar(6, v6);lcd.createChar(7, v7);lcd.createChar(8, v8);
   //  clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
   pinMode(10,INPUT);// encoder SW
   pinMode(11,INPUT_PULLUP);// input button
   pinMode(A0,INPUT_PULLUP);// menu set/main button
   pinMode(A1,INPUT_PULLUP);// mute button
   pinMode(A2,INPUT_PULLUP);// POWER
   pinMode(6,OUTPUT);       // PWM output
   pinMode(13,OUTPUT);      // OUTPUT STANDBY
   analogWrite(6,BRIG_H);
  MsTimer2::set(1, to_Timer);MsTimer2::start();
  if(EEPROM.read(100)!=0){for(int i=0;i&lt;101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении  
  Serial.begin(9600);
  vol_reg = EEPROM.read(0);treb_reg = EEPROM.read(1);mid_reg = EEPROM.read(2);bass_reg = EEPROM.read(3);
   gain1 = EEPROM.read(4);gain2 = EEPROM.read(5);gain3 = EEPROM.read(6);gain4 = EEPROM.read(7);gain5 = EEPROM.read(8);
  in_reg = EEPROM.read(9);ball = EEPROM.read(10)-4;
    switch(in_reg){
     case 0: gain0 = gain1;break;
     case 1: gain0 = gain2;break;
     case 2: gain0 = gain3;break;
     case 3: gain0 = gain4;break;
     case 4: gain0 = gain5;break;}
  delay(100);audio_R();audio_L();
  lcd.setCursor(4,0);lcd.print(&quot;LC75343M&quot;); lcd.setCursor(0,1);lcd.print(&quot;audio  processor&quot;);
  delay(1000);lcd.clear();
  }

void loop() {
 /// IR ////////////////////////////////////////
   if ( irrecv.decode( &amp;ir )) {Serial.print(&quot;0x&quot;);Serial.println( ir.value,HEX);irrecv.resume();times=millis();w=1;w2=1;}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
   if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта  
 /// BUTTON ///////////////////////////////////
 if(power==0){
   if((digitalRead(10)==LOW||ir.value==IR2)&amp;&amp;menu0==100){menu++;menu0=100;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu&gt;3){menu=0;}}
   if((digitalRead(10)==LOW||ir.value==IR2)&amp;&amp;menu==100){menu0++;menu=100;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu0&gt;1){menu0=0;}}
   if((digitalRead(11)==LOW||ir.value==IR6)){in_reg++;cl();times=millis();w=1;w2=1;if(in_reg&gt;4){in_reg=0;}audio_R();audio_L();lcd.setCursor(4,0);lcd.print(&quot;INPUT &quot;);lcd.print(in_reg+1);delay(1000);cl();}
   if((digitalRead(A0)==LOW||ir.value==IR1)&amp;&amp;menu&lt;100){menu=100;menu0=0;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;lcd.setCursor(2,0);lcd.print(&quot;SETTING MENU&quot;);delay(1000);cl();}
   if((digitalRead(A0)==LOW||ir.value==IR1)&amp;&amp;menu0&lt;100){menu0=100;menu=0;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;lcd.setCursor(3,0);lcd.print(&quot;MAIN MENU&quot;);delay(1000);cl();}
   if((digitalRead(A1)==LOW||ir.value==IR3)&amp;&amp;mute_reg==0){mute_reg=1;menu0=100;menu=100;cl();vol_old=vol_reg;vol_reg=0;audio_R();audio_L();lcd.setCursor(6,0);lcd.print(&quot;MUTE&quot;);}
   if((digitalRead(A1)==LOW||ir.value==IR3)&amp;&amp;mute_reg==1){mute_reg=0;menu0=100;menu=0;cl();vol_reg=vol_old;audio_R();audio_L();}
 }
 // standby output
 if(power==0){digitalWrite(13,HIGH);}else{digitalWrite(13,LOW);}
 /// power ///
 if((digitalRead(A2)==LOW||ir.value==POWER)&amp;&amp;power==0){power=1;w=1;w2=1;menu=100;analogWrite(6,BRIG_L);cl();myEnc.write(0);mute_reg=1;vol_old=vol_reg;vol_reg=0;
  lcd.setCursor(4,0);lcd.print(&quot;POWER OFF&quot;);audio_R();audio_L();delay(2000);cl();}
 if((digitalRead(A2)==LOW||ir.value==POWER)&amp;&amp;power==1&amp;&amp;digitalRead(10)==HIGH){power=0;w=1;w2=1;menu=0;analogWrite(6,BRIG_H);cl();myEnc.write(0);mute_reg=0;vol_reg=vol_old;
  lcd.setCursor(4,0);lcd.print(&quot;POWER  ON&quot;);audio_R();audio_L();delay(2000);cl();}  
  
 ////////////// MENU MAIN /////////////////////////////////
 ////////////// VOLUME ///////////////////////////////////////////////////////////////////
 if(menu==0){
   if(ir.value==IR4){vol_reg++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;vol_func();audio_R();audio_L();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){vol_reg++;gr2=0;cl1();times=millis();w=1;w2=1;vol_func();audio_R();audio_L();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR5){vol_reg--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;vol_func();audio_R();audio_L();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){vol_reg--;gr1=0;cl1();times=millis();w=1;w2=1;vol_func();audio_R();audio_L();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;vol_reg=vol_reg+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;vol_func();audio_R();audio_L();}
   a[0]= (vol_reg-4)/10;a[1]=(vol_reg-4)%10;
   for(x=0;x&lt;2;x++){switch(x){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
   if(mute_reg==0){lcd.setCursor(0,0);lcd.print(&quot;VOLUME&quot;);}else{lcd.setCursor(0,0);lcd.print(&quot;MUTE&quot;);}
   lcd.setCursor(7,0);lcd.print(&quot;IN&quot;);lcd.print(in_reg+1);
   DateTime = clock.getDateTime();
   lcd.setCursor(1,1);lcd.print(DateTime.hour/10);lcd.print(DateTime.hour%10);lcd.print(&quot;:&quot;);lcd.print(DateTime.minute/10);lcd.print(DateTime.minute%10);
   lcd.print(&quot;:&quot;);lcd.print(DateTime.second/10);lcd.print(DateTime.second%10);  
   }
////////////// TREBLE ///////////////////////////////////////////////////////////////////
 if(menu==1){
   if(ir.value==IR4){treb_reg++;gr1=1;gr2=0;cl1();delay(200);times=millis();w=1;w2=1;treb_func();audio_R();audio_L();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){treb_reg++;gr2=0;cl1();delay(200);times=millis();w=1;w2=1;treb_func();audio_R();audio_L();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR5){treb_reg--;gr1=0;gr2=1;cl1();delay(200);times=millis();w=1;w2=1;treb_func();audio_R();audio_L();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){treb_reg--;gr1=0;cl1();delay(200);times=millis();w=1;w2=1;treb_func();audio_R();audio_L();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;treb_reg=treb_reg+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;treb_func();
   audio_R();audio_L();}
   a[0]= treb_reg/10;a[1]=treb_reg%10;
   for(x=0;x&lt;2;x++){switch(x){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
   lcd.setCursor(0,0);lcd.print(&quot;TREBLE&quot;);lcd.setCursor(0,1);lcd.print(&quot;CONTROL&quot;);
   }  
////////////// MIDDLE ///////////////////////////////////////////////////////////////////
 if(menu==2){
   if(ir.value==IR4){mid_reg++;gr1=1;gr2=0;cl1();delay(200);times=millis();w=1;w2=1;mid_func();audio_R();audio_L();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){mid_reg++;gr2=0;cl1();delay(200);times=millis();w=1;w2=1;mid_func();audio_R();audio_L();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR5){mid_reg--;gr1=0;gr2=1;cl1();delay(200);times=millis();w=1;w2=1;mid_func();audio_R();audio_L();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){mid_reg--;gr1=0;cl1();delay(200);times=millis();w=1;w2=1;mid_func();audio_R();audio_L();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;mid_reg=mid_reg+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;mid_func();
   audio_R();audio_L();}
   a[0]= mid_reg/10;a[1]=mid_reg%10;
   for(x=0;x&lt;2;x++){switch(x){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
   lcd.setCursor(0,0);lcd.print(&quot;MIDDLE&quot;);lcd.setCursor(0,1);lcd.print(&quot;CONTROL&quot;);
   } 
////////////// BASS ///////////////////////////////////////////////////////////////////
 if(menu==3){
   if(ir.value==IR4){bass_reg++;gr1=1;gr2=0;cl1();delay(200);times=millis();w=1;w2=1;bass_func();audio_R();audio_L();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){bass_reg++;gr2=0;cl1();delay(200);times=millis();w=1;w2=1;bass_func();audio_R();audio_L();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR5){bass_reg--;gr1=0;gr2=1;cl1();delay(200);times=millis();w=1;w2=1;bass_func();audio_R();audio_L();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){bass_reg--;gr1=0;cl1();delay(200);times=millis();w=1;w2=1;bass_func();audio_R();audio_L();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;bass_reg=bass_reg+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;bass_func();
   audio_R();audio_L();}
   a[0]= bass_reg/10;a[1]=bass_reg%10;
   for(x=0;x&lt;2;x++){switch(x){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
   lcd.setCursor(0,0);lcd.print(&quot;BASS&quot;);lcd.setCursor(0,1);lcd.print(&quot;CONTROL&quot;);
   }    
//////// BALANCE /////////////////////////////////////////////////////////////// 
 if(menu0==0){ 
   if(ir.value==IR4){ball++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;ball_fun();audio_R();audio_L();}// кнопка &gt; 
   if(ir.value==IR5){ball--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;ball_fun();audio_R();audio_L();}// кнопка &lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;
   ball=ball-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ball_fun();audio_R();audio_L();}
   lcd.setCursor(4,0);lcd.print(F(&quot;   &lt;&gt;   &quot;));lcd.setCursor(4,1);lcd.print(F(&quot;CHL  CHR&quot;));
   chl=(4+ball)-4;chr=(4-ball)-4;
   if(chl&lt;0){lcd.setCursor(12,0);chl=abs(chl);lcd.write((uint8_t)3);}else{lcd.setCursor(12,0);lcd.print(&quot; &quot;);}
   if(chr&lt;0){lcd.setCursor(0,0);chr=abs(chr);lcd.write((uint8_t)3);}else{lcd.setCursor(0,0);lcd.print(&quot; &quot;);}
   if(w2==1){w2=0;a[0]=chl;a[1]=chr;
   for(i=0;i&lt;2;i++){
      switch(i){
        case 0: e1=1,e2=2,e3=3;break;
        case 1: e1=13,e2=14,e3=15;break;
        }
      switch(a[i]){
        case 0: d1=1,d2=8,d3=6,d4=1,d5=3,d6=6;break;
        case 1: d1=32,d2=2,d3=6,d4=32,d5=32,d6=6;break;
        case 2: d1=2,d2=8,d3=6,d4=1,d5=4,d6=5;break;
        case 3: d1=2,d2=4,d3=6,d4=7,d5=3,d6=6;break;
        case 4: d1=1,d2=3,d3=6,d4=32,d5=32,d6=6;break;
        case 5: d1=1,d2=4,d3=5,d4=7,d5=3,d6=6;break;
        case 6: d1=1,d2=4,d3=5,d4=1,d5=3,d6=6;break;
        case 7: d1=1,d2=8,d3=6,d4=32,d5=32,d6=6;break;
        case 8: d1=1,d2=4,d3=6,d4=1,d5=3,d6=6;break;
        case 9: d1=1,d2=4,d3=6,d4=7,d5=3,d6=6;break;
    }
      lcd.setCursor(e1,0);lcd.write((uint8_t)d1);lcd.setCursor(e2,0);lcd.write((uint8_t)d2);lcd.setCursor(e3,0);lcd.write((uint8_t)d3);
      lcd.setCursor(e1,1);lcd.write((uint8_t)d4);lcd.setCursor(e2,1);lcd.write((uint8_t)d5);lcd.setCursor(e3,1);lcd.write((uint8_t)d6);
 }}}  
////////////// INPUT GAIN ///////////////////////////////////////////////////////////////////
 if(menu0==1){
  switch(in_reg){
     case 0: gain0 = gain1;break;
     case 1: gain0 = gain2;break;
     case 2: gain0 = gain3;break;
     case 3: gain0 = gain4;break;
     case 4: gain0 = gain5;break;}
 
   if(ir.value==IR4){gain0++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;gain_func();audio_R();audio_L();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){gain0++;gr2=0;cl1();times=millis();w=1;w2=1;gain_func();audio_R();audio_L();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR5){gain0--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;gain_func();audio_R();audio_L();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){gain0--;gr1=0;cl1();times=millis();w=1;w2=1;gain_func();audio_R();audio_L();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
  if (newPosition != oldPosition){oldPosition = newPosition;gain0=gain0+newPosition;myEnc.write(0);newPosition=0;times=millis();www=1;w=1;w2=1;gain_func();}
  switch(in_reg){
     case 0: gain1 = gain0;break;
     case 1: gain2 = gain0;break;
     case 2: gain3 = gain0;break;
     case 3: gain4 = gain0;break;
     case 4: gain5 = gain0;break;}  
     a[0]= gain0/10;a[1]=gain0%10;
   for(x=0;x&lt;2;x++){switch(x){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
   if(www==1){audio_R();audio_L();www=0;}
   lcd.setCursor(0,0);lcd.print(&quot;IN GAIN&quot;);
   lcd.setCursor(0,1);lcd.print(&quot;INPUT &quot;);lcd.print(in_reg+1);}     
      
////////////////////////////////////////////////////////////////////////////////////////////
  if(millis()-times&gt;10000 &amp;&amp; w==1 &amp;&amp; mute_reg==0){
     EEPROM.update(0,vol_reg);EEPROM.update(1,treb_reg);EEPROM.update(2,mid_reg);EEPROM.update(3,bass_reg);
     EEPROM.update(4,gain1);EEPROM.update(5,gain2);EEPROM.update(6,gain3);EEPROM.update(7,gain4);EEPROM.update(8,gain5);
     EEPROM.update(9,in_reg);EEPROM.update(10,ball+4);
     if(menu!=0){lcd.clear();menu=0;menu0=100;w=0;}}  

/////////////////// ЧАСЫ ///////////////////////////////////////////////////////////////////
DateTime = clock.getDateTime();hour = DateTime.hour;minut = DateTime.minute;secon = DateTime.second;   
if(power==1){
     a[0]=DateTime.hour/10;
     a[1]=DateTime.hour%10;
     a[2]=DateTime.minute/10;
     a[3]=DateTime.minute%10;
     a[4]=DateTime.second/10;
     a[5]=DateTime.second%10;
   for(x=0;x&lt;4;x++){
    switch(x){
        case 0: e1=0,e2=1,e3=2;break;
        case 1: e1=3,e2=4,e3=5;break;
        case 2: e1=7,e2=8,e3=9;break;
        case 3: e1=10,e2=11,e3=12;break;
   }digit();}
 
   lcd.setCursor(6,0);lcd.print(&quot;.&quot;);lcd.setCursor(6,1);lcd.print(&quot;.&quot;);
   lcd.setCursor(14,1);lcd.print(a[4]);lcd.setCursor(15,1);lcd.print(a[5]);   
//// set time ////
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(11)==LOW){hour++;if(hour&gt;23){hour=0;} clock.setDateTime(2021, 8, 28, hour, minut, secon);delay(100);}// input button HH++
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(A0)==LOW){minut++;if(minut&gt;59){minut=0;} clock.setDateTime(2021, 8, 28, hour, minut, secon);delay(100); }// set MM++
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(A1)==LOW){secon=0; clock.setDateTime(2021, 8, 28, hour, minut, secon);delay(100); }//  mute SS=0
}        
  }  // loop

void audio_R(){Write(in_reg,gain0,63-vol_reg-4+ball,  0 , 10-treb_reg,10-mid_reg,10-bass_reg );}  
void audio_L(){Write(in_reg,gain0,63-vol_reg-4-ball,  1 , 10-treb_reg,10-mid_reg,10-bass_reg );}  

void cl(){ir.value=0;delay(300);lcd.clear();}
void cl1(){ir.value=0;delay(300);}
void gain_func(){{if(gain0&lt;0){gain0=0;}if(gain0&gt;15){gain0=15;}}}
void ball_fun(){if(ball&gt;4){ball=4;}if(ball&lt;-4){ball=-4;}}
void treb_func(){if(treb_reg&lt;0){treb_reg=0;}if(treb_reg&gt;10){treb_reg=10;}}
void mid_func(){if(mid_reg&lt;0){mid_reg=0;}if(mid_reg&gt;10){mid_reg=10;}}
void bass_func(){if(bass_reg&lt;0){bass_reg=0;}if(bass_reg&gt;10){bass_reg=10;}}
void vol_func(){if(vol_reg&lt;4){vol_reg=4;}if(vol_reg&gt;63){vol_reg=63;}}
void to_Timer(){newPosition = myEnc.read()/4;}  
void digit(){switch(a[x]){
case 0: d1=1,d2=8,d3=6,d4=1,d5=3,d6=6;break;case 1: d1=32,d2=2,d3=6,d4=32,d5=32,d6=6;break;
case 2: d1=2,d2=8,d3=6,d4=1,d5=4,d6=5;break;case 3: d1=2,d2=4,d3=6,d4=7,d5=3,d6=6;break;
case 4: d1=1,d2=3,d3=6,d4=32,d5=32,d6=6;break;case 5: d1=1,d2=4,d3=5,d4=7,d5=3,d6=6;break;
case 6: d1=1,d2=4,d3=5,d4=1,d5=3,d6=6;break;case 7: d1=1,d2=8,d3=6,d4=32,d5=32,d6=6;break;
case 8: d1=1,d2=4,d3=6,d4=1,d5=3,d6=6;break;case 9: d1=1,d2=4,d3=6,d4=7,d5=3,d6=6;break;}
lcd.setCursor(e1,0);lcd.write((uint8_t)d1);lcd.setCursor(e2,0);lcd.write((uint8_t)d2);lcd.setCursor(e3,0);lcd.write((uint8_t)d3);
lcd.setCursor(e1,1);lcd.write((uint8_t)d4);lcd.setCursor(e2,1);lcd.write((uint8_t)d5);lcd.setCursor(e3,1);lcd.write((uint8_t)d6);}

void Write(byte input,byte input_gain,byte volume,byte ch_sel,byte treb,byte mid,byte bass){
  digitalWrite(CL,LOW);
  digitalWrite(CE,LOW);
  byte addr = 0b01000001;
     for(int i = 7; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (addr &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }  
  digitalWrite(CE,HIGH); 
      for(int i = 3; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (input_m[input] &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }
      for(int i = 3; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (input_gain_m[input_gain] &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }  
      for(int i = 5; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (volume_m[volume] &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }  
      for(int i = 1; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (ch_sel_m[ch_sel] &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }  
      for(int i = 3; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (tembr_m[treb] &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }        
      for(int i = 3; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (tembr_m[mid] &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }    
      for(int i = 3; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (tembr_m[bass] &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }  
      for(int i = 3; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (0b1101 &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }                                      
   digitalWrite(CL,LOW);
   digitalWrite(CE,LOW);             
  }</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2021-12-20T13:56:03Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=4927#p4927</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Аудиопроцессор - LC75343M]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=4926#p4926" />
			<content type="html"><![CDATA[<p>Основная тема - <a href="http://rcl-radio.ru/?p=110893">http://rcl-radio.ru/?p=110893</a></p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2021/12/f7b773fa0d0bc7517cafdf83aefec25f.gif" alt="http://forum.rcl-radio.ru/uploads/images/2021/12/f7b773fa0d0bc7517cafdf83aefec25f.gif" /></span> </p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2021/12/1ce57cab0208ccc63fd618433da9aa7b.png" alt="http://forum.rcl-radio.ru/uploads/images/2021/12/1ce57cab0208ccc63fd618433da9aa7b.png" /></span> <br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2021/12/dd76b715d90b3ea681216cca4e6cc87a.png" alt="http://forum.rcl-radio.ru/uploads/images/2021/12/dd76b715d90b3ea681216cca4e6cc87a.png" /></span> <br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2021/12/94d0ff8f596e2d006597a85b95e738eb.png" alt="http://forum.rcl-radio.ru/uploads/images/2021/12/94d0ff8f596e2d006597a85b95e738eb.png" /></span> <br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2021/12/061c906db706e3c718e66493ac139a74.png" alt="http://forum.rcl-radio.ru/uploads/images/2021/12/061c906db706e3c718e66493ac139a74.png" /></span> <br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2021/12/6f153711dde020dd7e074a94378d230b.png" alt="http://forum.rcl-radio.ru/uploads/images/2021/12/6f153711dde020dd7e074a94378d230b.png" /></span> <br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2021/12/b9a1bbe624fa05fb123a96f80824326c.png" alt="http://forum.rcl-radio.ru/uploads/images/2021/12/b9a1bbe624fa05fb123a96f80824326c.png" /></span> <br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2021/12/d08020c75dd6977f0f1a1c4f2451a9e2.png" alt="http://forum.rcl-radio.ru/uploads/images/2021/12/d08020c75dd6977f0f1a1c4f2451a9e2.png" /></span> <br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2021/12/fa2ff860de0f6faffa5700a9ce0cef9e.png" alt="http://forum.rcl-radio.ru/uploads/images/2021/12/fa2ff860de0f6faffa5700a9ce0cef9e.png" /></span> <br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2021/12/9229b877def324a0a99fdc5b4ddb92b6.png" alt="http://forum.rcl-radio.ru/uploads/images/2021/12/9229b877def324a0a99fdc5b4ddb92b6.png" /></span> </p><br /><div class="codebox"><pre><code>#define CE 3
#define DI 2
#define CL 4

#define IR1    0x33B850AF // main/setting menu
#define IR2    0x33B820DF // button encoder
#define IR3    0x33B8946B // mute
#define IR4    0x33B810EF // &gt;&gt;&gt;
#define IR5    0x33B8E01F // &lt;&lt;&lt;
#define IR6    0x33B844BB // INPUT
#define POWER  0x33B800FF // STANDBY

#define BRIG_L 50
#define BRIG_H 250

#include &lt;Wire.h&gt; 
#include &lt;LiquidCrystal_I2C.h&gt; // http://forum.rcl-radio.ru/misc.php?action=pan_download&amp;item=45&amp;download=1
#include &lt;Encoder.h&gt;           // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip       
#include &lt;EEPROM.h&gt;
#include &lt;MsTimer2.h&gt;          // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip 
#include &lt;boarddefs.h&gt;         // входит в состав библиотеки IRremote
#include &lt;IRremote.h&gt;          // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip
#include &lt;DS3231.h&gt;            // http://rcl-radio.ru/wp-content/uploads/2021/10/DS3231.zip

LiquidCrystal_I2C lcd(0x27,16,2);  // Устанавливаем дисплей
Encoder myEnc(8, 9);// DT, CLK
IRrecv irrecv(12); // указываем вывод модуля IR приемника
decode_results ir; 
DS3231 clock;RTCDateTime DateTime;

byte input_m[8]={0b0001,0b1001,0b0101,0b1101,0b0011,0b0111,0b1111};
byte input_gain_m[16]{0b0000,0b1000,0b0100,0b1100,0b0010,0b1010,0b0110,0b1110,0b0001,0b1001,0b0101,0b1101,0b0011,0b1011,0b0111,0b1111};
byte volume_m[64]{0b000000,0b100000,0b010000,0b110000,0b001000,0b101000,0b011000,0b111000,0b000100,0b100100,0b010100,0b110100,0b001100,
0b101100,0b011100,0b111100,0b000010,0b100010,0b010010,0b110010,0b001010,0b101010,0b011010,0b111010,0b000110,0b100110,0b010110,0b110110,
0b001110,0b101110,0b011110,0b111110,0b000001,0b100001,0b010001,0b110001,0b001001,0b101001,0b011001,0b111001,0b000101,0b100101,0b010101,
0b110101,0b001101,0b101101,0b011101,0b111101,0b000011,0b100011,0b010011,0b110011,0b001011,0b101011,0b011011,0b111011,0b000111,0b100111,
0b010111,0b110111,0b001111,0b101111,0b011111,0b111111};
byte ch_sel_m[3]{0b10,0b01,0b11};
byte tembr_m[11]{0b1010,0b0010,0b1100,0b0100,0b1000,0b0000,0b1001,0b0101,0b1101,0b0011,0b1011};
byte v1[8] = {0b00111,0b00111,0b00111,0b00111,0b00111,0b00111,0b00111,0b00111};
byte v2[8] = {0b00111,0b00111,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000};      
byte v3[8] = {0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b11111,0b11111};
byte v4[8] = {0b11111,0b11111,0b00000,0b00000,0b00000,0b00000,0b11111,0b11111};
byte v5[8] = {0b11100,0b11100,0b00000,0b00000,0b00000,0b00000,0b11100,0b11100};
byte v6[8] = {0b11100,0b11100,0b11100,0b11100,0b11100,0b11100,0b11100,0b11100};
byte v7[8] = {0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b00111,0b00111};
byte v8[8] = {0b11111,0b11111,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000}; 
unsigned long times,oldPosition  = -999,newPosition;
int menu0=100,menu,vol_reg,in_reg,mute_reg,treb_reg,mid_reg,bass_reg,ball,fun,chl,chr,i,gain0,gain1,gain2,gain3,gain4,gain5,vol_old;
int hour,secon,minut;
byte a[6],d1,d2,d3,d4,d5,d6,e1,e2,e3,w,w2,x,www,gr1,gr2,power;


void setup() {
  pinMode(CE,OUTPUT);pinMode(DI,OUTPUT);pinMode(CL,OUTPUT);
  digitalWrite(CL,LOW);digitalWrite(CE,LOW);digitalWrite(DI,LOW);
  irrecv.enableIRIn();lcd.init();lcd.backlight();Wire.begin();clock.begin(); 
  lcd.createChar(1, v1);lcd.createChar(2, v2);lcd.createChar(3, v3);lcd.createChar(4, v4);
  lcd.createChar(5, v5);lcd.createChar(6, v6);lcd.createChar(7, v7);lcd.createChar(8, v8);
   //  clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
   pinMode(10,INPUT);// encoder SW
   pinMode(11,INPUT_PULLUP);// input button
   pinMode(A0,INPUT_PULLUP);// menu set/main button
   pinMode(A1,INPUT_PULLUP);// mute button
   pinMode(A2,INPUT_PULLUP);// POWER
   pinMode(6,OUTPUT);       // PWM output
   pinMode(13,OUTPUT);      // OUTPUT STANDBY
   analogWrite(6,BRIG_H);
  MsTimer2::set(1, to_Timer);MsTimer2::start();
  if(EEPROM.read(100)!=0){for(int i=0;i&lt;101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении  
  Serial.begin(9600);
  vol_reg = EEPROM.read(0);treb_reg = EEPROM.read(1);mid_reg = EEPROM.read(2);bass_reg = EEPROM.read(3);
   gain1 = EEPROM.read(4);gain2 = EEPROM.read(5);gain3 = EEPROM.read(6);gain4 = EEPROM.read(7);gain5 = EEPROM.read(8);
  in_reg = EEPROM.read(9);ball = EEPROM.read(10)-4;
    switch(in_reg){
     case 0: gain0 = gain1;break;
     case 1: gain0 = gain2;break;
     case 2: gain0 = gain3;break;
     case 3: gain0 = gain4;break;
     case 4: gain0 = gain5;break;}
  delay(100);audio_R();audio_L();
  lcd.setCursor(4,0);lcd.print(&quot;LC75343M&quot;); lcd.setCursor(0,1);lcd.print(&quot;audio  processor&quot;);
  delay(1000);lcd.clear();
  }

void loop() {
 /// IR ////////////////////////////////////////
   if ( irrecv.decode( &amp;ir )) {Serial.print(&quot;0x&quot;);Serial.println( ir.value,HEX);irrecv.resume();times=millis();w=1;w2=1;}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
   if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта  
 /// BUTTON ///////////////////////////////////
 if(power==0){
   if((digitalRead(10)==LOW||ir.value==IR2)&amp;&amp;menu0==100){menu++;menu0=100;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu&gt;3){menu=0;}}
   if((digitalRead(10)==LOW||ir.value==IR2)&amp;&amp;menu==100){menu0++;menu=100;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu0&gt;1){menu0=0;}}
   if((digitalRead(11)==LOW||ir.value==IR6)){in_reg++;cl();times=millis();w=1;w2=1;if(in_reg&gt;4){in_reg=0;}audio_R();audio_L();lcd.setCursor(4,0);lcd.print(&quot;INPUT &quot;);lcd.print(in_reg+1);delay(1000);cl();}
   if((digitalRead(A0)==LOW||ir.value==IR1)&amp;&amp;menu&lt;100){menu=100;menu0=0;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;lcd.setCursor(2,0);lcd.print(&quot;SETTING MENU&quot;);delay(1000);cl();}
   if((digitalRead(A0)==LOW||ir.value==IR1)&amp;&amp;menu0&lt;100){menu0=100;menu=0;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;lcd.setCursor(3,0);lcd.print(&quot;MAIN MENU&quot;);delay(1000);cl();}
   if((digitalRead(A1)==LOW||ir.value==IR3)&amp;&amp;mute_reg==0){mute_reg=1;menu0=100;menu=100;cl();vol_old=vol_reg;vol_reg=0;audio_R();audio_L();lcd.setCursor(6,0);lcd.print(&quot;MUTE&quot;);}
   if((digitalRead(A1)==LOW||ir.value==IR3)&amp;&amp;mute_reg==1){mute_reg=0;menu0=100;menu=0;cl();vol_reg=vol_old;audio_R();audio_L();}
 }
 // standby output
 if(power==0){digitalWrite(13,HIGH);}else{digitalWrite(13,LOW);}
 /// power ///
 if((digitalRead(A2)==LOW||ir.value==POWER)&amp;&amp;power==0){power=1;w=1;w2=1;menu=100;analogWrite(6,BRIG_L);cl();myEnc.write(0);mute_reg=1;vol_old=vol_reg;vol_reg=0;
  lcd.setCursor(4,0);lcd.print(&quot;POWER OFF&quot;);audio_R();audio_L();delay(2000);cl();}
 if((digitalRead(A2)==LOW||ir.value==POWER)&amp;&amp;power==1&amp;&amp;digitalRead(10)==HIGH){power=0;w=1;w2=1;menu=0;analogWrite(6,BRIG_H);cl();myEnc.write(0);mute_reg=0;vol_reg=vol_old;
  lcd.setCursor(4,0);lcd.print(&quot;POWER  ON&quot;);audio_R();audio_L();delay(2000);cl();}  
  
 ////////////// MENU MAIN /////////////////////////////////
 ////////////// VOLUME ///////////////////////////////////////////////////////////////////
 if(menu==0){
   if(ir.value==IR4){vol_reg++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;vol_func();audio_R();audio_L();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){vol_reg++;gr2=0;cl1();times=millis();w=1;w2=1;vol_func();audio_R();audio_L();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR5){vol_reg--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;vol_func();audio_R();audio_L();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){vol_reg--;gr1=0;cl1();times=millis();w=1;w2=1;vol_func();audio_R();audio_L();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;vol_reg=vol_reg+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;vol_func();audio_R();audio_L();}
   a[0]= (vol_reg-4)/10;a[1]=(vol_reg-4)%10;
   for(x=0;x&lt;2;x++){switch(x){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
   if(mute_reg==0){lcd.setCursor(0,0);lcd.print(&quot;VOLUME&quot;);}else{lcd.setCursor(0,0);lcd.print(&quot;MUTE&quot;);}
   lcd.setCursor(0,1);lcd.print(&quot;INPUT &quot;);lcd.print(in_reg+1);
   }
////////////// TREBLE ///////////////////////////////////////////////////////////////////
 if(menu==1){
   if(ir.value==IR4){treb_reg++;gr1=1;gr2=0;cl1();delay(200);times=millis();w=1;w2=1;treb_func();audio_R();audio_L();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){treb_reg++;gr2=0;cl1();delay(200);times=millis();w=1;w2=1;treb_func();audio_R();audio_L();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR5){treb_reg--;gr1=0;gr2=1;cl1();delay(200);times=millis();w=1;w2=1;treb_func();audio_R();audio_L();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){treb_reg--;gr1=0;cl1();delay(200);times=millis();w=1;w2=1;treb_func();audio_R();audio_L();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;treb_reg=treb_reg+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;treb_func();
   audio_R();audio_L();}
   a[0]= treb_reg/10;a[1]=treb_reg%10;
   for(x=0;x&lt;2;x++){switch(x){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
   lcd.setCursor(0,0);lcd.print(&quot;TREBLE&quot;);lcd.setCursor(0,1);lcd.print(&quot;CONTROL&quot;);
   }  
////////////// MIDDLE ///////////////////////////////////////////////////////////////////
 if(menu==2){
   if(ir.value==IR4){mid_reg++;gr1=1;gr2=0;cl1();delay(200);times=millis();w=1;w2=1;mid_func();audio_R();audio_L();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){mid_reg++;gr2=0;cl1();delay(200);times=millis();w=1;w2=1;mid_func();audio_R();audio_L();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR5){mid_reg--;gr1=0;gr2=1;cl1();delay(200);times=millis();w=1;w2=1;mid_func();audio_R();audio_L();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){mid_reg--;gr1=0;cl1();delay(200);times=millis();w=1;w2=1;mid_func();audio_R();audio_L();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;mid_reg=mid_reg+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;mid_func();
   audio_R();audio_L();}
   a[0]= mid_reg/10;a[1]=mid_reg%10;
   for(x=0;x&lt;2;x++){switch(x){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
   lcd.setCursor(0,0);lcd.print(&quot;MIDDLE&quot;);lcd.setCursor(0,1);lcd.print(&quot;CONTROL&quot;);
   } 
////////////// BASS ///////////////////////////////////////////////////////////////////
 if(menu==3){
   if(ir.value==IR4){bass_reg++;gr1=1;gr2=0;cl1();delay(200);times=millis();w=1;w2=1;bass_func();audio_R();audio_L();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){bass_reg++;gr2=0;cl1();delay(200);times=millis();w=1;w2=1;bass_func();audio_R();audio_L();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR5){bass_reg--;gr1=0;gr2=1;cl1();delay(200);times=millis();w=1;w2=1;bass_func();audio_R();audio_L();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){bass_reg--;gr1=0;cl1();delay(200);times=millis();w=1;w2=1;bass_func();audio_R();audio_L();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;bass_reg=bass_reg+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;bass_func();
   audio_R();audio_L();}
   a[0]= bass_reg/10;a[1]=bass_reg%10;
   for(x=0;x&lt;2;x++){switch(x){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
   lcd.setCursor(0,0);lcd.print(&quot;BASS&quot;);lcd.setCursor(0,1);lcd.print(&quot;CONTROL&quot;);
   }    
//////// BALANCE /////////////////////////////////////////////////////////////// 
 if(menu0==0){ 
   if(ir.value==IR4){ball++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;ball_fun();audio_R();audio_L();}// кнопка &gt; 
   if(ir.value==IR5){ball--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;ball_fun();audio_R();audio_L();}// кнопка &lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;
   ball=ball-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ball_fun();audio_R();audio_L();}
   lcd.setCursor(4,0);lcd.print(F(&quot;   &lt;&gt;   &quot;));lcd.setCursor(4,1);lcd.print(F(&quot;CHL  CHR&quot;));
   chl=(4+ball)-4;chr=(4-ball)-4;
   if(chl&lt;0){lcd.setCursor(12,0);chl=abs(chl);lcd.write((uint8_t)3);}else{lcd.setCursor(12,0);lcd.print(&quot; &quot;);}
   if(chr&lt;0){lcd.setCursor(0,0);chr=abs(chr);lcd.write((uint8_t)3);}else{lcd.setCursor(0,0);lcd.print(&quot; &quot;);}
   if(w2==1){w2=0;a[0]=chl;a[1]=chr;
   for(i=0;i&lt;2;i++){
      switch(i){
        case 0: e1=1,e2=2,e3=3;break;
        case 1: e1=13,e2=14,e3=15;break;
        }
      switch(a[i]){
        case 0: d1=1,d2=8,d3=6,d4=1,d5=3,d6=6;break;
        case 1: d1=32,d2=2,d3=6,d4=32,d5=32,d6=6;break;
        case 2: d1=2,d2=8,d3=6,d4=1,d5=4,d6=5;break;
        case 3: d1=2,d2=4,d3=6,d4=7,d5=3,d6=6;break;
        case 4: d1=1,d2=3,d3=6,d4=32,d5=32,d6=6;break;
        case 5: d1=1,d2=4,d3=5,d4=7,d5=3,d6=6;break;
        case 6: d1=1,d2=4,d3=5,d4=1,d5=3,d6=6;break;
        case 7: d1=1,d2=8,d3=6,d4=32,d5=32,d6=6;break;
        case 8: d1=1,d2=4,d3=6,d4=1,d5=3,d6=6;break;
        case 9: d1=1,d2=4,d3=6,d4=7,d5=3,d6=6;break;
    }
      lcd.setCursor(e1,0);lcd.write((uint8_t)d1);lcd.setCursor(e2,0);lcd.write((uint8_t)d2);lcd.setCursor(e3,0);lcd.write((uint8_t)d3);
      lcd.setCursor(e1,1);lcd.write((uint8_t)d4);lcd.setCursor(e2,1);lcd.write((uint8_t)d5);lcd.setCursor(e3,1);lcd.write((uint8_t)d6);
 }}}  
////////////// INPUT GAIN ///////////////////////////////////////////////////////////////////
 if(menu0==1){
  switch(in_reg){
     case 0: gain0 = gain1;break;
     case 1: gain0 = gain2;break;
     case 2: gain0 = gain3;break;
     case 3: gain0 = gain4;break;
     case 4: gain0 = gain5;break;}
 
   if(ir.value==IR4){gain0++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;gain_func();audio_R();audio_L();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){gain0++;gr2=0;cl1();times=millis();w=1;w2=1;gain_func();audio_R();audio_L();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR5){gain0--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;gain_func();audio_R();audio_L();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){gain0--;gr1=0;cl1();times=millis();w=1;w2=1;gain_func();audio_R();audio_L();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
  if (newPosition != oldPosition){oldPosition = newPosition;gain0=gain0+newPosition;myEnc.write(0);newPosition=0;times=millis();www=1;w=1;w2=1;gain_func();}
  switch(in_reg){
     case 0: gain1 = gain0;break;
     case 1: gain2 = gain0;break;
     case 2: gain3 = gain0;break;
     case 3: gain4 = gain0;break;
     case 4: gain5 = gain0;break;}  
     a[0]= gain0/10;a[1]=gain0%10;
   for(x=0;x&lt;2;x++){switch(x){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
   if(www==1){audio_R();audio_L();www=0;}
   lcd.setCursor(0,0);lcd.print(&quot;IN GAIN&quot;);
   lcd.setCursor(0,1);lcd.print(&quot;INPUT &quot;);lcd.print(in_reg+1);}     
      
////////////////////////////////////////////////////////////////////////////////////////////
  if(millis()-times&gt;10000 &amp;&amp; w==1 &amp;&amp; mute_reg==0){
     EEPROM.update(0,vol_reg);EEPROM.update(1,treb_reg);EEPROM.update(2,mid_reg);EEPROM.update(3,bass_reg);
     EEPROM.update(4,gain1);EEPROM.update(5,gain2);EEPROM.update(6,gain3);EEPROM.update(7,gain4);EEPROM.update(8,gain5);
     EEPROM.update(9,in_reg);EEPROM.update(10,ball+4);
     if(menu!=0){lcd.clear();menu=0;menu0=100;w=0;}}  

/////////////////// ЧАСЫ ///////////////////////////////////////////////////////////////////
DateTime = clock.getDateTime();hour = DateTime.hour;minut = DateTime.minute;secon = DateTime.second;   
if(power==1){
     a[0]=DateTime.hour/10;
     a[1]=DateTime.hour%10;
     a[2]=DateTime.minute/10;
     a[3]=DateTime.minute%10;
     a[4]=DateTime.second/10;
     a[5]=DateTime.second%10;
   for(x=0;x&lt;4;x++){
    switch(x){
        case 0: e1=0,e2=1,e3=2;break;
        case 1: e1=3,e2=4,e3=5;break;
        case 2: e1=7,e2=8,e3=9;break;
        case 3: e1=10,e2=11,e3=12;break;
   }digit();}
 
   lcd.setCursor(6,0);lcd.print(&quot;.&quot;);lcd.setCursor(6,1);lcd.print(&quot;.&quot;);
   lcd.setCursor(14,1);lcd.print(a[4]);lcd.setCursor(15,1);lcd.print(a[5]);   
//// set time ////
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(11)==LOW){hour++;if(hour&gt;23){hour=0;} clock.setDateTime(2021, 8, 28, hour, minut, secon);delay(100);}// input button HH++
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(A0)==LOW){minut++;if(minut&gt;59){minut=0;} clock.setDateTime(2021, 8, 28, hour, minut, secon);delay(100); }// set MM++
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(A1)==LOW){secon=0; clock.setDateTime(2021, 8, 28, hour, minut, secon);delay(100); }//  mute SS=0
}        
  }  // loop

void audio_R(){Write(in_reg,gain0,63-vol_reg-4+ball,  0 , 10-treb_reg,10-mid_reg,10-bass_reg );}  
void audio_L(){Write(in_reg,gain0,63-vol_reg-4-ball,  1 , 10-treb_reg,10-mid_reg,10-bass_reg );}  

void cl(){ir.value=0;delay(300);lcd.clear();}
void cl1(){ir.value=0;delay(300);}
void gain_func(){{if(gain0&lt;0){gain0=0;}if(gain0&gt;15){gain0=15;}}}
void ball_fun(){if(ball&gt;4){ball=4;}if(ball&lt;-4){ball=-4;}}
void treb_func(){if(treb_reg&lt;0){treb_reg=0;}if(treb_reg&gt;10){treb_reg=10;}}
void mid_func(){if(mid_reg&lt;0){mid_reg=0;}if(mid_reg&gt;10){mid_reg=10;}}
void bass_func(){if(bass_reg&lt;0){bass_reg=0;}if(bass_reg&gt;10){bass_reg=10;}}
void vol_func(){if(vol_reg&lt;4){vol_reg=4;}if(vol_reg&gt;63){vol_reg=63;}}
void to_Timer(){newPosition = myEnc.read()/4;}  
void digit(){switch(a[x]){
case 0: d1=1,d2=8,d3=6,d4=1,d5=3,d6=6;break;case 1: d1=32,d2=2,d3=6,d4=32,d5=32,d6=6;break;
case 2: d1=2,d2=8,d3=6,d4=1,d5=4,d6=5;break;case 3: d1=2,d2=4,d3=6,d4=7,d5=3,d6=6;break;
case 4: d1=1,d2=3,d3=6,d4=32,d5=32,d6=6;break;case 5: d1=1,d2=4,d3=5,d4=7,d5=3,d6=6;break;
case 6: d1=1,d2=4,d3=5,d4=1,d5=3,d6=6;break;case 7: d1=1,d2=8,d3=6,d4=32,d5=32,d6=6;break;
case 8: d1=1,d2=4,d3=6,d4=1,d5=3,d6=6;break;case 9: d1=1,d2=4,d3=6,d4=7,d5=3,d6=6;break;}
lcd.setCursor(e1,0);lcd.write((uint8_t)d1);lcd.setCursor(e2,0);lcd.write((uint8_t)d2);lcd.setCursor(e3,0);lcd.write((uint8_t)d3);
lcd.setCursor(e1,1);lcd.write((uint8_t)d4);lcd.setCursor(e2,1);lcd.write((uint8_t)d5);lcd.setCursor(e3,1);lcd.write((uint8_t)d6);}

void Write(byte input,byte input_gain,byte volume,byte ch_sel,byte treb,byte mid,byte bass){
  digitalWrite(CL,LOW);
  digitalWrite(CE,LOW);
  byte addr = 0b01000001;
     for(int i = 7; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (addr &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }  
  digitalWrite(CE,HIGH); 
      for(int i = 3; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (input_m[input] &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }
      for(int i = 3; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (input_gain_m[input_gain] &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }  
      for(int i = 5; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (volume_m[volume] &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }  
      for(int i = 1; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (ch_sel_m[ch_sel] &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }  
      for(int i = 3; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (tembr_m[treb] &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }        
      for(int i = 3; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (tembr_m[mid] &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }    
      for(int i = 3; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (tembr_m[bass] &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }  
      for(int i = 3; i &gt;= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (0b1101 &gt;&gt; i) &amp; 0x01);
        digitalWrite(CL,HIGH);
        }                                      
   digitalWrite(CL,LOW);
   digitalWrite(CE,LOW);             
  }</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2021-12-20T10:16:31Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=4926#p4926</id>
		</entry>
</feed>
