<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[forum.rcl-radio.ru &mdash; TDA7313 + DS3231 + IR + LCD2004]]></title>
		<link>https://forum.rcl-radio.ru/viewtopic.php?id=489</link>
		<atom:link href="https://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=489&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «TDA7313 + DS3231 + IR + LCD2004».]]></description>
		<lastBuildDate>Sat, 20 Jun 2026 16:19:32 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: TDA7313 + DS3231 + IR + LCD2004]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=12699#p12699</link>
			<description><![CDATA[<p><a href="http://forum.rcl-radio.ru/uploads/files/2026/06/35121e9c78a4a95049ca738e0cc68a5e.rar">arkhiv_winrar.rar</a> <br /> Вот видео</p>]]></description>
			<author><![CDATA[null@example.com (Magali2012)]]></author>
			<pubDate>Sat, 20 Jun 2026 16:19:32 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=12699#p12699</guid>
		</item>
		<item>
			<title><![CDATA[Re: TDA7313 + DS3231 + IR + LCD2004]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=12698#p12698</link>
			<description><![CDATA[<div class="quotebox"><cite>Magali2012 пишет:</cite><blockquote><p>Всё отлично. Большое спасибо за помощь</p></blockquote></div><p>Тяжело работать&nbsp; с чужими проектами.Все получилось?Регулировка (по кругу)должна быть как в одну сторону энкодера ,так и в другую. Фото скиньте пожалуйста.</p>]]></description>
			<author><![CDATA[null@example.com (honda473)]]></author>
			<pubDate>Sat, 20 Jun 2026 15:40:33 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=12698#p12698</guid>
		</item>
		<item>
			<title><![CDATA[Re: TDA7313 + DS3231 + IR + LCD2004]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=12697#p12697</link>
			<description><![CDATA[<p>Всё отлично. Большое спасибо за помощь</p>]]></description>
			<author><![CDATA[null@example.com (Magali2012)]]></author>
			<pubDate>Sat, 20 Jun 2026 15:31:50 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=12697#p12697</guid>
		</item>
		<item>
			<title><![CDATA[Re: TDA7313 + DS3231 + IR + LCD2004]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=12696#p12696</link>
			<description><![CDATA[<div class="codebox"><pre><code>#define IR_1 0x20DF00FF // Кнопка вверх
#define IR_2 0x20DF807F // Кнопка вниз
#define IR_3 0x20DF40BF // Кнопка &gt;
#define IR_4 0x20DFC03F // Кнопка &lt;
#define IR_5 0x20DFD02F // Кнопка IN
#define IR_6 0x20DFC23D // Кнопка SET
#define IR_7 0x20DF906F // Кнопка MUTE
#define IR_8 0x20DF10EF // Кнопка STANDBY (POWER)

#define BRIG_H 200      // Яркость 0...255 POWER ON
#define BRIG_L 50       // Яркость 0...255 POWER OFF
 
#include &lt;TDA7719.h&gt;            // http://rcl-radio.ru/wp-content/uploads/2019/07/TDA7719.zip
#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/2022/10/DS3231.zip
 TDA7719 tda;
 DS3231 clock;RTCDateTime DateTime;
 LiquidCrystal_I2C lcd(0x27,20,4);  // Устанавливаем дисплей
 IRrecv irrecv(11); // указываем вывод модуля IR приемника
 Encoder myEnc(9, 8);// DT, CLK
 decode_results ir; 
 int in,loun,loun_f,vol_att,treb,treb_f,mid,mid_q,bass,bass_q,sub_f,faza,mid_f,bass_f;  ////////////////////////////
 int vol,att_lf,att_rf,att_lr,att_rr,att_l,att_rl;
 long time0,oldPosition  = -999,newPosition,times1;
 int menu0,menu,temp0,vol_d,bass_d,treb_d,par,z_old,z1,z0,z,menu1,in_time;
 byte q,gr1,gr2,w,w2[4],www,power,in_x,mute=1;
 int hour,minut,secon,mid_d,menu2,gain0,gain1,gain2,gain3,gain4,gain5,gain6,date,mont,year,korr;
 byte mesto2[8]={0,10,0,10,0,10,0,10};
 byte mesto3[8]={0,0,1,1,2,2,3,3};
 bool power_off=1;
 String dn[]={&quot;   &quot;,&quot;MON&quot;,&quot;TUE&quot;,&quot;WED&quot;,&quot;THU&quot;,&quot;FRI&quot;,&quot;SAT&quot;,&quot;SUN&quot;};
 byte wesk,zast;
 
void setup() {
  irrecv.enableIRIn();lcd.init();lcd.backlight();clock.begin();Serial.begin(9600);
  pinMode(10,INPUT);  // МЕНЮ КНОПКА SW энкодера
  pinMode(2,INPUT_PULLUP);   // КНОПКА SET
  pinMode(3,INPUT_PULLUP);   // КНОПКА IN
  pinMode(4,INPUT_PULLUP);   // КНОПКА MUTE
  pinMode(5,INPUT_PULLUP);   // КНОПКА STANDBY
  pinMode(7,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ STANDBY
  pinMode(6,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ ПОДСВЕТКОЙ
  pinMode(12,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ Bluetooth
  analogWrite(6, BRIG_H);// больше 200 не делать
  lcd.setCursor(3,1);lcd.print(&quot;Sound Processor&quot;);lcd.setCursor(7,2);lcd.print(&quot;TDA7719&quot;); delay(2000);lcd.clear();
  MsTimer2::set(4, 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);}}// очистка памяти при первом включении  
  vol = EEPROM.read(0)-63;bass = EEPROM.read(1)-15;mid = EEPROM.read(2)-15;treb = EEPROM.read(3)-15;
  att_lr = EEPROM.read(4);att_rr = EEPROM.read(5);att_lf = EEPROM.read(6);att_rf = EEPROM.read(7);att_rl = EEPROM.read(8);att_l = EEPROM.read(9);
  loun = EEPROM.read(10);loun_f = EEPROM.read(11);
  bass_f = EEPROM.read(12);mid_f = EEPROM.read(13);treb_f = EEPROM.read(14);sub_f = EEPROM.read(15);
  bass_q = EEPROM.read(16);mid_q = EEPROM.read(17);
  gain1 = EEPROM.read(18)-15;gain2 = EEPROM.read(19)-15;gain3 = EEPROM.read(20)-15;gain4=EEPROM.read(21)-15;gain5=EEPROM.read(22)-15;gain6=EEPROM.read(23)-15;
  switch(in){
     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;
     case 5: gain0 = gain6;break;
     }
  w2_arr();audio();cl();
}
 
void to_Timer(){newPosition = myEnc.read()/4;}
 
void loop() { 
 DateTime = clock.getDateTime();hour = DateTime.hour;minut = DateTime.minute;secon = DateTime.second;
 date = DateTime.day;mont = DateTime.month;year = DateTime.year;wesk = DateTime.dayOfWeek;

  /////////////////////////////// УПРАВЛЕНИЕ //////////////////////////////////////////////
  if ( irrecv.decode( &amp;ir )) {Serial.print(&quot;0x&quot;);Serial.println( ir.value,HEX);irrecv.resume();}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
  if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта  

  if((digitalRead(10)==LOW||digitalRead(2)==LOW||digitalRead(3)==LOW||digitalRead(4)==LOW||digitalRead(5)==LOW)&amp;&amp; zast==1){cl();w=0;times1=millis();zast=0;menu0=0;menu=0;menu1=0;menu2=0;in_x=0;w2_arr();} 
  if((ir.value==IR_1||ir.value==IR_2||ir.value==IR_3||ir.value==IR_4||ir.value==IR_5||ir.value==IR_6||ir.value==IR_7||ir.value==IR_8)&amp;&amp;zast==1){
  cl();w=0;times1=millis();zast=0;menu0=0;menu=0;menu1=0;menu2=0;in_x=0;w2_arr();} 
 
  if(power==0){
    if(mute==1){
  if(digitalRead(10)==LOW&amp;&amp;menu0==0){menu++;delay(200);time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu&gt;3){menu=0;}}// меню 0
  if(digitalRead(10)==LOW&amp;&amp;menu0==1){menu1++;delay(200);time0=millis();times1=millis();zast=0;in_x=0;w=1;if(menu1&gt;7){menu1=0;}}// меню 1
  if(digitalRead(10)==LOW&amp;&amp;menu0==2){menu2++;delay(200);time0=millis();times1=millis();zast=0;in_x=0;w=1;if(menu2&gt;5){menu2=0;}}// меню 2
 
  if(ir.value==IR_2&amp;&amp;menu0==0){menu++;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu&gt;3){menu=0;}}//меню 0
  if(ir.value==IR_1&amp;&amp;menu0==0){menu--;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu&lt;0){menu=3;}}//меню 0
 
  if(ir.value==IR_2&amp;&amp;menu0==1){menu1++;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu1&gt;7){menu1=0;}}//меню 1
  if(ir.value==IR_1&amp;&amp;menu0==1){menu1--;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu1&lt;0){menu1=7;}}//меню 1
 
  if(ir.value==IR_2&amp;&amp;menu0==2){menu2++;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu2&gt;5){menu2=0;}}//меню 2
  if(ir.value==IR_1&amp;&amp;menu0==2){menu2--;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu2&lt;0){menu2=5;}}//меню 2
 
  if(ir.value==IR_6||digitalRead(2)==LOW){menu0++;if(menu0&gt;2){menu0=0;}cl();in_x=0;w2_arr();time0=millis();times1=millis();zast=0;w=1;lcd.setCursor(5,1);
     lcd.print(&quot;SETTING_&quot;);lcd.print(menu0);delay(500);lcd.clear();} 
 
  if(ir.value==IR_5||digitalRead(3)==LOW){in++;cl();time0=millis();times1=millis();zast=0;in_x=1;w=1;www=1;menu0=100;menu=100;if(in&gt;5){in=0;}}// IN   
    } // mute off
  if((ir.value==IR_7||digitalRead(4)==LOW)&amp;&amp;mute==1&amp;&amp;power==0){zast=0;mute=0;in_x=0;mute=0;menu0=100;cl();w=1;w2_arr();lcd.setCursor(8,1);lcd.print(&quot;MUTE&quot;);audio();delay(300);}// mute on
  if((ir.value==IR_7||digitalRead(4)==LOW)&amp;&amp;mute==0&amp;&amp;power==0){mute=1;cl();time0=millis();times1=millis();zast=0;w=1;w2_arr();menu0=0;menu=0;myEnc.write(0);audio();}// mute off
  }// power on
 
  if((ir.value==IR_8||digitalRead(5)==LOW||power_off==1)&amp;&amp;power==0){times1=millis();zast=0;power_off=0;power=1;in_x=0;mute=0;cl();audio();lcd.setCursor(5,1);lcd.print(&quot;POWER  OFF&quot;);menu0=100;delay(3000);analogWrite(6,BRIG_L);}// power off
  if((ir.value==IR_8||digitalRead(5)==LOW)&amp;&amp;power==1){times1=millis();zast=0;power=0;analogWrite(6, BRIG_H);cl();lcd.setCursor(5,1);lcd.print(&quot;POWER   ON &quot;);w=1;w2_arr();menu0=0;myEnc.write(0);mute=1;audio();delay(3000);cl();}// power on

if(power==0){digitalWrite(7,HIGH);if(in==2){digitalWrite(12,HIGH);}else{digitalWrite(12,LOW);}}
if(power==1){digitalWrite(7,LOW);digitalWrite(12,LOW);}
 
if(power==0&amp;&amp;zast==0){
   byte a1[8] = {0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
   byte a2[8] = {0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
   byte a3[8] = {0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000}; 
   byte a4[8] = {0b10000,0b11000,0b11100,0b11110,0b11100,0b11000,0b10000,0b00000}; //&gt;
   byte a5[8] = {0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000};
   lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);lcd.createChar(3,a4);lcd.createChar(4,a5);
  }
  if(power==1||zast==1){
      byte v1[8] = {7,7,7,7,7,7,7,7};
      byte v2[8] = {7,7,0, 0, 0, 0, 0, 0};      
      byte v3[8] = { 0, 0, 0, 0, 0,0,31,31};
      byte v4[8] = {31,31, 0, 0, 0, 0,31,31};
      byte v5[8] = { 28, 28, 0, 0, 0, 0, 28, 28};
      byte v6[8] = {28,28,28,28,28,28,28,28};
      byte v7[8] = { 0, 0, 0, 0, 0, 0,7,7};
      byte v8[8] = { 31, 31,0,0,0,0,0, 0};
   byte a[6];
   byte i0,d1,d2,d3,d4,d5,d6,e1,e2,e3;
  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);
 
     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(int i=0;i&lt;6;i++){
      switch(i){
        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;
        case 4: e1=14,e2=15,e3=16;break;
        case 5: e1=17,e2=18,e3=19;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);
  }
  lcd.setCursor(6,0);lcd.print(&quot;.&quot;);lcd.setCursor(13,0);lcd.print(&quot;.&quot;);lcd.setCursor(6,1);lcd.print(&quot;.&quot;);lcd.setCursor(13,1);lcd.print(&quot;.&quot;);
  
  lcd.setCursor(0,3);lcd.print(date/10);lcd.print(date%10),lcd.print(&quot;.&quot;);lcd.print(mont/10);lcd.print(mont%10);lcd.print(&quot;.&quot;);lcd.print(year);lcd.print(&quot; &quot;);
  lcd.print(clock.readTemperature(),1);lcd.print((char)223);lcd.print(&quot; &quot;);
  lcd.print(dn[wesk]); 
  
  //lcd.setCursor(5,3);lcd.print(&quot;POWER  OFF&quot;);
  
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(2)==LOW){korr++;if(korr&gt;6){korr=0;}delay(100);} // SET
 
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==1){hour++;if(hour&gt;23){hour=23;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);} // IN
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==1){hour--;if(hour&lt;0){hour=0;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}  // MUTE

  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==2){minut++;if(minut&gt;59){minut=59;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==2){minut--;if(minut&lt;0){minut=0;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==3){secon=0;clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==3){secon=0;clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}

  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==4){date++;if(date&gt;31){date=31;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==4){date--;if(date&lt;1){date=1;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}

  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==5){mont++;if(mont&gt;12){mont=12;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==5){mont--;if(mont&lt;1){mont=1;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}

  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==6){year++;if(year&gt;2050){year=2050;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==6){year--;if(year&lt;2022){year=2022;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  
  lcd.setCursor(0,2);
  switch(korr){
    case 0 : lcd.print(&quot;                &quot;);lcd.print(&quot;    &quot;);break;
    case 1 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;HOUR&quot;);break;
    case 2 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;MIN &quot;);break;
    case 3 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;SEC &quot;);break;
    case 4 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;DATE&quot;);break;
    case 5 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;MON &quot;);break;
    case 6 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;YEAR&quot;);break;
    }
  } 
/////////////////////////////// MENU0 = VOLUME TERBLE BASS MIDDLE ///////////////////////////////////////////////////////////////////////
  if(menu0==0){ 
    switch(menu){
      case 0: temp0 = vol;q=0;break;
      case 1: temp0 = bass;q=1;break;
      case 2: temp0 = mid;q=2;break;
      case 3: temp0 = treb;q=3;break;
      }
 
     if(ir.value==IR_3){temp0++;gr1=1;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;w2[q]=1;www=1;}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){temp0++;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;w2[q]=1;www=1;}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){temp0--;gr1=0;gr2=1;cl1();time0=millis();times1=millis();zast=0;w=1;w2[q]=1;www=1;}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){temp0--;gr1=0;cl1();time0=millis();times1=millis();zast=0;w=1;w2[q]=1;www=1;}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;   
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
     temp0=temp0+newPosition;myEnc.write(0);newPosition=0;time0=millis();times1=millis();zast=0;w=1;w2[q]=1;www=1;} 
 
 
     switch(menu){
      case 0: vol = temp0;vol_func();break;
      case 1: bass = temp0;bass_func();break;
      case 2: mid = temp0;mid_func();break;
      case 3: treb = temp0;treb_func();break;
      }
 
   au();
   for(int i=0;i&lt;4;i++){if(menu==i){lcd.setCursor(0,i);lcd.write((uint8_t)3);}else{lcd.setCursor(0,i);lcd.print(&quot; &quot;);}}
   lcd.setCursor(1,0);lcd.print(&quot;VOL(&quot;);lcd.print(in+1);lcd.print(&quot;) &quot;);if(vol&gt;=0){lcd.print(&quot; &quot;);}lcd.print(vol);lcd.print(&quot; &quot;);vol_d=map(vol,-63,0,1,24);
   lcd.setCursor(1,1);lcd.print(&quot;BASS   &quot;);if(bass&gt;=0){lcd.print(&quot; &quot;);}lcd.print(bass);lcd.print(&quot; &quot;);bass_d=map(bass,-15,15,1,24);
   lcd.setCursor(1,2);lcd.print(&quot;MIDDLE &quot;);if(mid&gt;=0){lcd.print(&quot; &quot;);}lcd.print(mid);lcd.print(&quot; &quot;);mid_d=map(mid,-15,15,1,24);
   lcd.setCursor(1,3);lcd.print(&quot;TREBLE &quot;);if(treb&gt;=0){lcd.print(&quot; &quot;);}lcd.print(treb);lcd.print(&quot; &quot;);treb_d=map(treb,-15,15,1,24);
 
 
   for(int n=0;n&lt;4;n++){if(w2[n]==1){
   switch(n){
    case 0: par = vol_d;break;
    case 1: par = bass_d;break;
    case 2: par = mid_d;break;
    case 3: par = treb_d;break; 
    } 
 
   for(z=0,z0=0,z1=0;z&lt;=par;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+12,n);lcd.write((uint8_t)0);lcd.setCursor(z0+1+12,n);Serial.println(z0);z_old=7-par/3;while(z_old&gt;0){z_old=z_old-1;lcd.write((uint8_t)4);}}}
   if(z1==3){lcd.setCursor(z0+12,n);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+12,n);lcd.write((uint8_t)2);}w2[n]=0;}
   }}// menu0 = 0
///////////////////////////////////////////////////////////////////////////////////////////////
 
///////////////////////////////////////////////////////////////////////////////////////////////
 
 if(menu0==1){
     switch(menu1){
      case 0: temp0 = att_lr;break;
      case 1: temp0 = att_rr;break;
      case 2: temp0 = att_lf;break;
      case 3: temp0 = att_rf;break;
      case 4: temp0 = att_rl;break;        //////////////////////////
      case 5: temp0 = att_l;break;
      case 6: temp0 = loun;break;
      case 7: temp0 = loun_f;break;
      }
 
     if(ir.value==IR_3){temp0++;gr1=1;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){temp0++;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){temp0--;gr1=0;gr2=1;cl1();time0=millis();times1=millis();zast=0;;w=1;www=1;}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){temp0--;gr1=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;     
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
     temp0=temp0+newPosition;myEnc.write(0);newPosition=0;time0=millis();times1=millis();zast=0;w=1;www=1;} 
 
     switch(menu1){
      case 0: att_lr = temp0;att_lr_func();break;
      case 1: att_rr = temp0;att_rr_func();break;
      case 2: att_lf = temp0;att_lf_func();break;
      case 3: att_rf = temp0;att_rf_func();break;      
      case 4: att_rl  = temp0;att_rl_func();break;     ///////////////////////////
      case 5: att_l  = temp0;att_l_func();break;
      case 6: loun  = temp0;loun_func();break;
      case 7: loun_f  = temp0;loun_f_func();break;
      }
 //if (att_l == 0){faza = 180;}if(att_l == 1){faza = 0;}   ///////////////////////
  au();
  for(int i=0;i&lt;8;i++){if(menu1==i){lcd.setCursor(mesto2[i],mesto3[i]);lcd.write((uint8_t)3);}else{lcd.setCursor(mesto2[i],mesto3[i]);lcd.print(&quot; &quot;);}}
 
  lcd.setCursor(1,0);lcd.print(&quot;AT_LR &quot;);lcd.print(att_lr);lcd.print(&quot; &quot;);lcd.setCursor(11,0);lcd.print(&quot;AT_RR &quot;);lcd.print(att_rr);lcd.print(&quot; &quot;);
  lcd.setCursor(1,1);lcd.print(&quot;AT_LF &quot;);lcd.print(att_lf);lcd.print(&quot; &quot;);lcd.setCursor(11,1);lcd.print(&quot;AT_RF &quot;);lcd.print(att_rf);lcd.print(&quot; &quot;);
  lcd.setCursor(1,2);lcd.print(&quot;AT_SW &quot;);lcd.print(att_rl);lcd.print(&quot; &quot;);lcd.setCursor(11,2);lcd.print(&quot;PHASE &quot;);lcd.print(&quot; &quot;);lcd.setCursor(17,2);
   switch(att_l){
    case 0: lcd.print(&quot;180&quot;);break;
    case 1: lcd.print(&quot;0  &quot;);break;}
  lcd.setCursor(1,3);lcd.print(&quot;LOUND &quot;);lcd.print(abs(loun));lcd.print(&quot; &quot;);lcd.setCursor(11,3);
  switch(loun_f){
    case 0: lcd.print(&quot;FLAT   &quot;);break;
    case 1: lcd.print(&quot;400  Hz&quot;);break;
    case 2: lcd.print(&quot;800  Hz&quot;);break;
    case 3: lcd.print(&quot;2.4 kHz&quot;);break;}
 
 } // menu0 = 1
 
 
///////////////////////////////////////////////////////////////////////////////////////////////
 
 if(menu0==2){
     switch(menu2){
      case 0: temp0 = bass_f;break;
      case 1: temp0 = mid_f;break;
      case 2: temp0 = treb_f;break;
      case 3: temp0 = sub_f;break;
      case 4: temp0 = bass_q;break;
      case 5: temp0 = mid_q;break;
      }
 
     if(ir.value==IR_3){temp0++;gr1=1;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){temp0++;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){temp0--;gr1=0;gr2=1;cl1();time0=millis();times1=millis();zast=0;;w=1;www=1;}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){temp0--;gr1=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;     
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
     temp0=temp0+newPosition;myEnc.write(0);newPosition=0;time0=millis();times1=millis();zast=0;w=1;www=1;} 
 
     switch(menu2){
      case 0: bass_f = temp0;bass_f_func();break;
      case 1: mid_f = temp0;mid_f_func();break;
      case 2: treb_f = temp0;treb_f_func();break;
      case 3: sub_f = temp0;sub_f_func();break;      
      case 4: bass_q  = temp0;bass_q_func();break;
      case 5: mid_q  = temp0;mid_q_func();break;
      }
 
  au();
  for(int i=0;i&lt;6;i++){if(menu2==i){lcd.setCursor(mesto2[i],mesto3[i]);lcd.write((uint8_t)3);}else{lcd.setCursor(mesto2[i],mesto3[i]);lcd.print(&quot; &quot;);}}
 
  lcd.setCursor(1,0);lcd.print(&quot;BF &quot;);
    switch(bass_f){
    case 0: lcd.print(&quot; 60 Hz&quot;);break;
    case 1: lcd.print(&quot; 80 Hz&quot;);break;
    case 2: lcd.print(&quot;100 Hz&quot;);break;
    case 3: lcd.print(&quot;200 Hz&quot;);break;}
  lcd.setCursor(11,0);lcd.print(&quot;MF &quot;);
    switch(mid_f){
      case 0: lcd.print(&quot;0.5kHz&quot;);break;
      case 1: lcd.print(&quot;1.0kHz&quot;);break;
      case 2: lcd.print(&quot;1.5kHz&quot;);break;
      case 3: lcd.print(&quot;2.5kHz&quot;);break;}
 
  lcd.setCursor(1,1);lcd.print(&quot;TF&quot;);
    switch(treb_f){
      case 0: lcd.print(&quot;10.0kHz&quot;);break;
      case 1: lcd.print(&quot;12.5kHz&quot;);break;
      case 2: lcd.print(&quot;15.0kHz&quot;);break;
      case 3: lcd.print(&quot;17.5kHz&quot;);break;}
 
  lcd.setCursor(11,1);lcd.print(&quot;SF &quot;);
    switch(sub_f){
      case 0: lcd.print(&quot;FLAT  &quot;);break;
      case 1: lcd.print(&quot;80 Hz&quot;);break;
      case 2: lcd.print(&quot;120 Hz&quot;);break;
      case 3: lcd.print(&quot;160 Hz&quot;);break;}
 
  lcd.setCursor(1,2);lcd.print(&quot;BQ &quot;);
    switch(bass_q){
      case 0: lcd.print(&quot;1.0 &quot;);break;
      case 1: lcd.print(&quot;1.25&quot;);break;
      case 2: lcd.print(&quot;1.5 &quot;);break;
      case 3: lcd.print(&quot;2.0 &quot;);break;}
 
  lcd.setCursor(11,2);lcd.print(&quot;MQ &quot;);
    switch(mid_q){
      case 0: lcd.print(&quot;0.5 &quot;);break;
      case 1: lcd.print(&quot;0.75&quot;);break;
      case 2: lcd.print(&quot;1.0 &quot;);break;
      case 3: lcd.print(&quot;1.25&quot;);break;}
 
 } // menu0 = 2 
 
 
////////////////////////// GAIN IN /////////////////////////////////////////////////////////////////////////////////////
if(in_x==1){ menu0=100;
   switch(in){
     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;
     case 5: gain0 = gain6;break;
     }
 
     if(ir.value==IR_3){gain0++;gr1=1;gr2=0;cl1();time0=millis();times1=millis();zast=0;www=1;w=1;gain_func();}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){gain0++;gr2=0;cl1();time0=millis();times1=millis();zast=0;www=1;w=1;gain_func();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){gain0--;gr1=0;gr2=1;cl1();time0=millis();times1=millis();zast=0;www=1;w=1;gain_func();}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){gain0--;gr1=0;cl1();time0=millis();times1=millis();zast=0;www=1;w=1;gain_func();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;  
 
    if (newPosition != oldPosition) {oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
    gain0=gain0+newPosition;myEnc.write(0);newPosition=0;time0=millis();times1=millis();zast=0;www=1;w=1;gain_func();} 
 
   switch(in){
     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;
     case 5: gain6 = gain0;break;
     }
 
  au();
 lcd.setCursor(7,1);lcd.print(&quot;INPUT &quot;);
switch(in){
  case 0: lcd.print(&quot;AUX1&quot;);break;
  case 1: lcd.print(&quot;AUX2&quot;);break;
  case 2: lcd.print(&quot;AUX3&quot;);break;
  case 3: lcd.print(&quot;AUX4&quot;);break;
  case 4: lcd.print(&quot;AUX5&quot;);break;
  case 5: lcd.print(&quot;AUX6&quot;);break;
}

lcd.setCursor(5,2);lcd.print(&quot;GAIN &quot;);lcd.print(gain0);lcd.print(&quot; &quot;);lcd.setCursor(14,2);lcd.print(&quot;dB &quot;);
   }
 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(in_x==1){in_time=3000;}else{in_time=10000;}
if(millis()-time0&gt;in_time&amp;&amp;w==1&amp;&amp;mute==1&amp;&amp;power==0&amp;&amp;zast==0){if(menu0==1){cl();}w=0;if(menu0!=0){cl();}menu0=0;menu=0;menu1=0;menu2=0;in_x=0;w2_arr();
   EEPROM.update(0,vol+63);EEPROM.update(1,bass+15);EEPROM.update(2,mid+15);EEPROM.update(3,treb+15);
   EEPROM.update(4,att_lr);EEPROM.update(5,att_rr);EEPROM.update(6,att_lf);EEPROM.update(7,att_rf);EEPROM.update(8,att_rl);EEPROM.update(9,att_l);
   EEPROM.update(10,loun);EEPROM.update(11,loun_f);
   EEPROM.update(12,bass_f);EEPROM.update(13,mid_f);EEPROM.update(14,treb_f);EEPROM.update(15,sub_f);
   EEPROM.update(16,bass_q);EEPROM.update(17,mid_q);
   EEPROM.update(18,gain1+15);EEPROM.update(19,gain2+15);EEPROM.update(20,gain3+15);EEPROM.update(21,gain4+15);EEPROM.update(22,gain5+15);EEPROM.update(23,gain6+15);
   }
if(millis()-times1&gt;60000&amp;&amp;zast==0&amp;&amp;mute==1){zast=1;menu0=100;}   
if(w==1&amp;&amp;zast==1){cl2();w=0;times1=millis();zast=0;menu0=0;menu=0;menu1=0;menu2=0;in_x=0;w2_arr();}  

}
 
 
void gain_func(){if(gain0&lt;-15){gain0=-15;}if(gain0&gt;15){gain0=15;}}
void w2_arr(){w2[0]=1;w2[1]=1;w2[2]=1;w2[3]=1;}
void loun_f_func(){if(loun_f&gt;3){loun_f=3;}if(loun_f&lt;0){loun_f=0;}}
void loun_func(){if(loun&lt;0){loun=0;}if(loun&gt;15){loun=15;}}
void att_lr_func(){if(att_lr&gt;16){att_lr=16;}if(att_lr&lt;0){att_lr=0;}}
void att_rr_func(){if(att_rr&gt;16){att_rr=16;}if(att_rr&lt;0){att_rr=0;}}
void att_lf_func(){if(att_lf&gt;16){att_lf=16;}if(att_lf&lt;0){att_lf=0;}}
void att_rf_func(){if(att_rf&gt;16){att_rf=16;}if(att_rf&lt;0){att_rf=0;}}
void att_rl_func(){if(att_rl&gt;15){att_rl=15;}if(att_rl&lt;0){att_rl=0;}}     //////////////////////////att_sw//////////////
void att_l_func(){if(att_l&gt;1){att_l=0;}if(att_l&lt;0){att_l=1;}}      //////////////////////////phase///////////////
void vol_func(){if(vol&lt;-63){vol=-63;}if(vol&gt;0){vol=0;}}
void treb_func(){if(treb&lt;-15){treb=-15;}if(treb&gt;15){treb=15;}}
void bass_func(){if(bass&lt;-15){bass=-15;}if(bass&gt;15){bass=15;}}
void mid_func(){if(mid&lt;-15){mid=-15;}if(mid&gt;15){mid=15;}}
void cl(){ir.value=0;delay(300);lcd.clear();}
void cl1(){ir.value=0;delay(50);}  
void cl2(){ir.value=0;lcd.clear();}  
void au(){if(www==1){audio();www=0;}}
void bass_f_func(){if(bass_f&gt;3){bass_f=3;}if(bass_f&lt;0){bass_f=0;}}
void mid_f_func(){if(mid_f&gt;3){mid_f=3;}if(mid_f&lt;0){mid_f=0;}}
void treb_f_func(){if(treb_f&gt;3){treb_f=3;}if(treb_f&lt;0){treb_f=0;}}
void sub_f_func(){if(sub_f&gt;3){sub_f=3;}if(sub_f&lt;0){sub_f=0;}}
void bass_q_func(){if(bass_q&gt;3){bass_q=3;}if(bass_q&lt;0){bass_q=0;}}
void mid_q_func(){if(mid_q&gt;3){mid_q=3;}if(mid_q&lt;0){mid_q=0;}}
 
void audio(){
tda.setInput(in,1,1,2); // 0...7, 0...1, 0...1, 0...7
tda.setInput_2(0,0,1,1,1,1); // 0...7, 0...1, 0...1, 0...1, 0...1, 0...1 
tda.setMix_source(7,0); // 0...7, 0...-31
tda.setMix_cont(1,1,1,1,1,1,1,1); // all 0...1
tda.setMute(mute,0,0,1,0,1,1); // 0...1, 0...1, 0...3, 0...1, 0...1, 0...1, 0...1 mute off = 1
tda.setSoft_1(1,1,1,1,1,1,1,1); //all 0...1
tda.setSoft_2(1,1,1,1,0,3); // 0...1, 0...1, 0...1, 0...1, 0...2, 0...3
tda.setLoudness(-loun,loun_f,1,1); // 0...-15, 0...3, 0...1, 0...1 
tda.setVol(gain0,1,1); // -15...+15, 0...1, 0...1
tda.setTreble(treb,treb_f,1); // -15...+15, 0...3, 0...1
tda.setMiddle(mid,mid_q,1); // -15...+15, 0...3, 0...1
tda.setBass(bass,bass_q,1); // -15...+15, 0...3, 0...1
tda.setSMB(sub_f,att_l,mid_f,bass_f,1); // 0...3, 0...1, 0...3, 0...3, 0...1    ///////////phase/////////
tda.setVol_LF(vol-att_lf,1); // 0...-79, 0...1 lov=63+16 att
tda.setVol_RF(vol-att_rf,1); // 0...-79, 0...1
tda.setVol_LR(vol-att_lr,1); // 0...-79, 0...1
tda.setVol_RR(vol-att_rr,1); // 0...-79, 0...1
tda.setVol_SUB_L(vol-att_rl,1); // 0...-79, 0...1             ////////////////////////////////////
tda.setVol_SUB_R(vol-att_rl,1); // 0...-79, 0...1             /////////////////////////////////////
tda.setTest1(0,14,1,1); // 0...1, 0...15, 0...1, 0...1
tda.setTest2(0,1,1,3); // 0...1, 0...1, 0...1, 0...3
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (honda473)]]></author>
			<pubDate>Sat, 20 Jun 2026 14:32:23 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=12696#p12696</guid>
		</item>
		<item>
			<title><![CDATA[Re: TDA7313 + DS3231 + IR + LCD2004]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=12694#p12694</link>
			<description><![CDATA[<p>При включении фаза показывает 0, при переключении 180, при следующем переключении 0 0. <span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2026/06/0342f4140a0bd04c7fca0905e0afa920.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2026/06/0342f4140a0bd04c7fca0905e0afa920.jpg" /></span> ,<span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2026/06/a83ba9d6477b4787d13a969d4e3ce967.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2026/06/a83ba9d6477b4787d13a969d4e3ce967.jpg" /></span> ,<span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2026/06/3369d3cfdc743e808526256626a9265b.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2026/06/3369d3cfdc743e808526256626a9265b.jpg" /></span></p>]]></description>
			<author><![CDATA[null@example.com (Magali2012)]]></author>
			<pubDate>Sat, 20 Jun 2026 13:51:41 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=12694#p12694</guid>
		</item>
		<item>
			<title><![CDATA[Re: TDA7313 + DS3231 + IR + LCD2004]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=12693#p12693</link>
			<description><![CDATA[<div class="codebox"><pre><code>#define IR_1 0x20DF00FF // Кнопка вверх
#define IR_2 0x20DF807F // Кнопка вниз
#define IR_3 0x20DF40BF // Кнопка &gt;
#define IR_4 0x20DFC03F // Кнопка &lt;
#define IR_5 0x20DFD02F // Кнопка IN
#define IR_6 0x20DFC23D // Кнопка SET
#define IR_7 0x20DF906F // Кнопка MUTE
#define IR_8 0x20DF10EF // Кнопка STANDBY (POWER)

#define BRIG_H 200      // Яркость 0...255 POWER ON
#define BRIG_L 50       // Яркость 0...255 POWER OFF
 
#include &lt;TDA7719.h&gt;            // http://rcl-radio.ru/wp-content/uploads/2019/07/TDA7719.zip
#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/2022/10/DS3231.zip
 TDA7719 tda;
 DS3231 clock;RTCDateTime DateTime;
 LiquidCrystal_I2C lcd(0x27,20,4);  // Устанавливаем дисплей
 IRrecv irrecv(11); // указываем вывод модуля IR приемника
 Encoder myEnc(9, 8);// DT, CLK
 decode_results ir; 
 int in,loun,loun_f,vol_att,treb,treb_f,mid,mid_q,bass,bass_q,sub_f,faza,mid_f,bass_f;  ////////////////////////////
 int vol,att_lf,att_rf,att_lr,att_rr,att_l,att_rl;
 long time0,oldPosition  = -999,newPosition,times1;
 int menu0,menu,temp0,vol_d,bass_d,treb_d,par,z_old,z1,z0,z,menu1,in_time;
 byte q,gr1,gr2,w,w2[4],www,power,in_x,mute=1;
 int hour,minut,secon,mid_d,menu2,gain0,gain1,gain2,gain3,gain4,gain5,gain6,date,mont,year,korr;
 byte mesto2[8]={0,10,0,10,0,10,0,10};
 byte mesto3[8]={0,0,1,1,2,2,3,3};
 bool power_off=1;
 String dn[]={&quot;   &quot;,&quot;MON&quot;,&quot;TUE&quot;,&quot;WED&quot;,&quot;THU&quot;,&quot;FRI&quot;,&quot;SAT&quot;,&quot;SUN&quot;};
 byte wesk,zast;
 
void setup() {
  irrecv.enableIRIn();lcd.init();lcd.backlight();clock.begin();Serial.begin(9600);
  pinMode(10,INPUT);  // МЕНЮ КНОПКА SW энкодера
  pinMode(2,INPUT_PULLUP);   // КНОПКА SET
  pinMode(3,INPUT_PULLUP);   // КНОПКА IN
  pinMode(4,INPUT_PULLUP);   // КНОПКА MUTE
  pinMode(5,INPUT_PULLUP);   // КНОПКА STANDBY
  pinMode(7,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ STANDBY
  pinMode(6,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ ПОДСВЕТКОЙ
  pinMode(12,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ Bluetooth
  analogWrite(6, BRIG_H);// больше 200 не делать
  lcd.setCursor(3,1);lcd.print(&quot;Sound Processor&quot;);lcd.setCursor(7,2);lcd.print(&quot;TDA7719&quot;); delay(2000);lcd.clear();
  MsTimer2::set(4, 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);}}// очистка памяти при первом включении  
  vol = EEPROM.read(0)-63;bass = EEPROM.read(1)-15;mid = EEPROM.read(2)-15;treb = EEPROM.read(3)-15;
  att_lr = EEPROM.read(4);att_rr = EEPROM.read(5);att_lf = EEPROM.read(6);att_rf = EEPROM.read(7);att_rl = EEPROM.read(8);att_l = EEPROM.read(9);
  loun = EEPROM.read(10);loun_f = EEPROM.read(11);
  bass_f = EEPROM.read(12);mid_f = EEPROM.read(13);treb_f = EEPROM.read(14);sub_f = EEPROM.read(15);
  bass_q = EEPROM.read(16);mid_q = EEPROM.read(17);
  gain1 = EEPROM.read(18)-15;gain2 = EEPROM.read(19)-15;gain3 = EEPROM.read(20)-15;gain4=EEPROM.read(21)-15;gain5=EEPROM.read(22)-15;gain6=EEPROM.read(23)-15;
  switch(in){
     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;
     case 5: gain0 = gain6;break;
     }
  w2_arr();audio();cl();
}
 
void to_Timer(){newPosition = myEnc.read()/4;}
 
void loop() { 
 DateTime = clock.getDateTime();hour = DateTime.hour;minut = DateTime.minute;secon = DateTime.second;
 date = DateTime.day;mont = DateTime.month;year = DateTime.year;wesk = DateTime.dayOfWeek;

  /////////////////////////////// УПРАВЛЕНИЕ //////////////////////////////////////////////
  if ( irrecv.decode( &amp;ir )) {Serial.print(&quot;0x&quot;);Serial.println( ir.value,HEX);irrecv.resume();}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
  if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта  

  if((digitalRead(10)==LOW||digitalRead(2)==LOW||digitalRead(3)==LOW||digitalRead(4)==LOW||digitalRead(5)==LOW)&amp;&amp; zast==1){cl();w=0;times1=millis();zast=0;menu0=0;menu=0;menu1=0;menu2=0;in_x=0;w2_arr();} 
  if((ir.value==IR_1||ir.value==IR_2||ir.value==IR_3||ir.value==IR_4||ir.value==IR_5||ir.value==IR_6||ir.value==IR_7||ir.value==IR_8)&amp;&amp;zast==1){
  cl();w=0;times1=millis();zast=0;menu0=0;menu=0;menu1=0;menu2=0;in_x=0;w2_arr();} 
 
  if(power==0){
    if(mute==1){
  if(digitalRead(10)==LOW&amp;&amp;menu0==0){menu++;delay(200);time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu&gt;3){menu=0;}}// меню 0
  if(digitalRead(10)==LOW&amp;&amp;menu0==1){menu1++;delay(200);time0=millis();times1=millis();zast=0;in_x=0;w=1;if(menu1&gt;7){menu1=0;}}// меню 1
  if(digitalRead(10)==LOW&amp;&amp;menu0==2){menu2++;delay(200);time0=millis();times1=millis();zast=0;in_x=0;w=1;if(menu2&gt;5){menu2=0;}}// меню 2
 
  if(ir.value==IR_2&amp;&amp;menu0==0){menu++;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu&gt;3){menu=0;}}//меню 0
  if(ir.value==IR_1&amp;&amp;menu0==0){menu--;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu&lt;0){menu=3;}}//меню 0
 
  if(ir.value==IR_2&amp;&amp;menu0==1){menu1++;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu1&gt;7){menu1=0;}}//меню 1
  if(ir.value==IR_1&amp;&amp;menu0==1){menu1--;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu1&lt;0){menu1=7;}}//меню 1
 
  if(ir.value==IR_2&amp;&amp;menu0==2){menu2++;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu2&gt;5){menu2=0;}}//меню 2
  if(ir.value==IR_1&amp;&amp;menu0==2){menu2--;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu2&lt;0){menu2=5;}}//меню 2
 
  if(ir.value==IR_6||digitalRead(2)==LOW){menu0++;if(menu0&gt;2){menu0=0;}cl();in_x=0;w2_arr();time0=millis();times1=millis();zast=0;w=1;lcd.setCursor(5,1);
     lcd.print(&quot;SETTING_&quot;);lcd.print(menu0);delay(500);lcd.clear();} 
 
  if(ir.value==IR_5||digitalRead(3)==LOW){in++;cl();time0=millis();times1=millis();zast=0;in_x=1;w=1;www=1;menu0=100;menu=100;if(in&gt;5){in=0;}}// IN   
    } // mute off
  if((ir.value==IR_7||digitalRead(4)==LOW)&amp;&amp;mute==1&amp;&amp;power==0){zast=0;mute=0;in_x=0;mute=0;menu0=100;cl();w=1;w2_arr();lcd.setCursor(8,1);lcd.print(&quot;MUTE&quot;);audio();delay(300);}// mute on
  if((ir.value==IR_7||digitalRead(4)==LOW)&amp;&amp;mute==0&amp;&amp;power==0){mute=1;cl();time0=millis();times1=millis();zast=0;w=1;w2_arr();menu0=0;menu=0;myEnc.write(0);audio();}// mute off
  }// power on
 
  if((ir.value==IR_8||digitalRead(5)==LOW||power_off==1)&amp;&amp;power==0){times1=millis();zast=0;power_off=0;power=1;in_x=0;mute=0;cl();audio();lcd.setCursor(5,1);lcd.print(&quot;POWER  OFF&quot;);menu0=100;delay(3000);analogWrite(6,BRIG_L);}// power off
  if((ir.value==IR_8||digitalRead(5)==LOW)&amp;&amp;power==1){times1=millis();zast=0;power=0;analogWrite(6, BRIG_H);cl();lcd.setCursor(5,1);lcd.print(&quot;POWER   ON &quot;);w=1;w2_arr();menu0=0;myEnc.write(0);mute=1;audio();delay(3000);cl();}// power on

if(power==0){digitalWrite(7,HIGH);if(in==2){digitalWrite(12,HIGH);}else{digitalWrite(12,LOW);}}
if(power==1){digitalWrite(7,LOW);digitalWrite(12,LOW);}
 
if(power==0&amp;&amp;zast==0){
   byte a1[8] = {0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
   byte a2[8] = {0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
   byte a3[8] = {0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000}; 
   byte a4[8] = {0b10000,0b11000,0b11100,0b11110,0b11100,0b11000,0b10000,0b00000}; //&gt;
   byte a5[8] = {0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000};
   lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);lcd.createChar(3,a4);lcd.createChar(4,a5);
  }
  if(power==1||zast==1){
      byte v1[8] = {7,7,7,7,7,7,7,7};
      byte v2[8] = {7,7,0, 0, 0, 0, 0, 0};      
      byte v3[8] = { 0, 0, 0, 0, 0,0,31,31};
      byte v4[8] = {31,31, 0, 0, 0, 0,31,31};
      byte v5[8] = { 28, 28, 0, 0, 0, 0, 28, 28};
      byte v6[8] = {28,28,28,28,28,28,28,28};
      byte v7[8] = { 0, 0, 0, 0, 0, 0,7,7};
      byte v8[8] = { 31, 31,0,0,0,0,0, 0};
   byte a[6];
   byte i0,d1,d2,d3,d4,d5,d6,e1,e2,e3;
  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);
 
     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(int i=0;i&lt;6;i++){
      switch(i){
        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;
        case 4: e1=14,e2=15,e3=16;break;
        case 5: e1=17,e2=18,e3=19;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);
  }
  lcd.setCursor(6,0);lcd.print(&quot;.&quot;);lcd.setCursor(13,0);lcd.print(&quot;.&quot;);lcd.setCursor(6,1);lcd.print(&quot;.&quot;);lcd.setCursor(13,1);lcd.print(&quot;.&quot;);
  
  lcd.setCursor(0,3);lcd.print(date/10);lcd.print(date%10),lcd.print(&quot;.&quot;);lcd.print(mont/10);lcd.print(mont%10);lcd.print(&quot;.&quot;);lcd.print(year);lcd.print(&quot; &quot;);
  lcd.print(clock.readTemperature(),1);lcd.print((char)223);lcd.print(&quot; &quot;);
  lcd.print(dn[wesk]); 
  
  //lcd.setCursor(5,3);lcd.print(&quot;POWER  OFF&quot;);
  
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(2)==LOW){korr++;if(korr&gt;6){korr=0;}delay(100);} // SET
 
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==1){hour++;if(hour&gt;23){hour=23;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);} // IN
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==1){hour--;if(hour&lt;0){hour=0;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}  // MUTE

  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==2){minut++;if(minut&gt;59){minut=59;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==2){minut--;if(minut&lt;0){minut=0;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==3){secon=0;clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==3){secon=0;clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}

  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==4){date++;if(date&gt;31){date=31;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==4){date--;if(date&lt;1){date=1;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}

  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==5){mont++;if(mont&gt;12){mont=12;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==5){mont--;if(mont&lt;1){mont=1;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}

  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==6){year++;if(year&gt;2050){year=2050;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==6){year--;if(year&lt;2022){year=2022;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  
  lcd.setCursor(0,2);
  switch(korr){
    case 0 : lcd.print(&quot;                &quot;);lcd.print(&quot;    &quot;);break;
    case 1 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;HOUR&quot;);break;
    case 2 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;MIN &quot;);break;
    case 3 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;SEC &quot;);break;
    case 4 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;DATE&quot;);break;
    case 5 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;MON &quot;);break;
    case 6 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;YEAR&quot;);break;
    }
  } 
/////////////////////////////// MENU0 = VOLUME TERBLE BASS MIDDLE ///////////////////////////////////////////////////////////////////////
  if(menu0==0){ 
    switch(menu){
      case 0: temp0 = vol;q=0;break;
      case 1: temp0 = bass;q=1;break;
      case 2: temp0 = mid;q=2;break;
      case 3: temp0 = treb;q=3;break;
      }
 
     if(ir.value==IR_3){temp0++;gr1=1;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;w2[q]=1;www=1;}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){temp0++;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;w2[q]=1;www=1;}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){temp0--;gr1=0;gr2=1;cl1();time0=millis();times1=millis();zast=0;w=1;w2[q]=1;www=1;}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){temp0--;gr1=0;cl1();time0=millis();times1=millis();zast=0;w=1;w2[q]=1;www=1;}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;   
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
     temp0=temp0+newPosition;myEnc.write(0);newPosition=0;time0=millis();times1=millis();zast=0;w=1;w2[q]=1;www=1;} 
 
 
     switch(menu){
      case 0: vol = temp0;vol_func();break;
      case 1: bass = temp0;bass_func();break;
      case 2: mid = temp0;mid_func();break;
      case 3: treb = temp0;treb_func();break;
      }
 
   au();
   for(int i=0;i&lt;4;i++){if(menu==i){lcd.setCursor(0,i);lcd.write((uint8_t)3);}else{lcd.setCursor(0,i);lcd.print(&quot; &quot;);}}
   lcd.setCursor(1,0);lcd.print(&quot;VOL(&quot;);lcd.print(in+1);lcd.print(&quot;) &quot;);if(vol&gt;=0){lcd.print(&quot; &quot;);}lcd.print(vol);lcd.print(&quot; &quot;);vol_d=map(vol,-63,0,1,24);
   lcd.setCursor(1,1);lcd.print(&quot;BASS   &quot;);if(bass&gt;=0){lcd.print(&quot; &quot;);}lcd.print(bass);lcd.print(&quot; &quot;);bass_d=map(bass,-15,15,1,24);
   lcd.setCursor(1,2);lcd.print(&quot;MIDDLE &quot;);if(mid&gt;=0){lcd.print(&quot; &quot;);}lcd.print(mid);lcd.print(&quot; &quot;);mid_d=map(mid,-15,15,1,24);
   lcd.setCursor(1,3);lcd.print(&quot;TREBLE &quot;);if(treb&gt;=0){lcd.print(&quot; &quot;);}lcd.print(treb);lcd.print(&quot; &quot;);treb_d=map(treb,-15,15,1,24);
 
 
   for(int n=0;n&lt;4;n++){if(w2[n]==1){
   switch(n){
    case 0: par = vol_d;break;
    case 1: par = bass_d;break;
    case 2: par = mid_d;break;
    case 3: par = treb_d;break; 
    } 
 
   for(z=0,z0=0,z1=0;z&lt;=par;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+12,n);lcd.write((uint8_t)0);lcd.setCursor(z0+1+12,n);Serial.println(z0);z_old=7-par/3;while(z_old&gt;0){z_old=z_old-1;lcd.write((uint8_t)4);}}}
   if(z1==3){lcd.setCursor(z0+12,n);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+12,n);lcd.write((uint8_t)2);}w2[n]=0;}
   }}// menu0 = 0
///////////////////////////////////////////////////////////////////////////////////////////////
 
///////////////////////////////////////////////////////////////////////////////////////////////
 
 if(menu0==1){
     switch(menu1){
      case 0: temp0 = att_lr;break;
      case 1: temp0 = att_rr;break;
      case 2: temp0 = att_lf;break;
      case 3: temp0 = att_rf;break;
      case 4: temp0 = att_rl;break;        //////////////////////////
      case 5: temp0 = att_l;break;
      case 6: temp0 = loun;break;
      case 7: temp0 = loun_f;break;
      }
 
     if(ir.value==IR_3){temp0++;gr1=1;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){temp0++;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){temp0--;gr1=0;gr2=1;cl1();time0=millis();times1=millis();zast=0;;w=1;www=1;}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){temp0--;gr1=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;     
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
     temp0=temp0+newPosition;myEnc.write(0);newPosition=0;time0=millis();times1=millis();zast=0;w=1;www=1;} 
 
     switch(menu1){
      case 0: att_lr = temp0;att_lr_func();break;
      case 1: att_rr = temp0;att_rr_func();break;
      case 2: att_lf = temp0;att_lf_func();break;
      case 3: att_rf = temp0;att_rf_func();break;      
      case 4: att_rl  = temp0;att_rl_func();break;     ///////////////////////////
      case 5: att_l  = temp0;att_l_func();break;
      case 6: loun  = temp0;loun_func();break;
      case 7: loun_f  = temp0;loun_f_func();break;
      }
 if (att_l == 0){faza = 180;}if(att_l == 1){faza = 0;}   ///////////////////////
  au();
  for(int i=0;i&lt;8;i++){if(menu1==i){lcd.setCursor(mesto2[i],mesto3[i]);lcd.write((uint8_t)3);}else{lcd.setCursor(mesto2[i],mesto3[i]);lcd.print(&quot; &quot;);}}
 
  lcd.setCursor(1,0);lcd.print(&quot;AT_LR &quot;);lcd.print(att_lr);lcd.print(&quot; &quot;);lcd.setCursor(11,0);lcd.print(&quot;AT_RR &quot;);lcd.print(att_rr);lcd.print(&quot; &quot;);
  lcd.setCursor(1,1);lcd.print(&quot;AT_LF &quot;);lcd.print(att_lf);lcd.print(&quot; &quot;);lcd.setCursor(11,1);lcd.print(&quot;AT_RF &quot;);lcd.print(att_rf);lcd.print(&quot; &quot;);
  lcd.setCursor(1,2);lcd.print(&quot;AT_SW &quot;);lcd.print(att_rl);lcd.print(&quot; &quot;);lcd.setCursor(11,2);lcd.print(&quot;PHASE &quot;);lcd.print(faza);lcd.print(&quot; &quot;);
  lcd.setCursor(1,3);lcd.print(&quot;LOUND &quot;);lcd.print(abs(loun));lcd.print(&quot; &quot;);lcd.setCursor(11,3);
  switch(loun_f){
    case 0: lcd.print(&quot;FLAT   &quot;);break;
    case 1: lcd.print(&quot;400  Hz&quot;);break;
    case 2: lcd.print(&quot;800  Hz&quot;);break;
    case 3: lcd.print(&quot;2.4 kHz&quot;);break;}
 
 } // menu0 = 1
 
 
///////////////////////////////////////////////////////////////////////////////////////////////
 
 if(menu0==2){
     switch(menu2){
      case 0: temp0 = bass_f;break;
      case 1: temp0 = mid_f;break;
      case 2: temp0 = treb_f;break;
      case 3: temp0 = sub_f;break;
      case 4: temp0 = bass_q;break;
      case 5: temp0 = mid_q;break;
      }
 
     if(ir.value==IR_3){temp0++;gr1=1;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){temp0++;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){temp0--;gr1=0;gr2=1;cl1();time0=millis();times1=millis();zast=0;;w=1;www=1;}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){temp0--;gr1=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;     
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
     temp0=temp0+newPosition;myEnc.write(0);newPosition=0;time0=millis();times1=millis();zast=0;w=1;www=1;} 
 
     switch(menu2){
      case 0: bass_f = temp0;bass_f_func();break;
      case 1: mid_f = temp0;mid_f_func();break;
      case 2: treb_f = temp0;treb_f_func();break;
      case 3: sub_f = temp0;sub_f_func();break;      
      case 4: bass_q  = temp0;bass_q_func();break;
      case 5: mid_q  = temp0;mid_q_func();break;
      }
 
  au();
  for(int i=0;i&lt;6;i++){if(menu2==i){lcd.setCursor(mesto2[i],mesto3[i]);lcd.write((uint8_t)3);}else{lcd.setCursor(mesto2[i],mesto3[i]);lcd.print(&quot; &quot;);}}
 
  lcd.setCursor(1,0);lcd.print(&quot;BF &quot;);
    switch(bass_f){
    case 0: lcd.print(&quot; 60 Hz&quot;);break;
    case 1: lcd.print(&quot; 80 Hz&quot;);break;
    case 2: lcd.print(&quot;100 Hz&quot;);break;
    case 3: lcd.print(&quot;200 Hz&quot;);break;}
  lcd.setCursor(11,0);lcd.print(&quot;MF &quot;);
    switch(mid_f){
      case 0: lcd.print(&quot;0.5kHz&quot;);break;
      case 1: lcd.print(&quot;1.0kHz&quot;);break;
      case 2: lcd.print(&quot;1.5kHz&quot;);break;
      case 3: lcd.print(&quot;2.5kHz&quot;);break;}
 
  lcd.setCursor(1,1);lcd.print(&quot;TF&quot;);
    switch(treb_f){
      case 0: lcd.print(&quot;10.0kHz&quot;);break;
      case 1: lcd.print(&quot;12.5kHz&quot;);break;
      case 2: lcd.print(&quot;15.0kHz&quot;);break;
      case 3: lcd.print(&quot;17.5kHz&quot;);break;}
 
  lcd.setCursor(11,1);lcd.print(&quot;SF &quot;);
    switch(sub_f){
      case 0: lcd.print(&quot;FLAT  &quot;);break;
      case 1: lcd.print(&quot;80 Hz&quot;);break;
      case 2: lcd.print(&quot;120 Hz&quot;);break;
      case 3: lcd.print(&quot;160 Hz&quot;);break;}
 
  lcd.setCursor(1,2);lcd.print(&quot;BQ &quot;);
    switch(bass_q){
      case 0: lcd.print(&quot;1.0 &quot;);break;
      case 1: lcd.print(&quot;1.25&quot;);break;
      case 2: lcd.print(&quot;1.5 &quot;);break;
      case 3: lcd.print(&quot;2.0 &quot;);break;}
 
  lcd.setCursor(11,2);lcd.print(&quot;MQ &quot;);
    switch(mid_q){
      case 0: lcd.print(&quot;0.5 &quot;);break;
      case 1: lcd.print(&quot;0.75&quot;);break;
      case 2: lcd.print(&quot;1.0 &quot;);break;
      case 3: lcd.print(&quot;1.25&quot;);break;}
 
 } // menu0 = 2 
 
 
////////////////////////// GAIN IN /////////////////////////////////////////////////////////////////////////////////////
if(in_x==1){ menu0=100;
   switch(in){
     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;
     case 5: gain0 = gain6;break;
     }
 
     if(ir.value==IR_3){gain0++;gr1=1;gr2=0;cl1();time0=millis();times1=millis();zast=0;www=1;w=1;gain_func();}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){gain0++;gr2=0;cl1();time0=millis();times1=millis();zast=0;www=1;w=1;gain_func();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){gain0--;gr1=0;gr2=1;cl1();time0=millis();times1=millis();zast=0;www=1;w=1;gain_func();}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){gain0--;gr1=0;cl1();time0=millis();times1=millis();zast=0;www=1;w=1;gain_func();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;  
 
    if (newPosition != oldPosition) {oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
    gain0=gain0+newPosition;myEnc.write(0);newPosition=0;time0=millis();times1=millis();zast=0;www=1;w=1;gain_func();} 
 
   switch(in){
     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;
     case 5: gain6 = gain0;break;
     }
 
  au();
 lcd.setCursor(7,1);lcd.print(&quot;INPUT &quot;);
switch(in){
  case 0: lcd.print(&quot;AUX1&quot;);break;
  case 1: lcd.print(&quot;AUX2&quot;);break;
  case 2: lcd.print(&quot;AUX3&quot;);break;
  case 3: lcd.print(&quot;AUX4&quot;);break;
  case 4: lcd.print(&quot;AUX5&quot;);break;
  case 5: lcd.print(&quot;AUX6&quot;);break;
}

lcd.setCursor(5,2);lcd.print(&quot;GAIN &quot;);lcd.print(gain0);lcd.print(&quot; &quot;);lcd.setCursor(14,2);lcd.print(&quot;dB &quot;);
   }
 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(in_x==1){in_time=3000;}else{in_time=10000;}
if(millis()-time0&gt;in_time&amp;&amp;w==1&amp;&amp;mute==1&amp;&amp;power==0&amp;&amp;zast==0){if(menu0==1){cl();}w=0;if(menu0!=0){cl();}menu0=0;menu=0;menu1=0;menu2=0;in_x=0;w2_arr();
   EEPROM.update(0,vol+63);EEPROM.update(1,bass+15);EEPROM.update(2,mid+15);EEPROM.update(3,treb+15);
   EEPROM.update(4,att_lr);EEPROM.update(5,att_rr);EEPROM.update(6,att_lf);EEPROM.update(7,att_rf);EEPROM.update(8,att_rl);EEPROM.update(9,att_l);
   EEPROM.update(10,loun);EEPROM.update(11,loun_f);
   EEPROM.update(12,bass_f);EEPROM.update(13,mid_f);EEPROM.update(14,treb_f);EEPROM.update(15,sub_f);
   EEPROM.update(16,bass_q);EEPROM.update(17,mid_q);
   EEPROM.update(18,gain1+15);EEPROM.update(19,gain2+15);EEPROM.update(20,gain3+15);EEPROM.update(21,gain4+15);EEPROM.update(22,gain5+15);EEPROM.update(23,gain6+15);
   }
if(millis()-times1&gt;60000&amp;&amp;zast==0&amp;&amp;mute==1){zast=1;menu0=100;}   
if(w==1&amp;&amp;zast==1){cl2();w=0;times1=millis();zast=0;menu0=0;menu=0;menu1=0;menu2=0;in_x=0;w2_arr();}  

}
 
 
void gain_func(){if(gain0&lt;-15){gain0=-15;}if(gain0&gt;15){gain0=15;}}
void w2_arr(){w2[0]=1;w2[1]=1;w2[2]=1;w2[3]=1;}
void loun_f_func(){if(loun_f&gt;3){loun_f=3;}if(loun_f&lt;0){loun_f=0;}}
void loun_func(){if(loun&lt;0){loun=0;}if(loun&gt;15){loun=15;}}
void att_lr_func(){if(att_lr&gt;16){att_lr=16;}if(att_lr&lt;0){att_lr=0;}}
void att_rr_func(){if(att_rr&gt;16){att_rr=16;}if(att_rr&lt;0){att_rr=0;}}
void att_lf_func(){if(att_lf&gt;16){att_lf=16;}if(att_lf&lt;0){att_lf=0;}}
void att_rf_func(){if(att_rf&gt;16){att_rf=16;}if(att_rf&lt;0){att_rf=0;}}
void att_rl_func(){if(att_rl&gt;15){att_rl=15;}if(att_rl&lt;0){att_rl=0;}}     //////////////////////////att_sw//////////////
void att_l_func(){if(att_l&gt;1){att_l=0;}if(att_l&lt;0){att_l=1;}}      //////////////////////////phase///////////////
void vol_func(){if(vol&lt;-63){vol=-63;}if(vol&gt;0){vol=0;}}
void treb_func(){if(treb&lt;-15){treb=-15;}if(treb&gt;15){treb=15;}}
void bass_func(){if(bass&lt;-15){bass=-15;}if(bass&gt;15){bass=15;}}
void mid_func(){if(mid&lt;-15){mid=-15;}if(mid&gt;15){mid=15;}}
void cl(){ir.value=0;delay(300);lcd.clear();}
void cl1(){ir.value=0;delay(50);}  
void cl2(){ir.value=0;lcd.clear();}  
void au(){if(www==1){audio();www=0;}}
void bass_f_func(){if(bass_f&gt;3){bass_f=3;}if(bass_f&lt;0){bass_f=0;}}
void mid_f_func(){if(mid_f&gt;3){mid_f=3;}if(mid_f&lt;0){mid_f=0;}}
void treb_f_func(){if(treb_f&gt;3){treb_f=3;}if(treb_f&lt;0){treb_f=0;}}
void sub_f_func(){if(sub_f&gt;3){sub_f=3;}if(sub_f&lt;0){sub_f=0;}}
void bass_q_func(){if(bass_q&gt;3){bass_q=3;}if(bass_q&lt;0){bass_q=0;}}
void mid_q_func(){if(mid_q&gt;3){mid_q=3;}if(mid_q&lt;0){mid_q=0;}}
 
void audio(){
tda.setInput(in,1,1,2); // 0...7, 0...1, 0...1, 0...7
tda.setInput_2(0,0,1,1,1,1); // 0...7, 0...1, 0...1, 0...1, 0...1, 0...1 
tda.setMix_source(7,0); // 0...7, 0...-31
tda.setMix_cont(1,1,1,1,1,1,1,1); // all 0...1
tda.setMute(mute,0,0,1,0,1,1); // 0...1, 0...1, 0...3, 0...1, 0...1, 0...1, 0...1 mute off = 1
tda.setSoft_1(1,1,1,1,1,1,1,1); //all 0...1
tda.setSoft_2(1,1,1,1,0,3); // 0...1, 0...1, 0...1, 0...1, 0...2, 0...3
tda.setLoudness(-loun,loun_f,1,1); // 0...-15, 0...3, 0...1, 0...1 
tda.setVol(gain0,1,1); // -15...+15, 0...1, 0...1
tda.setTreble(treb,treb_f,1); // -15...+15, 0...3, 0...1
tda.setMiddle(mid,mid_q,1); // -15...+15, 0...3, 0...1
tda.setBass(bass,bass_q,1); // -15...+15, 0...3, 0...1
tda.setSMB(sub_f,att_l,mid_f,bass_f,1); // 0...3, 0...1, 0...3, 0...3, 0...1    ///////////phase/////////
tda.setVol_LF(vol-att_lf,1); // 0...-79, 0...1 lov=63+16 att
tda.setVol_RF(vol-att_rf,1); // 0...-79, 0...1
tda.setVol_LR(vol-att_lr,1); // 0...-79, 0...1
tda.setVol_RR(vol-att_rr,1); // 0...-79, 0...1
tda.setVol_SUB_L(vol-att_rl,1); // 0...-79, 0...1             ////////////////////////////////////
tda.setVol_SUB_R(vol-att_rl,1); // 0...-79, 0...1             /////////////////////////////////////
tda.setTest1(0,14,1,1); // 0...1, 0...15, 0...1, 0...1
tda.setTest2(0,1,1,3); // 0...1, 0...1, 0...1, 0...3
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (honda473)]]></author>
			<pubDate>Sat, 20 Jun 2026 12:15:32 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=12693#p12693</guid>
		</item>
		<item>
			<title><![CDATA[Re: TDA7313 + DS3231 + IR + LCD2004]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=12692#p12692</link>
			<description><![CDATA[<p>Попробуйте при регулировке фазы сабвуфера покрутить энкодер как влево ,так и вправо.</p>]]></description>
			<author><![CDATA[null@example.com (honda473)]]></author>
			<pubDate>Sat, 20 Jun 2026 12:10:00 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=12692#p12692</guid>
		</item>
		<item>
			<title><![CDATA[Re: TDA7313 + DS3231 + IR + LCD2004]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=12690#p12690</link>
			<description><![CDATA[<p>При регулировке фазы ничего не происходит , все время светится 0.<span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2026/06/dff7f9917ff474e43282df86c0d4021b.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2026/06/dff7f9917ff474e43282df86c0d4021b.jpg" /></span></p>]]></description>
			<author><![CDATA[null@example.com (Magali2012)]]></author>
			<pubDate>Fri, 19 Jun 2026 19:14:35 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=12690#p12690</guid>
		</item>
		<item>
			<title><![CDATA[Re: TDA7313 + DS3231 + IR + LCD2004]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=12689#p12689</link>
			<description><![CDATA[<div class="codebox"><pre><code>#define IR_1 0x20DF00FF // Кнопка вверх
#define IR_2 0x20DF807F // Кнопка вниз
#define IR_3 0x20DF40BF // Кнопка &gt;
#define IR_4 0x20DFC03F // Кнопка &lt;
#define IR_5 0x20DFD02F // Кнопка IN
#define IR_6 0x20DFC23D // Кнопка SET
#define IR_7 0x20DF906F // Кнопка MUTE
#define IR_8 0x20DF10EF // Кнопка STANDBY (POWER)

#define BRIG_H 200      // Яркость 0...255 POWER ON
#define BRIG_L 50       // Яркость 0...255 POWER OFF
 
#include &lt;TDA7719.h&gt;            // http://rcl-radio.ru/wp-content/uploads/2019/07/TDA7719.zip
#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/2022/10/DS3231.zip
 TDA7719 tda;
 DS3231 clock;RTCDateTime DateTime;
 LiquidCrystal_I2C lcd(0x27,20,4);  // Устанавливаем дисплей
 IRrecv irrecv(11); // указываем вывод модуля IR приемника
 Encoder myEnc(9, 8);// DT, CLK
 decode_results ir; 
 int in,loun,loun_f,vol_att,treb,treb_f,mid,mid_q,bass,bass_q,sub_f,faza,mid_f,bass_f;  ////////////////////////////
 int vol,att_lf,att_rf,att_lr,att_rr,att_l,att_rl;
 long time0,oldPosition  = -999,newPosition,times1;
 int menu0,menu,temp0,vol_d,bass_d,treb_d,par,z_old,z1,z0,z,menu1,in_time;
 byte q,gr1,gr2,w,w2[4],www,power,in_x,mute=1;
 int hour,minut,secon,mid_d,menu2,gain0,gain1,gain2,gain3,gain4,gain5,gain6,date,mont,year,korr;
 byte mesto2[8]={0,10,0,10,0,10,0,10};
 byte mesto3[8]={0,0,1,1,2,2,3,3};
 bool power_off=1;
 String dn[]={&quot;   &quot;,&quot;MON&quot;,&quot;TUE&quot;,&quot;WED&quot;,&quot;THU&quot;,&quot;FRI&quot;,&quot;SAT&quot;,&quot;SUN&quot;};
 byte wesk,zast;
 
void setup() {
  irrecv.enableIRIn();lcd.init();lcd.backlight();clock.begin();Serial.begin(9600);
  pinMode(10,INPUT);  // МЕНЮ КНОПКА SW энкодера
  pinMode(2,INPUT_PULLUP);   // КНОПКА SET
  pinMode(3,INPUT_PULLUP);   // КНОПКА IN
  pinMode(4,INPUT_PULLUP);   // КНОПКА MUTE
  pinMode(5,INPUT_PULLUP);   // КНОПКА STANDBY
  pinMode(7,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ STANDBY
  pinMode(6,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ ПОДСВЕТКОЙ
  pinMode(12,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ Bluetooth
  analogWrite(6, BRIG_H);// больше 200 не делать
  lcd.setCursor(3,1);lcd.print(&quot;Sound Processor&quot;);lcd.setCursor(7,2);lcd.print(&quot;TDA7719&quot;); delay(2000);lcd.clear();
  MsTimer2::set(4, 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);}}// очистка памяти при первом включении  
  vol = EEPROM.read(0)-63;bass = EEPROM.read(1)-15;mid = EEPROM.read(2)-15;treb = EEPROM.read(3)-15;
  att_lr = EEPROM.read(4);att_rr = EEPROM.read(5);att_lf = EEPROM.read(6);att_rf = EEPROM.read(7);att_rl = EEPROM.read(8);att_l = EEPROM.read(9);
  loun = EEPROM.read(10);loun_f = EEPROM.read(11);
  bass_f = EEPROM.read(12);mid_f = EEPROM.read(13);treb_f = EEPROM.read(14);sub_f = EEPROM.read(15);
  bass_q = EEPROM.read(16);mid_q = EEPROM.read(17);
  gain1 = EEPROM.read(18)-15;gain2 = EEPROM.read(19)-15;gain3 = EEPROM.read(20)-15;gain4=EEPROM.read(21)-15;gain5=EEPROM.read(22)-15;gain6=EEPROM.read(23)-15;
  switch(in){
     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;
     case 5: gain0 = gain6;break;
     }
  w2_arr();audio();cl();
}
 
void to_Timer(){newPosition = myEnc.read()/4;}
 
void loop() { 
 DateTime = clock.getDateTime();hour = DateTime.hour;minut = DateTime.minute;secon = DateTime.second;
 date = DateTime.day;mont = DateTime.month;year = DateTime.year;wesk = DateTime.dayOfWeek;

  /////////////////////////////// УПРАВЛЕНИЕ //////////////////////////////////////////////
  if ( irrecv.decode( &amp;ir )) {Serial.print(&quot;0x&quot;);Serial.println( ir.value,HEX);irrecv.resume();}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
  if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта  

  if((digitalRead(10)==LOW||digitalRead(2)==LOW||digitalRead(3)==LOW||digitalRead(4)==LOW||digitalRead(5)==LOW)&amp;&amp; zast==1){cl();w=0;times1=millis();zast=0;menu0=0;menu=0;menu1=0;menu2=0;in_x=0;w2_arr();} 
  if((ir.value==IR_1||ir.value==IR_2||ir.value==IR_3||ir.value==IR_4||ir.value==IR_5||ir.value==IR_6||ir.value==IR_7||ir.value==IR_8)&amp;&amp;zast==1){
  cl();w=0;times1=millis();zast=0;menu0=0;menu=0;menu1=0;menu2=0;in_x=0;w2_arr();} 
 
  if(power==0){
    if(mute==1){
  if(digitalRead(10)==LOW&amp;&amp;menu0==0){menu++;delay(200);time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu&gt;3){menu=0;}}// меню 0
  if(digitalRead(10)==LOW&amp;&amp;menu0==1){menu1++;delay(200);time0=millis();times1=millis();zast=0;in_x=0;w=1;if(menu1&gt;7){menu1=0;}}// меню 1
  if(digitalRead(10)==LOW&amp;&amp;menu0==2){menu2++;delay(200);time0=millis();times1=millis();zast=0;in_x=0;w=1;if(menu2&gt;5){menu2=0;}}// меню 2
 
  if(ir.value==IR_2&amp;&amp;menu0==0){menu++;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu&gt;3){menu=0;}}//меню 0
  if(ir.value==IR_1&amp;&amp;menu0==0){menu--;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu&lt;0){menu=3;}}//меню 0
 
  if(ir.value==IR_2&amp;&amp;menu0==1){menu1++;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu1&gt;7){menu1=0;}}//меню 1
  if(ir.value==IR_1&amp;&amp;menu0==1){menu1--;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu1&lt;0){menu1=7;}}//меню 1
 
  if(ir.value==IR_2&amp;&amp;menu0==2){menu2++;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu2&gt;5){menu2=0;}}//меню 2
  if(ir.value==IR_1&amp;&amp;menu0==2){menu2--;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu2&lt;0){menu2=5;}}//меню 2
 
  if(ir.value==IR_6||digitalRead(2)==LOW){menu0++;if(menu0&gt;2){menu0=0;}cl();in_x=0;w2_arr();time0=millis();times1=millis();zast=0;w=1;lcd.setCursor(5,1);
     lcd.print(&quot;SETTING_&quot;);lcd.print(menu0);delay(500);lcd.clear();} 
 
  if(ir.value==IR_5||digitalRead(3)==LOW){in++;cl();time0=millis();times1=millis();zast=0;in_x=1;w=1;www=1;menu0=100;menu=100;if(in&gt;5){in=0;}}// IN   
    } // mute off
  if((ir.value==IR_7||digitalRead(4)==LOW)&amp;&amp;mute==1&amp;&amp;power==0){zast=0;mute=0;in_x=0;mute=0;menu0=100;cl();w=1;w2_arr();lcd.setCursor(8,1);lcd.print(&quot;MUTE&quot;);audio();delay(300);}// mute on
  if((ir.value==IR_7||digitalRead(4)==LOW)&amp;&amp;mute==0&amp;&amp;power==0){mute=1;cl();time0=millis();times1=millis();zast=0;w=1;w2_arr();menu0=0;menu=0;myEnc.write(0);audio();}// mute off
  }// power on
 
  if((ir.value==IR_8||digitalRead(5)==LOW||power_off==1)&amp;&amp;power==0){times1=millis();zast=0;power_off=0;power=1;in_x=0;mute=0;cl();audio();lcd.setCursor(5,1);lcd.print(&quot;POWER  OFF&quot;);menu0=100;delay(3000);analogWrite(6,BRIG_L);}// power off
  if((ir.value==IR_8||digitalRead(5)==LOW)&amp;&amp;power==1){times1=millis();zast=0;power=0;analogWrite(6, BRIG_H);cl();lcd.setCursor(5,1);lcd.print(&quot;POWER   ON &quot;);w=1;w2_arr();menu0=0;myEnc.write(0);mute=1;audio();delay(3000);cl();}// power on

if(power==0){digitalWrite(7,HIGH);if(in==2){digitalWrite(12,HIGH);}else{digitalWrite(12,LOW);}}
if(power==1){digitalWrite(7,LOW);digitalWrite(12,LOW);}
 
if(power==0&amp;&amp;zast==0){
   byte a1[8] = {0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
   byte a2[8] = {0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
   byte a3[8] = {0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000}; 
   byte a4[8] = {0b10000,0b11000,0b11100,0b11110,0b11100,0b11000,0b10000,0b00000}; //&gt;
   byte a5[8] = {0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000};
   lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);lcd.createChar(3,a4);lcd.createChar(4,a5);
  }
  if(power==1||zast==1){
      byte v1[8] = {7,7,7,7,7,7,7,7};
      byte v2[8] = {7,7,0, 0, 0, 0, 0, 0};      
      byte v3[8] = { 0, 0, 0, 0, 0,0,31,31};
      byte v4[8] = {31,31, 0, 0, 0, 0,31,31};
      byte v5[8] = { 28, 28, 0, 0, 0, 0, 28, 28};
      byte v6[8] = {28,28,28,28,28,28,28,28};
      byte v7[8] = { 0, 0, 0, 0, 0, 0,7,7};
      byte v8[8] = { 31, 31,0,0,0,0,0, 0};
   byte a[6];
   byte i0,d1,d2,d3,d4,d5,d6,e1,e2,e3;
  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);
 
     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(int i=0;i&lt;6;i++){
      switch(i){
        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;
        case 4: e1=14,e2=15,e3=16;break;
        case 5: e1=17,e2=18,e3=19;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);
  }
  lcd.setCursor(6,0);lcd.print(&quot;.&quot;);lcd.setCursor(13,0);lcd.print(&quot;.&quot;);lcd.setCursor(6,1);lcd.print(&quot;.&quot;);lcd.setCursor(13,1);lcd.print(&quot;.&quot;);
  
  lcd.setCursor(0,3);lcd.print(date/10);lcd.print(date%10),lcd.print(&quot;.&quot;);lcd.print(mont/10);lcd.print(mont%10);lcd.print(&quot;.&quot;);lcd.print(year);lcd.print(&quot; &quot;);
  lcd.print(clock.readTemperature(),1);lcd.print((char)223);lcd.print(&quot; &quot;);
  lcd.print(dn[wesk]); 
  
  //lcd.setCursor(5,3);lcd.print(&quot;POWER  OFF&quot;);
  
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(2)==LOW){korr++;if(korr&gt;6){korr=0;}delay(100);} // SET
 
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==1){hour++;if(hour&gt;23){hour=23;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);} // IN
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==1){hour--;if(hour&lt;0){hour=0;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}  // MUTE

  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==2){minut++;if(minut&gt;59){minut=59;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==2){minut--;if(minut&lt;0){minut=0;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==3){secon=0;clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==3){secon=0;clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}

  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==4){date++;if(date&gt;31){date=31;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==4){date--;if(date&lt;1){date=1;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}

  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==5){mont++;if(mont&gt;12){mont=12;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==5){mont--;if(mont&lt;1){mont=1;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}

  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==6){year++;if(year&gt;2050){year=2050;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==6){year--;if(year&lt;2022){year=2022;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  
  lcd.setCursor(0,2);
  switch(korr){
    case 0 : lcd.print(&quot;                &quot;);lcd.print(&quot;    &quot;);break;
    case 1 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;HOUR&quot;);break;
    case 2 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;MIN &quot;);break;
    case 3 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;SEC &quot;);break;
    case 4 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;DATE&quot;);break;
    case 5 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;MON &quot;);break;
    case 6 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;YEAR&quot;);break;
    }
  } 
/////////////////////////////// MENU0 = VOLUME TERBLE BASS MIDDLE ///////////////////////////////////////////////////////////////////////
  if(menu0==0){ 
    switch(menu){
      case 0: temp0 = vol;q=0;break;
      case 1: temp0 = bass;q=1;break;
      case 2: temp0 = mid;q=2;break;
      case 3: temp0 = treb;q=3;break;
      }
 
     if(ir.value==IR_3){temp0++;gr1=1;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;w2[q]=1;www=1;}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){temp0++;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;w2[q]=1;www=1;}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){temp0--;gr1=0;gr2=1;cl1();time0=millis();times1=millis();zast=0;w=1;w2[q]=1;www=1;}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){temp0--;gr1=0;cl1();time0=millis();times1=millis();zast=0;w=1;w2[q]=1;www=1;}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;   
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
     temp0=temp0+newPosition;myEnc.write(0);newPosition=0;time0=millis();times1=millis();zast=0;w=1;w2[q]=1;www=1;} 
 
 
     switch(menu){
      case 0: vol = temp0;vol_func();break;
      case 1: bass = temp0;bass_func();break;
      case 2: mid = temp0;mid_func();break;
      case 3: treb = temp0;treb_func();break;
      }
 
   au();
   for(int i=0;i&lt;4;i++){if(menu==i){lcd.setCursor(0,i);lcd.write((uint8_t)3);}else{lcd.setCursor(0,i);lcd.print(&quot; &quot;);}}
   lcd.setCursor(1,0);lcd.print(&quot;VOL(&quot;);lcd.print(in+1);lcd.print(&quot;) &quot;);if(vol&gt;=0){lcd.print(&quot; &quot;);}lcd.print(vol);lcd.print(&quot; &quot;);vol_d=map(vol,-63,0,1,24);
   lcd.setCursor(1,1);lcd.print(&quot;BASS   &quot;);if(bass&gt;=0){lcd.print(&quot; &quot;);}lcd.print(bass);lcd.print(&quot; &quot;);bass_d=map(bass,-15,15,1,24);
   lcd.setCursor(1,2);lcd.print(&quot;MIDDLE &quot;);if(mid&gt;=0){lcd.print(&quot; &quot;);}lcd.print(mid);lcd.print(&quot; &quot;);mid_d=map(mid,-15,15,1,24);
   lcd.setCursor(1,3);lcd.print(&quot;TREBLE &quot;);if(treb&gt;=0){lcd.print(&quot; &quot;);}lcd.print(treb);lcd.print(&quot; &quot;);treb_d=map(treb,-15,15,1,24);
 
 
   for(int n=0;n&lt;4;n++){if(w2[n]==1){
   switch(n){
    case 0: par = vol_d;break;
    case 1: par = bass_d;break;
    case 2: par = mid_d;break;
    case 3: par = treb_d;break; 
    } 
 
   for(z=0,z0=0,z1=0;z&lt;=par;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+12,n);lcd.write((uint8_t)0);lcd.setCursor(z0+1+12,n);Serial.println(z0);z_old=7-par/3;while(z_old&gt;0){z_old=z_old-1;lcd.write((uint8_t)4);}}}
   if(z1==3){lcd.setCursor(z0+12,n);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+12,n);lcd.write((uint8_t)2);}w2[n]=0;}
   }}// menu0 = 0
///////////////////////////////////////////////////////////////////////////////////////////////
 
///////////////////////////////////////////////////////////////////////////////////////////////
 
 if(menu0==1){
     switch(menu1){
      case 0: temp0 = att_lr;break;
      case 1: temp0 = att_rr;break;
      case 2: temp0 = att_lf;break;
      case 3: temp0 = att_rf;break;
      case 4: temp0 = att_rl;break;        //////////////////////////
      case 5: temp0 = att_l;break;
      case 6: temp0 = loun;break;
      case 7: temp0 = loun_f;break;
      }
 
     if(ir.value==IR_3){temp0++;gr1=1;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){temp0++;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){temp0--;gr1=0;gr2=1;cl1();time0=millis();times1=millis();zast=0;;w=1;www=1;}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){temp0--;gr1=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;     
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
     temp0=temp0+newPosition;myEnc.write(0);newPosition=0;time0=millis();times1=millis();zast=0;w=1;www=1;} 
 
     switch(menu1){
      case 0: att_lr = temp0;att_lr_func();break;
      case 1: att_rr = temp0;att_rr_func();break;
      case 2: att_lf = temp0;att_lf_func();break;
      case 3: att_rf = temp0;att_rf_func();break;      
      case 4: att_rl  = temp0;att_rl_func();break;     ///////////////////////////
      case 5: att_l  = temp0;att_l_func();break;
      case 6: loun  = temp0;loun_func();break;
      case 7: loun_f  = temp0;loun_f_func();break;
      }
 if (att_l = 0){faza = 180;}else{faza = 0;}   ///////////////////////
  au();
  for(int i=0;i&lt;8;i++){if(menu1==i){lcd.setCursor(mesto2[i],mesto3[i]);lcd.write((uint8_t)3);}else{lcd.setCursor(mesto2[i],mesto3[i]);lcd.print(&quot; &quot;);}}
 
  lcd.setCursor(1,0);lcd.print(&quot;AT_LR &quot;);lcd.print(att_lr);lcd.print(&quot; &quot;);lcd.setCursor(11,0);lcd.print(&quot;AT_RR &quot;);lcd.print(att_rr);lcd.print(&quot; &quot;);
  lcd.setCursor(1,1);lcd.print(&quot;AT_LF &quot;);lcd.print(att_lf);lcd.print(&quot; &quot;);lcd.setCursor(11,1);lcd.print(&quot;AT_RF &quot;);lcd.print(att_rf);lcd.print(&quot; &quot;);
  lcd.setCursor(1,2);lcd.print(&quot;AT_SW &quot;);lcd.print(att_rl);lcd.print(&quot; &quot;);lcd.setCursor(11,2);lcd.print(&quot;PHASE &quot;);lcd.print(faza);lcd.print(&quot; &quot;);
  lcd.setCursor(1,3);lcd.print(&quot;LOUND &quot;);lcd.print(abs(loun));lcd.print(&quot; &quot;);lcd.setCursor(11,3);
  switch(loun_f){
    case 0: lcd.print(&quot;FLAT   &quot;);break;
    case 1: lcd.print(&quot;400  Hz&quot;);break;
    case 2: lcd.print(&quot;800  Hz&quot;);break;
    case 3: lcd.print(&quot;2.4 kHz&quot;);break;}
 
 } // menu0 = 1
 
 
///////////////////////////////////////////////////////////////////////////////////////////////
 
 if(menu0==2){
     switch(menu2){
      case 0: temp0 = bass_f;break;
      case 1: temp0 = mid_f;break;
      case 2: temp0 = treb_f;break;
      case 3: temp0 = sub_f;break;
      case 4: temp0 = bass_q;break;
      case 5: temp0 = mid_q;break;
      }
 
     if(ir.value==IR_3){temp0++;gr1=1;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){temp0++;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){temp0--;gr1=0;gr2=1;cl1();time0=millis();times1=millis();zast=0;;w=1;www=1;}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){temp0--;gr1=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;     
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
     temp0=temp0+newPosition;myEnc.write(0);newPosition=0;time0=millis();times1=millis();zast=0;w=1;www=1;} 
 
     switch(menu2){
      case 0: bass_f = temp0;bass_f_func();break;
      case 1: mid_f = temp0;mid_f_func();break;
      case 2: treb_f = temp0;treb_f_func();break;
      case 3: sub_f = temp0;sub_f_func();break;      
      case 4: bass_q  = temp0;bass_q_func();break;
      case 5: mid_q  = temp0;mid_q_func();break;
      }
 
  au();
  for(int i=0;i&lt;6;i++){if(menu2==i){lcd.setCursor(mesto2[i],mesto3[i]);lcd.write((uint8_t)3);}else{lcd.setCursor(mesto2[i],mesto3[i]);lcd.print(&quot; &quot;);}}
 
  lcd.setCursor(1,0);lcd.print(&quot;BF &quot;);
    switch(bass_f){
    case 0: lcd.print(&quot; 60 Hz&quot;);break;
    case 1: lcd.print(&quot; 80 Hz&quot;);break;
    case 2: lcd.print(&quot;100 Hz&quot;);break;
    case 3: lcd.print(&quot;200 Hz&quot;);break;}
  lcd.setCursor(11,0);lcd.print(&quot;MF &quot;);
    switch(mid_f){
      case 0: lcd.print(&quot;0.5kHz&quot;);break;
      case 1: lcd.print(&quot;1.0kHz&quot;);break;
      case 2: lcd.print(&quot;1.5kHz&quot;);break;
      case 3: lcd.print(&quot;2.5kHz&quot;);break;}
 
  lcd.setCursor(1,1);lcd.print(&quot;TF&quot;);
    switch(treb_f){
      case 0: lcd.print(&quot;10.0kHz&quot;);break;
      case 1: lcd.print(&quot;12.5kHz&quot;);break;
      case 2: lcd.print(&quot;15.0kHz&quot;);break;
      case 3: lcd.print(&quot;17.5kHz&quot;);break;}
 
  lcd.setCursor(11,1);lcd.print(&quot;SF &quot;);
    switch(sub_f){
      case 0: lcd.print(&quot;FLAT  &quot;);break;
      case 1: lcd.print(&quot;80 Hz&quot;);break;
      case 2: lcd.print(&quot;120 Hz&quot;);break;
      case 3: lcd.print(&quot;160 Hz&quot;);break;}
 
  lcd.setCursor(1,2);lcd.print(&quot;BQ &quot;);
    switch(bass_q){
      case 0: lcd.print(&quot;1.0 &quot;);break;
      case 1: lcd.print(&quot;1.25&quot;);break;
      case 2: lcd.print(&quot;1.5 &quot;);break;
      case 3: lcd.print(&quot;2.0 &quot;);break;}
 
  lcd.setCursor(11,2);lcd.print(&quot;MQ &quot;);
    switch(mid_q){
      case 0: lcd.print(&quot;0.5 &quot;);break;
      case 1: lcd.print(&quot;0.75&quot;);break;
      case 2: lcd.print(&quot;1.0 &quot;);break;
      case 3: lcd.print(&quot;1.25&quot;);break;}
 
 } // menu0 = 2 
 
 
////////////////////////// GAIN IN /////////////////////////////////////////////////////////////////////////////////////
if(in_x==1){ menu0=100;
   switch(in){
     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;
     case 5: gain0 = gain6;break;
     }
 
     if(ir.value==IR_3){gain0++;gr1=1;gr2=0;cl1();time0=millis();times1=millis();zast=0;www=1;w=1;gain_func();}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){gain0++;gr2=0;cl1();time0=millis();times1=millis();zast=0;www=1;w=1;gain_func();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){gain0--;gr1=0;gr2=1;cl1();time0=millis();times1=millis();zast=0;www=1;w=1;gain_func();}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){gain0--;gr1=0;cl1();time0=millis();times1=millis();zast=0;www=1;w=1;gain_func();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;  
 
    if (newPosition != oldPosition) {oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
    gain0=gain0+newPosition;myEnc.write(0);newPosition=0;time0=millis();times1=millis();zast=0;www=1;w=1;gain_func();} 
 
   switch(in){
     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;
     case 5: gain6 = gain0;break;
     }
 
  au();
 lcd.setCursor(7,1);lcd.print(&quot;INPUT &quot;);
switch(in){
  case 0: lcd.print(&quot;AUX1&quot;);break;
  case 1: lcd.print(&quot;AUX2&quot;);break;
  case 2: lcd.print(&quot;AUX3&quot;);break;
  case 3: lcd.print(&quot;AUX4&quot;);break;
  case 4: lcd.print(&quot;AUX5&quot;);break;
  case 5: lcd.print(&quot;AUX6&quot;);break;
}

lcd.setCursor(5,2);lcd.print(&quot;GAIN &quot;);lcd.print(gain0);lcd.print(&quot; &quot;);lcd.setCursor(14,2);lcd.print(&quot;dB &quot;);
   }
 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(in_x==1){in_time=3000;}else{in_time=10000;}
if(millis()-time0&gt;in_time&amp;&amp;w==1&amp;&amp;mute==1&amp;&amp;power==0&amp;&amp;zast==0){if(menu0==1){cl();}w=0;if(menu0!=0){cl();}menu0=0;menu=0;menu1=0;menu2=0;in_x=0;w2_arr();
   EEPROM.update(0,vol+63);EEPROM.update(1,bass+15);EEPROM.update(2,mid+15);EEPROM.update(3,treb+15);
   EEPROM.update(4,att_lr);EEPROM.update(5,att_rr);EEPROM.update(6,att_lf);EEPROM.update(7,att_rf);EEPROM.update(8,att_rl);EEPROM.update(9,att_l);
   EEPROM.update(10,loun);EEPROM.update(11,loun_f);
   EEPROM.update(12,bass_f);EEPROM.update(13,mid_f);EEPROM.update(14,treb_f);EEPROM.update(15,sub_f);
   EEPROM.update(16,bass_q);EEPROM.update(17,mid_q);
   EEPROM.update(18,gain1+15);EEPROM.update(19,gain2+15);EEPROM.update(20,gain3+15);EEPROM.update(21,gain4+15);EEPROM.update(22,gain5+15);EEPROM.update(23,gain6+15);
   }
if(millis()-times1&gt;60000&amp;&amp;zast==0&amp;&amp;mute==1){zast=1;menu0=100;}   
if(w==1&amp;&amp;zast==1){cl2();w=0;times1=millis();zast=0;menu0=0;menu=0;menu1=0;menu2=0;in_x=0;w2_arr();}  

}
 
 
void gain_func(){if(gain0&lt;-15){gain0=-15;}if(gain0&gt;15){gain0=15;}}
void w2_arr(){w2[0]=1;w2[1]=1;w2[2]=1;w2[3]=1;}
void loun_f_func(){if(loun_f&gt;3){loun_f=3;}if(loun_f&lt;0){loun_f=0;}}
void loun_func(){if(loun&lt;0){loun=0;}if(loun&gt;15){loun=15;}}
void att_lr_func(){if(att_lr&gt;16){att_lr=16;}if(att_lr&lt;0){att_lr=0;}}
void att_rr_func(){if(att_rr&gt;16){att_rr=16;}if(att_rr&lt;0){att_rr=0;}}
void att_lf_func(){if(att_lf&gt;16){att_lf=16;}if(att_lf&lt;0){att_lf=0;}}
void att_rf_func(){if(att_rf&gt;16){att_rf=16;}if(att_rf&lt;0){att_rf=0;}}
void att_rl_func(){if(att_rl&gt;15){att_rl=15;}if(att_rl&lt;0){att_rl=0;}}     //////////////////////////att_sw//////////////
void att_l_func(){if(att_l&gt;1){att_l=1;}if(att_l&lt;0){att_l=0;}}      //////////////////////////phase///////////////
void vol_func(){if(vol&lt;-63){vol=-63;}if(vol&gt;0){vol=0;}}
void treb_func(){if(treb&lt;-15){treb=-15;}if(treb&gt;15){treb=15;}}
void bass_func(){if(bass&lt;-15){bass=-15;}if(bass&gt;15){bass=15;}}
void mid_func(){if(mid&lt;-15){mid=-15;}if(mid&gt;15){mid=15;}}
void cl(){ir.value=0;delay(300);lcd.clear();}
void cl1(){ir.value=0;delay(50);}  
void cl2(){ir.value=0;lcd.clear();}  
void au(){if(www==1){audio();www=0;}}
void bass_f_func(){if(bass_f&gt;3){bass_f=3;}if(bass_f&lt;0){bass_f=0;}}
void mid_f_func(){if(mid_f&gt;3){mid_f=3;}if(mid_f&lt;0){mid_f=0;}}
void treb_f_func(){if(treb_f&gt;3){treb_f=3;}if(treb_f&lt;0){treb_f=0;}}
void sub_f_func(){if(sub_f&gt;3){sub_f=3;}if(sub_f&lt;0){sub_f=0;}}
void bass_q_func(){if(bass_q&gt;3){bass_q=3;}if(bass_q&lt;0){bass_q=0;}}
void mid_q_func(){if(mid_q&gt;3){mid_q=3;}if(mid_q&lt;0){mid_q=0;}}
 
void audio(){
tda.setInput(in,1,1,2); // 0...7, 0...1, 0...1, 0...7
tda.setInput_2(0,0,1,1,1,1); // 0...7, 0...1, 0...1, 0...1, 0...1, 0...1 
tda.setMix_source(7,0); // 0...7, 0...-31
tda.setMix_cont(1,1,1,1,1,1,1,1); // all 0...1
tda.setMute(mute,0,0,1,0,1,1); // 0...1, 0...1, 0...3, 0...1, 0...1, 0...1, 0...1 mute off = 1
tda.setSoft_1(1,1,1,1,1,1,1,1); //all 0...1
tda.setSoft_2(1,1,1,1,0,3); // 0...1, 0...1, 0...1, 0...1, 0...2, 0...3
tda.setLoudness(-loun,loun_f,1,1); // 0...-15, 0...3, 0...1, 0...1 
tda.setVol(gain0,1,1); // -15...+15, 0...1, 0...1
tda.setTreble(treb,treb_f,1); // -15...+15, 0...3, 0...1
tda.setMiddle(mid,mid_q,1); // -15...+15, 0...3, 0...1
tda.setBass(bass,bass_q,1); // -15...+15, 0...3, 0...1
tda.setSMB(sub_f,att_l,mid_f,bass_f,1); // 0...3, 0...1, 0...3, 0...3, 0...1    ///////////phase/////////
tda.setVol_LF(vol-att_lf,1); // 0...-79, 0...1 lov=63+16 att
tda.setVol_RF(vol-att_rf,1); // 0...-79, 0...1
tda.setVol_LR(vol-att_lr,1); // 0...-79, 0...1
tda.setVol_RR(vol-att_rr,1); // 0...-79, 0...1
tda.setVol_SUB_L(vol-att_rl,1); // 0...-79, 0...1             ////////////////////////////////////
tda.setVol_SUB_R(vol-att_rl,1); // 0...-79, 0...1             /////////////////////////////////////
tda.setTest1(0,14,1,1); // 0...1, 0...15, 0...1, 0...1
tda.setTest2(0,1,1,3); // 0...1, 0...1, 0...1, 0...3
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (honda473)]]></author>
			<pubDate>Fri, 19 Jun 2026 18:52:25 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=12689#p12689</guid>
		</item>
		<item>
			<title><![CDATA[Re: TDA7313 + DS3231 + IR + LCD2004]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=12688#p12688</link>
			<description><![CDATA[<p>Теперь так<span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2026/06/437df55f6d11c535b52fa0c7f7a9946a.png" alt="http://forum.rcl-radio.ru/uploads/images/2026/06/437df55f6d11c535b52fa0c7f7a9946a.png" /></span></p>]]></description>
			<author><![CDATA[null@example.com (Magali2012)]]></author>
			<pubDate>Fri, 19 Jun 2026 18:02:02 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=12688#p12688</guid>
		</item>
		<item>
			<title><![CDATA[Re: TDA7313 + DS3231 + IR + LCD2004]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=12687#p12687</link>
			<description><![CDATA[<p>ошибка,так попробовать</p>]]></description>
			<author><![CDATA[null@example.com (honda473)]]></author>
			<pubDate>Fri, 19 Jun 2026 17:38:54 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=12687#p12687</guid>
		</item>
		<item>
			<title><![CDATA[Re: TDA7313 + DS3231 + IR + LCD2004]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=12686#p12686</link>
			<description><![CDATA[<div class="codebox"><pre><code>#define IR_1 0x20DF00FF // Кнопка вверх
#define IR_2 0x20DF807F // Кнопка вниз
#define IR_3 0x20DF40BF // Кнопка &gt;
#define IR_4 0x20DFC03F // Кнопка &lt;
#define IR_5 0x20DFD02F // Кнопка IN
#define IR_6 0x20DFC23D // Кнопка SET
#define IR_7 0x20DF906F // Кнопка MUTE
#define IR_8 0x20DF10EF // Кнопка STANDBY (POWER)

#define BRIG_H 200      // Яркость 0...255 POWER ON
#define BRIG_L 50       // Яркость 0...255 POWER OFF
 
#include &lt;TDA7719.h&gt;            // http://rcl-radio.ru/wp-content/uploads/2019/07/TDA7719.zip
#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/2022/10/DS3231.zip
 TDA7719 tda;
 DS3231 clock;RTCDateTime DateTime;
 LiquidCrystal_I2C lcd(0x27,20,4);  // Устанавливаем дисплей
 IRrecv irrecv(11); // указываем вывод модуля IR приемника
 Encoder myEnc(9, 8);// DT, CLK
 decode_results ir; 
 int in,loun,loun_f,vol_att,treb,treb_f,mid,mid_q,bass,bass_q,sub_f,faza,mid_f,bass_f;  ////////////////////////////
 int vol,att_lf,att_rf,att_lr,att_rr,att_l,att_rl;
 long time0,oldPosition  = -999,newPosition,times1;
 int menu0,menu,temp0,vol_d,bass_d,treb_d,par,z_old,z1,z0,z,menu1,in_time;
 byte q,gr1,gr2,w,w2[4],www,power,in_x,mute=1;
 int hour,minut,secon,mid_d,menu2,gain0,gain1,gain2,gain3,gain4,gain5,gain6,date,mont,year,korr;
 byte mesto2[8]={0,10,0,10,0,10,0,10};
 byte mesto3[8]={0,0,1,1,2,2,3,3};
 bool power_off=1;
 String dn[]={&quot;   &quot;,&quot;MON&quot;,&quot;TUE&quot;,&quot;WED&quot;,&quot;THU&quot;,&quot;FRI&quot;,&quot;SAT&quot;,&quot;SUN&quot;};
 byte wesk,zast;
 
void setup() {
  irrecv.enableIRIn();lcd.init();lcd.backlight();clock.begin();Serial.begin(9600);
  pinMode(10,INPUT);  // МЕНЮ КНОПКА SW энкодера
  pinMode(2,INPUT_PULLUP);   // КНОПКА SET
  pinMode(3,INPUT_PULLUP);   // КНОПКА IN
  pinMode(4,INPUT_PULLUP);   // КНОПКА MUTE
  pinMode(5,INPUT_PULLUP);   // КНОПКА STANDBY
  pinMode(7,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ STANDBY
  pinMode(6,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ ПОДСВЕТКОЙ
  pinMode(12,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ Bluetooth
  analogWrite(6, BRIG_H);// больше 200 не делать
  lcd.setCursor(3,1);lcd.print(&quot;Sound Processor&quot;);lcd.setCursor(7,2);lcd.print(&quot;TDA7719&quot;); delay(2000);lcd.clear();
  MsTimer2::set(4, 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);}}// очистка памяти при первом включении  
  vol = EEPROM.read(0)-63;bass = EEPROM.read(1)-15;mid = EEPROM.read(2)-15;treb = EEPROM.read(3)-15;
  att_lr = EEPROM.read(4);att_rr = EEPROM.read(5);att_lf = EEPROM.read(6);att_rf = EEPROM.read(7);att_rl = EEPROM.read(8);att_l = EEPROM.read(9);
  loun = EEPROM.read(10);loun_f = EEPROM.read(11);
  bass_f = EEPROM.read(12);mid_f = EEPROM.read(13);treb_f = EEPROM.read(14);sub_f = EEPROM.read(15);
  bass_q = EEPROM.read(16);mid_q = EEPROM.read(17);
  gain1 = EEPROM.read(18)-15;gain2 = EEPROM.read(19)-15;gain3 = EEPROM.read(20)-15;gain4=EEPROM.read(21)-15;gain5=EEPROM.read(22)-15;gain6=EEPROM.read(23)-15;
  switch(in){
     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;
     case 5: gain0 = gain6;break;
     }
  w2_arr();audio();cl();
}
 
void to_Timer(){newPosition = myEnc.read()/4;}
 
void loop() { 
 DateTime = clock.getDateTime();hour = DateTime.hour;minut = DateTime.minute;secon = DateTime.second;
 date = DateTime.day;mont = DateTime.month;year = DateTime.year;wesk = DateTime.dayOfWeek;

  /////////////////////////////// УПРАВЛЕНИЕ //////////////////////////////////////////////
  if ( irrecv.decode( &amp;ir )) {Serial.print(&quot;0x&quot;);Serial.println( ir.value,HEX);irrecv.resume();}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
  if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта  

  if((digitalRead(10)==LOW||digitalRead(2)==LOW||digitalRead(3)==LOW||digitalRead(4)==LOW||digitalRead(5)==LOW)&amp;&amp; zast==1){cl();w=0;times1=millis();zast=0;menu0=0;menu=0;menu1=0;menu2=0;in_x=0;w2_arr();} 
  if((ir.value==IR_1||ir.value==IR_2||ir.value==IR_3||ir.value==IR_4||ir.value==IR_5||ir.value==IR_6||ir.value==IR_7||ir.value==IR_8)&amp;&amp;zast==1){
  cl();w=0;times1=millis();zast=0;menu0=0;menu=0;menu1=0;menu2=0;in_x=0;w2_arr();} 
 
  if(power==0){
    if(mute==1){
  if(digitalRead(10)==LOW&amp;&amp;menu0==0){menu++;delay(200);time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu&gt;3){menu=0;}}// меню 0
  if(digitalRead(10)==LOW&amp;&amp;menu0==1){menu1++;delay(200);time0=millis();times1=millis();zast=0;in_x=0;w=1;if(menu1&gt;7){menu1=0;}}// меню 1
  if(digitalRead(10)==LOW&amp;&amp;menu0==2){menu2++;delay(200);time0=millis();times1=millis();zast=0;in_x=0;w=1;if(menu2&gt;5){menu2=0;}}// меню 2
 
  if(ir.value==IR_2&amp;&amp;menu0==0){menu++;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu&gt;3){menu=0;}}//меню 0
  if(ir.value==IR_1&amp;&amp;menu0==0){menu--;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu&lt;0){menu=3;}}//меню 0
 
  if(ir.value==IR_2&amp;&amp;menu0==1){menu1++;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu1&gt;7){menu1=0;}}//меню 1
  if(ir.value==IR_1&amp;&amp;menu0==1){menu1--;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu1&lt;0){menu1=7;}}//меню 1
 
  if(ir.value==IR_2&amp;&amp;menu0==2){menu2++;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu2&gt;5){menu2=0;}}//меню 2
  if(ir.value==IR_1&amp;&amp;menu0==2){menu2--;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu2&lt;0){menu2=5;}}//меню 2
 
  if(ir.value==IR_6||digitalRead(2)==LOW){menu0++;if(menu0&gt;2){menu0=0;}cl();in_x=0;w2_arr();time0=millis();times1=millis();zast=0;w=1;lcd.setCursor(5,1);
     lcd.print(&quot;SETTING_&quot;);lcd.print(menu0);delay(500);lcd.clear();} 
 
  if(ir.value==IR_5||digitalRead(3)==LOW){in++;cl();time0=millis();times1=millis();zast=0;in_x=1;w=1;www=1;menu0=100;menu=100;if(in&gt;5){in=0;}}// IN   
    } // mute off
  if((ir.value==IR_7||digitalRead(4)==LOW)&amp;&amp;mute==1&amp;&amp;power==0){zast=0;mute=0;in_x=0;mute=0;menu0=100;cl();w=1;w2_arr();lcd.setCursor(8,1);lcd.print(&quot;MUTE&quot;);audio();delay(300);}// mute on
  if((ir.value==IR_7||digitalRead(4)==LOW)&amp;&amp;mute==0&amp;&amp;power==0){mute=1;cl();time0=millis();times1=millis();zast=0;w=1;w2_arr();menu0=0;menu=0;myEnc.write(0);audio();}// mute off
  }// power on
 
  if((ir.value==IR_8||digitalRead(5)==LOW||power_off==1)&amp;&amp;power==0){times1=millis();zast=0;power_off=0;power=1;in_x=0;mute=0;cl();audio();lcd.setCursor(5,1);lcd.print(&quot;POWER  OFF&quot;);menu0=100;delay(3000);analogWrite(6,BRIG_L);}// power off
  if((ir.value==IR_8||digitalRead(5)==LOW)&amp;&amp;power==1){times1=millis();zast=0;power=0;analogWrite(6, BRIG_H);cl();lcd.setCursor(5,1);lcd.print(&quot;POWER   ON &quot;);w=1;w2_arr();menu0=0;myEnc.write(0);mute=1;audio();delay(3000);cl();}// power on

if(power==0){digitalWrite(7,HIGH);if(in==2){digitalWrite(12,HIGH);}else{digitalWrite(12,LOW);}}
if(power==1){digitalWrite(7,LOW);digitalWrite(12,LOW);}
 
if(power==0&amp;&amp;zast==0){
   byte a1[8] = {0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
   byte a2[8] = {0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
   byte a3[8] = {0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000}; 
   byte a4[8] = {0b10000,0b11000,0b11100,0b11110,0b11100,0b11000,0b10000,0b00000}; //&gt;
   byte a5[8] = {0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000};
   lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);lcd.createChar(3,a4);lcd.createChar(4,a5);
  }
  if(power==1||zast==1){
      byte v1[8] = {7,7,7,7,7,7,7,7};
      byte v2[8] = {7,7,0, 0, 0, 0, 0, 0};      
      byte v3[8] = { 0, 0, 0, 0, 0,0,31,31};
      byte v4[8] = {31,31, 0, 0, 0, 0,31,31};
      byte v5[8] = { 28, 28, 0, 0, 0, 0, 28, 28};
      byte v6[8] = {28,28,28,28,28,28,28,28};
      byte v7[8] = { 0, 0, 0, 0, 0, 0,7,7};
      byte v8[8] = { 31, 31,0,0,0,0,0, 0};
   byte a[6];
   byte i0,d1,d2,d3,d4,d5,d6,e1,e2,e3;
  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);
 
     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(int i=0;i&lt;6;i++){
      switch(i){
        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;
        case 4: e1=14,e2=15,e3=16;break;
        case 5: e1=17,e2=18,e3=19;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);
  }
  lcd.setCursor(6,0);lcd.print(&quot;.&quot;);lcd.setCursor(13,0);lcd.print(&quot;.&quot;);lcd.setCursor(6,1);lcd.print(&quot;.&quot;);lcd.setCursor(13,1);lcd.print(&quot;.&quot;);
  
  lcd.setCursor(0,3);lcd.print(date/10);lcd.print(date%10),lcd.print(&quot;.&quot;);lcd.print(mont/10);lcd.print(mont%10);lcd.print(&quot;.&quot;);lcd.print(year);lcd.print(&quot; &quot;);
  lcd.print(clock.readTemperature(),1);lcd.print((char)223);lcd.print(&quot; &quot;);
  lcd.print(dn[wesk]); 
  
  //lcd.setCursor(5,3);lcd.print(&quot;POWER  OFF&quot;);
  
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(2)==LOW){korr++;if(korr&gt;6){korr=0;}delay(100);} // SET
 
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==1){hour++;if(hour&gt;23){hour=23;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);} // IN
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==1){hour--;if(hour&lt;0){hour=0;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}  // MUTE

  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==2){minut++;if(minut&gt;59){minut=59;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==2){minut--;if(minut&lt;0){minut=0;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==3){secon=0;clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==3){secon=0;clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}

  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==4){date++;if(date&gt;31){date=31;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==4){date--;if(date&lt;1){date=1;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}

  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==5){mont++;if(mont&gt;12){mont=12;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==5){mont--;if(mont&lt;1){mont=1;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}

  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==6){year++;if(year&gt;2050){year=2050;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==6){year--;if(year&lt;2022){year=2022;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  
  lcd.setCursor(0,2);
  switch(korr){
    case 0 : lcd.print(&quot;                &quot;);lcd.print(&quot;    &quot;);break;
    case 1 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;HOUR&quot;);break;
    case 2 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;MIN &quot;);break;
    case 3 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;SEC &quot;);break;
    case 4 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;DATE&quot;);break;
    case 5 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;MON &quot;);break;
    case 6 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;YEAR&quot;);break;
    }
  } 
/////////////////////////////// MENU0 = VOLUME TERBLE BASS MIDDLE ///////////////////////////////////////////////////////////////////////
  if(menu0==0){ 
    switch(menu){
      case 0: temp0 = vol;q=0;break;
      case 1: temp0 = bass;q=1;break;
      case 2: temp0 = mid;q=2;break;
      case 3: temp0 = treb;q=3;break;
      }
 
     if(ir.value==IR_3){temp0++;gr1=1;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;w2[q]=1;www=1;}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){temp0++;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;w2[q]=1;www=1;}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){temp0--;gr1=0;gr2=1;cl1();time0=millis();times1=millis();zast=0;w=1;w2[q]=1;www=1;}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){temp0--;gr1=0;cl1();time0=millis();times1=millis();zast=0;w=1;w2[q]=1;www=1;}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;   
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
     temp0=temp0+newPosition;myEnc.write(0);newPosition=0;time0=millis();times1=millis();zast=0;w=1;w2[q]=1;www=1;} 
 
 
     switch(menu){
      case 0: vol = temp0;vol_func();break;
      case 1: bass = temp0;bass_func();break;
      case 2: mid = temp0;mid_func();break;
      case 3: treb = temp0;treb_func();break;
      }
 
   au();
   for(int i=0;i&lt;4;i++){if(menu==i){lcd.setCursor(0,i);lcd.write((uint8_t)3);}else{lcd.setCursor(0,i);lcd.print(&quot; &quot;);}}
   lcd.setCursor(1,0);lcd.print(&quot;VOL(&quot;);lcd.print(in+1);lcd.print(&quot;) &quot;);if(vol&gt;=0){lcd.print(&quot; &quot;);}lcd.print(vol);lcd.print(&quot; &quot;);vol_d=map(vol,-63,0,1,24);
   lcd.setCursor(1,1);lcd.print(&quot;BASS   &quot;);if(bass&gt;=0){lcd.print(&quot; &quot;);}lcd.print(bass);lcd.print(&quot; &quot;);bass_d=map(bass,-15,15,1,24);
   lcd.setCursor(1,2);lcd.print(&quot;MIDDLE &quot;);if(mid&gt;=0){lcd.print(&quot; &quot;);}lcd.print(mid);lcd.print(&quot; &quot;);mid_d=map(mid,-15,15,1,24);
   lcd.setCursor(1,3);lcd.print(&quot;TREBLE &quot;);if(treb&gt;=0){lcd.print(&quot; &quot;);}lcd.print(treb);lcd.print(&quot; &quot;);treb_d=map(treb,-15,15,1,24);
 
 
   for(int n=0;n&lt;4;n++){if(w2[n]==1){
   switch(n){
    case 0: par = vol_d;break;
    case 1: par = bass_d;break;
    case 2: par = mid_d;break;
    case 3: par = treb_d;break; 
    } 
 
   for(z=0,z0=0,z1=0;z&lt;=par;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+12,n);lcd.write((uint8_t)0);lcd.setCursor(z0+1+12,n);Serial.println(z0);z_old=7-par/3;while(z_old&gt;0){z_old=z_old-1;lcd.write((uint8_t)4);}}}
   if(z1==3){lcd.setCursor(z0+12,n);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+12,n);lcd.write((uint8_t)2);}w2[n]=0;}
   }}// menu0 = 0
///////////////////////////////////////////////////////////////////////////////////////////////
 
///////////////////////////////////////////////////////////////////////////////////////////////
 
 if(menu0==1){
     switch(menu1){
      case 0: temp0 = att_lr;break;
      case 1: temp0 = att_rr;break;
      case 2: temp0 = att_lf;break;
      case 3: temp0 = att_rf;break;
      case 4: temp0 = att_rl;break;        //////////////////////////
      case 5: temp0 = att_l;break;
      case 6: temp0 = loun;break;
      case 7: temp0 = loun_f;break;
      }
 
     if(ir.value==IR_3){temp0++;gr1=1;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){temp0++;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){temp0--;gr1=0;gr2=1;cl1();time0=millis();times1=millis();zast=0;;w=1;www=1;}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){temp0--;gr1=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;     
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
     temp0=temp0+newPosition;myEnc.write(0);newPosition=0;time0=millis();times1=millis();zast=0;w=1;www=1;} 
 
     switch(menu1){
      case 0: att_lr = temp0;att_lr_func();break;
      case 1: att_rr = temp0;att_rr_func();break;
      case 2: att_lf = temp0;att_lf_func();break;
      case 3: att_rf = temp0;att_rf_func();break;      
      case 4: att_rl  = temp0;att_rl_func();break;     ///////////////////////////
      case 5: att_l  = temp0;att_l_func();break;
      case 6: loun  = temp0;loun_func();break;
      case 7: loun_f  = temp0;loun_f_func();break;
      }
 if (att_l = 0){faza = 180;}else{faza = 0;}   ///////////////////////
  au();
  for(int i=0;i&lt;8;i++){if(menu1==i){lcd.setCursor(mesto2[i],mesto3[i]);lcd.write((uint8_t)3);}else{lcd.setCursor(mesto2[i],mesto3[i]);lcd.print(&quot; &quot;);}}
 
  lcd.setCursor(1,0);lcd.print(&quot;AT_LR &quot;);lcd.print(att_lr);lcd.print(&quot; &quot;);lcd.setCursor(11,0);lcd.print(&quot;AT_RR &quot;);lcd.print(att_rr);lcd.print(&quot; &quot;);
  lcd.setCursor(1,1);lcd.print(&quot;AT_LF &quot;);lcd.print(att_lf);lcd.print(&quot; &quot;);lcd.setCursor(11,1);lcd.print(&quot;AT_RF &quot;);lcd.print(att_rf);lcd.print(&quot; &quot;);
  lcd.setCursor(1,2);lcd.print(&quot;AT_SW &quot;);lcd.print(att_r);lcd.print(&quot; &quot;);lcd.setCursor(11,2);lcd.print(&quot;PHASE &quot;);lcd.print(faza);lcd.print(&quot; &quot;);
  lcd.setCursor(1,3);lcd.print(&quot;LOUND &quot;);lcd.print(abs(loun));lcd.print(&quot; &quot;);lcd.setCursor(11,3);
  switch(loun_f){
    case 0: lcd.print(&quot;FLAT   &quot;);break;
    case 1: lcd.print(&quot;400  Hz&quot;);break;
    case 2: lcd.print(&quot;800  Hz&quot;);break;
    case 3: lcd.print(&quot;2.4 kHz&quot;);break;}
 
 } // menu0 = 1
 
 
///////////////////////////////////////////////////////////////////////////////////////////////
 
 if(menu0==2){
     switch(menu2){
      case 0: temp0 = bass_f;break;
      case 1: temp0 = mid_f;break;
      case 2: temp0 = treb_f;break;
      case 3: temp0 = sub_f;break;
      case 4: temp0 = bass_q;break;
      case 5: temp0 = mid_q;break;
      }
 
     if(ir.value==IR_3){temp0++;gr1=1;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){temp0++;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){temp0--;gr1=0;gr2=1;cl1();time0=millis();times1=millis();zast=0;;w=1;www=1;}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){temp0--;gr1=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;     
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
     temp0=temp0+newPosition;myEnc.write(0);newPosition=0;time0=millis();times1=millis();zast=0;w=1;www=1;} 
 
     switch(menu2){
      case 0: bass_f = temp0;bass_f_func();break;
      case 1: mid_f = temp0;mid_f_func();break;
      case 2: treb_f = temp0;treb_f_func();break;
      case 3: sub_f = temp0;sub_f_func();break;      
      case 4: bass_q  = temp0;bass_q_func();break;
      case 5: mid_q  = temp0;mid_q_func();break;
      }
 
  au();
  for(int i=0;i&lt;6;i++){if(menu2==i){lcd.setCursor(mesto2[i],mesto3[i]);lcd.write((uint8_t)3);}else{lcd.setCursor(mesto2[i],mesto3[i]);lcd.print(&quot; &quot;);}}
 
  lcd.setCursor(1,0);lcd.print(&quot;BF &quot;);
    switch(bass_f){
    case 0: lcd.print(&quot; 60 Hz&quot;);break;
    case 1: lcd.print(&quot; 80 Hz&quot;);break;
    case 2: lcd.print(&quot;100 Hz&quot;);break;
    case 3: lcd.print(&quot;200 Hz&quot;);break;}
  lcd.setCursor(11,0);lcd.print(&quot;MF &quot;);
    switch(mid_f){
      case 0: lcd.print(&quot;0.5kHz&quot;);break;
      case 1: lcd.print(&quot;1.0kHz&quot;);break;
      case 2: lcd.print(&quot;1.5kHz&quot;);break;
      case 3: lcd.print(&quot;2.5kHz&quot;);break;}
 
  lcd.setCursor(1,1);lcd.print(&quot;TF&quot;);
    switch(treb_f){
      case 0: lcd.print(&quot;10.0kHz&quot;);break;
      case 1: lcd.print(&quot;12.5kHz&quot;);break;
      case 2: lcd.print(&quot;15.0kHz&quot;);break;
      case 3: lcd.print(&quot;17.5kHz&quot;);break;}
 
  lcd.setCursor(11,1);lcd.print(&quot;SF &quot;);
    switch(sub_f){
      case 0: lcd.print(&quot;FLAT  &quot;);break;
      case 1: lcd.print(&quot;80 Hz&quot;);break;
      case 2: lcd.print(&quot;120 Hz&quot;);break;
      case 3: lcd.print(&quot;160 Hz&quot;);break;}
 
  lcd.setCursor(1,2);lcd.print(&quot;BQ &quot;);
    switch(bass_q){
      case 0: lcd.print(&quot;1.0 &quot;);break;
      case 1: lcd.print(&quot;1.25&quot;);break;
      case 2: lcd.print(&quot;1.5 &quot;);break;
      case 3: lcd.print(&quot;2.0 &quot;);break;}
 
  lcd.setCursor(11,2);lcd.print(&quot;MQ &quot;);
    switch(mid_q){
      case 0: lcd.print(&quot;0.5 &quot;);break;
      case 1: lcd.print(&quot;0.75&quot;);break;
      case 2: lcd.print(&quot;1.0 &quot;);break;
      case 3: lcd.print(&quot;1.25&quot;);break;}
 
 } // menu0 = 2 
 
 
////////////////////////// GAIN IN /////////////////////////////////////////////////////////////////////////////////////
if(in_x==1){ menu0=100;
   switch(in){
     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;
     case 5: gain0 = gain6;break;
     }
 
     if(ir.value==IR_3){gain0++;gr1=1;gr2=0;cl1();time0=millis();times1=millis();zast=0;www=1;w=1;gain_func();}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){gain0++;gr2=0;cl1();time0=millis();times1=millis();zast=0;www=1;w=1;gain_func();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){gain0--;gr1=0;gr2=1;cl1();time0=millis();times1=millis();zast=0;www=1;w=1;gain_func();}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){gain0--;gr1=0;cl1();time0=millis();times1=millis();zast=0;www=1;w=1;gain_func();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;  
 
    if (newPosition != oldPosition) {oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
    gain0=gain0+newPosition;myEnc.write(0);newPosition=0;time0=millis();times1=millis();zast=0;www=1;w=1;gain_func();} 
 
   switch(in){
     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;
     case 5: gain6 = gain0;break;
     }
 
  au();
 lcd.setCursor(7,1);lcd.print(&quot;INPUT &quot;);
switch(in){
  case 0: lcd.print(&quot;AUX1&quot;);break;
  case 1: lcd.print(&quot;AUX2&quot;);break;
  case 2: lcd.print(&quot;AUX3&quot;);break;
  case 3: lcd.print(&quot;AUX4&quot;);break;
  case 4: lcd.print(&quot;AUX5&quot;);break;
  case 5: lcd.print(&quot;AUX6&quot;);break;
}

lcd.setCursor(5,2);lcd.print(&quot;GAIN &quot;);lcd.print(gain0);lcd.print(&quot; &quot;);lcd.setCursor(14,2);lcd.print(&quot;dB &quot;);
   }
 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(in_x==1){in_time=3000;}else{in_time=10000;}
if(millis()-time0&gt;in_time&amp;&amp;w==1&amp;&amp;mute==1&amp;&amp;power==0&amp;&amp;zast==0){if(menu0==1){cl();}w=0;if(menu0!=0){cl();}menu0=0;menu=0;menu1=0;menu2=0;in_x=0;w2_arr();
   EEPROM.update(0,vol+63);EEPROM.update(1,bass+15);EEPROM.update(2,mid+15);EEPROM.update(3,treb+15);
   EEPROM.update(4,att_lr);EEPROM.update(5,att_rr);EEPROM.update(6,att_lf);EEPROM.update(7,att_rf);EEPROM.update(8,att_rl);EEPROM.update(9,att_l);
   EEPROM.update(10,loun);EEPROM.update(11,loun_f);
   EEPROM.update(12,bass_f);EEPROM.update(13,mid_f);EEPROM.update(14,treb_f);EEPROM.update(15,sub_f);
   EEPROM.update(16,bass_q);EEPROM.update(17,mid_q);
   EEPROM.update(18,gain1+15);EEPROM.update(19,gain2+15);EEPROM.update(20,gain3+15);EEPROM.update(21,gain4+15);EEPROM.update(22,gain5+15);EEPROM.update(23,gain6+15);
   }
if(millis()-times1&gt;60000&amp;&amp;zast==0&amp;&amp;mute==1){zast=1;menu0=100;}   
if(w==1&amp;&amp;zast==1){cl2();w=0;times1=millis();zast=0;menu0=0;menu=0;menu1=0;menu2=0;in_x=0;w2_arr();}  

}
 
 
void gain_func(){if(gain0&lt;-15){gain0=-15;}if(gain0&gt;15){gain0=15;}}
void w2_arr(){w2[0]=1;w2[1]=1;w2[2]=1;w2[3]=1;}
void loun_f_func(){if(loun_f&gt;3){loun_f=3;}if(loun_f&lt;0){loun_f=0;}}
void loun_func(){if(loun&lt;0){loun=0;}if(loun&gt;15){loun=15;}}
void att_lr_func(){if(att_lr&gt;16){att_lr=16;}if(att_lr&lt;0){att_lr=0;}}
void att_rr_func(){if(att_rr&gt;16){att_rr=16;}if(att_rr&lt;0){att_rr=0;}}
void att_lf_func(){if(att_lf&gt;16){att_lf=16;}if(att_lf&lt;0){att_lf=0;}}
void att_rf_func(){if(att_rf&gt;16){att_rf=16;}if(att_rf&lt;0){att_rf=0;}}
void att_rl_func(){if(att_rl&gt;15){att_rl=15;}if(att_rl&lt;0){att_rl=0;}}     //////////////////////////att_sw//////////////
void att_l_func(){if(att_l&gt;1){att_l=1;}if(att_l&lt;0){att_l=0;}}      //////////////////////////phase///////////////
void vol_func(){if(vol&lt;-63){vol=-63;}if(vol&gt;0){vol=0;}}
void treb_func(){if(treb&lt;-15){treb=-15;}if(treb&gt;15){treb=15;}}
void bass_func(){if(bass&lt;-15){bass=-15;}if(bass&gt;15){bass=15;}}
void mid_func(){if(mid&lt;-15){mid=-15;}if(mid&gt;15){mid=15;}}
void cl(){ir.value=0;delay(300);lcd.clear();}
void cl1(){ir.value=0;delay(50);}  
void cl2(){ir.value=0;lcd.clear();}  
void au(){if(www==1){audio();www=0;}}
void bass_f_func(){if(bass_f&gt;3){bass_f=3;}if(bass_f&lt;0){bass_f=0;}}
void mid_f_func(){if(mid_f&gt;3){mid_f=3;}if(mid_f&lt;0){mid_f=0;}}
void treb_f_func(){if(treb_f&gt;3){treb_f=3;}if(treb_f&lt;0){treb_f=0;}}
void sub_f_func(){if(sub_f&gt;3){sub_f=3;}if(sub_f&lt;0){sub_f=0;}}
void bass_q_func(){if(bass_q&gt;3){bass_q=3;}if(bass_q&lt;0){bass_q=0;}}
void mid_q_func(){if(mid_q&gt;3){mid_q=3;}if(mid_q&lt;0){mid_q=0;}}
 
void audio(){
tda.setInput(in,1,1,2); // 0...7, 0...1, 0...1, 0...7
tda.setInput_2(0,0,1,1,1,1); // 0...7, 0...1, 0...1, 0...1, 0...1, 0...1 
tda.setMix_source(7,0); // 0...7, 0...-31
tda.setMix_cont(1,1,1,1,1,1,1,1); // all 0...1
tda.setMute(mute,0,0,1,0,1,1); // 0...1, 0...1, 0...3, 0...1, 0...1, 0...1, 0...1 mute off = 1
tda.setSoft_1(1,1,1,1,1,1,1,1); //all 0...1
tda.setSoft_2(1,1,1,1,0,3); // 0...1, 0...1, 0...1, 0...1, 0...2, 0...3
tda.setLoudness(-loun,loun_f,1,1); // 0...-15, 0...3, 0...1, 0...1 
tda.setVol(gain0,1,1); // -15...+15, 0...1, 0...1
tda.setTreble(treb,treb_f,1); // -15...+15, 0...3, 0...1
tda.setMiddle(mid,mid_q,1); // -15...+15, 0...3, 0...1
tda.setBass(bass,bass_q,1); // -15...+15, 0...3, 0...1
tda.setSMB(sub_f,att_l,mid_f,bass_f,1); // 0...3, 0...1, 0...3, 0...3, 0...1    ///////////phase/////////
tda.setVol_LF(vol-att_lf,1); // 0...-79, 0...1 lov=63+16 att
tda.setVol_RF(vol-att_rf,1); // 0...-79, 0...1
tda.setVol_LR(vol-att_lr,1); // 0...-79, 0...1
tda.setVol_RR(vol-att_rr,1); // 0...-79, 0...1
tda.setVol_SUB_L(vol-att_rl,1); // 0...-79, 0...1             ////////////////////////////////////
tda.setVol_SUB_R(vol-att_rl,1); // 0...-79, 0...1             /////////////////////////////////////
tda.setTest1(0,14,1,1); // 0...1, 0...15, 0...1, 0...1
tda.setTest2(0,1,1,3); // 0...1, 0...1, 0...1, 0...3
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (honda473)]]></author>
			<pubDate>Fri, 19 Jun 2026 17:37:04 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=12686#p12686</guid>
		</item>
		<item>
			<title><![CDATA[Re: TDA7313 + DS3231 + IR + LCD2004]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=12685#p12685</link>
			<description><![CDATA[<p>Вылезла ошибка<span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2026/06/5acca0acad05517945e4150be6720bf2.png" alt="http://forum.rcl-radio.ru/uploads/images/2026/06/5acca0acad05517945e4150be6720bf2.png" /></span></p>]]></description>
			<author><![CDATA[null@example.com (Magali2012)]]></author>
			<pubDate>Fri, 19 Jun 2026 17:07:48 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=12685#p12685</guid>
		</item>
		<item>
			<title><![CDATA[Re: TDA7313 + DS3231 + IR + LCD2004]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=12684#p12684</link>
			<description><![CDATA[<p>Спасибо большое, проверить только вечером смогу, я сейчас на работе</p>]]></description>
			<author><![CDATA[null@example.com (Magali2012)]]></author>
			<pubDate>Fri, 19 Jun 2026 09:20:44 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=12684#p12684</guid>
		</item>
		<item>
			<title><![CDATA[Re: TDA7313 + DS3231 + IR + LCD2004]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=12682#p12682</link>
			<description><![CDATA[<div class="quotebox"><cite>honda473 пишет:</cite><blockquote><p>скетч взят из сообщения 208,как вы говорили.<br />поправил,попробуйте,проверьте. И скиньте фото,что получилось.<br />проверить мне не на чем(дисплея такого нет)</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (honda473)]]></author>
			<pubDate>Thu, 18 Jun 2026 11:44:37 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=12682#p12682</guid>
		</item>
	</channel>
</rss>
