<?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; M62446]]></title>
		<link>http://forum.rcl-radio.ru/viewtopic.php?id=675</link>
		<atom:link href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=675&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «M62446».]]></description>
		<lastBuildDate>Sun, 25 Jan 2026 11:47:50 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: M62446]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=12231#p12231</link>
			<description><![CDATA[<p>а вот с проектом на рт2323+2322 как то сразу не заладилось</p>]]></description>
			<author><![CDATA[null@example.com (Игорёк 87)]]></author>
			<pubDate>Sun, 25 Jan 2026 11:47:50 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=12231#p12231</guid>
		</item>
		<item>
			<title><![CDATA[Re: M62446]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=12230#p12230</link>
			<description><![CDATA[<p>Я рад что у Вас все получилось.</p>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Sun, 25 Jan 2026 11:40:03 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=12230#p12230</guid>
		</item>
		<item>
			<title><![CDATA[Re: M62446]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=12229#p12229</link>
			<description><![CDATA[<p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2026/01/3411ab4854e767ca628d01b641158bf2.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2026/01/3411ab4854e767ca628d01b641158bf2.jpg" /></span></p>]]></description>
			<author><![CDATA[null@example.com (Игорёк 87)]]></author>
			<pubDate>Sun, 25 Jan 2026 11:38:11 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=12229#p12229</guid>
		</item>
		<item>
			<title><![CDATA[Re: M62446]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=12228#p12228</link>
			<description><![CDATA[<p>закончил переделку. всё работает. осталось реализовать st-by. ОГРОМНОЕ спасибо Александр за помощь!!!!!</p>]]></description>
			<author><![CDATA[null@example.com (Игорёк 87)]]></author>
			<pubDate>Sun, 25 Jan 2026 11:35:54 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=12228#p12228</guid>
		</item>
		<item>
			<title><![CDATA[Re: M62446]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=12227#p12227</link>
			<description><![CDATA[<p>Цифровой выход, можно программно менять состояние выходов.</p>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Sun, 25 Jan 2026 04:20:57 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=12227#p12227</guid>
		</item>
		<item>
			<title><![CDATA[Re: M62446]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=12226#p12226</link>
			<description><![CDATA[<p>а каково назначение выводов 1-4 микросхемы?</p>]]></description>
			<author><![CDATA[null@example.com (Игорёк 87)]]></author>
			<pubDate>Sat, 24 Jan 2026 22:36:41 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=12226#p12226</guid>
		</item>
		<item>
			<title><![CDATA[Re: M62446]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=12225#p12225</link>
			<description><![CDATA[<p>ОК</p>]]></description>
			<author><![CDATA[null@example.com (Игорёк 87)]]></author>
			<pubDate>Sat, 24 Jan 2026 14:31:29 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=12225#p12225</guid>
		</item>
		<item>
			<title><![CDATA[Re: M62446]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=12224#p12224</link>
			<description><![CDATA[<p>На gnd, резисторов не надо</p>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Sat, 24 Jan 2026 14:26:32 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=12224#p12224</guid>
		</item>
		<item>
			<title><![CDATA[Re: M62446]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=12223#p12223</link>
			<description><![CDATA[<p>а замыкание кнопки происходит на +5 или на gnd? никакой подтяжки резисторов не нужно?</p>]]></description>
			<author><![CDATA[null@example.com (Игорёк 87)]]></author>
			<pubDate>Sat, 24 Jan 2026 14:24:35 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=12223#p12223</guid>
		</item>
		<item>
			<title><![CDATA[Re: M62446]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=12222#p12222</link>
			<description><![CDATA[<p>да</p>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Sat, 24 Jan 2026 13:01:09 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=12222#p12222</guid>
		</item>
		<item>
			<title><![CDATA[Re: M62446]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=12221#p12221</link>
			<description><![CDATA[<p>понял,спасибо</p>]]></description>
			<author><![CDATA[null@example.com (Игорёк 87)]]></author>
			<pubDate>Sat, 24 Jan 2026 12:58:02 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=12221#p12221</guid>
		</item>
		<item>
			<title><![CDATA[Re: M62446]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=12220#p12220</link>
			<description><![CDATA[<p>низкий уровень для 2,0 и высокий для 5,1</p>]]></description>
			<author><![CDATA[null@example.com (Игорёк 87)]]></author>
			<pubDate>Sat, 24 Jan 2026 12:56:21 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=12220#p12220</guid>
		</item>
		<item>
			<title><![CDATA[Re: M62446]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=12219#p12219</link>
			<description><![CDATA[<p>я сделал через два пина, один всегда LOW, другой меняет состояние, на всякий случай<br />Но можете использовать только 6</p>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Sat, 24 Jan 2026 12:54:51 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=12219#p12219</guid>
		</item>
		<item>
			<title><![CDATA[Re: M62446]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=12218#p12218</link>
			<description><![CDATA[<p>Александр,спасибо! буду тестировать. Вопрос-управление входами -5 и 6,это что и как ? просто на обоих микросхемах АВС соеденены между собой в пучек,т.е нужен один пин управления на всё. проследил по печатке</p>]]></description>
			<author><![CDATA[null@example.com (Игорёк 87)]]></author>
			<pubDate>Sat, 24 Jan 2026 12:52:31 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=12218#p12218</guid>
		</item>
		<item>
			<title><![CDATA[Re: M62446]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=12217#p12217</link>
			<description><![CDATA[<div class="codebox"><pre><code>// M62446
#define LATCH        2
#define DATA         3
#define CLOCK        4
// ENCODER
#define ENC_DT       9
#define ENC_CLK      8
#define ENC_SW       10
// BUTTON
#define ATT          A0
#define MUTE         A1
#define STANDBY      A2
#define IN           A3
// выход упр. STANDBY
#define ST_OUT       13
// коды кнопок ИК пульта
#define MENU         0x2FDB24D // button encoder
#define UP           0x2FDD02F // &gt;&gt;&gt;
#define DW           0x2FD32CD // &lt;&lt;&lt;
#define POWER_IR     0x2FD00FF // POWER
#define MUTE_IR      0x2FDB04F // MUTE
#define ATT_IR       0x2FDF00F // ATT
#define IN_IR        0x2FD807F // INPUT
#define BASS_UP_IR   0x2FD629D // bassUP
#define BASS_DW_IR   0x2FDA25D // bassDW
#define TREB_UP_IR   0x2FD22DD // trebUP
#define TREB_DW_IR   0x2FDE01F // trebDW
// ИК датчик
#define IR           12
// управление входами
#define OUT_PIN1     5
#define OUT_PIN2     6

#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

 LiquidCrystal_I2C lcd(0x27,16,2);  // Устанавливаем дисплей
 IRrecv irrecv(IR); // указываем вывод модуля IR приемника
 Encoder myEnc(ENC_DT, ENC_CLK);
 decode_results ir; 

 byte v1[8] = {0b00111,0b00111,0b00111,0b00111,0b00111,0b00111,0b00111,0b00111};
 byte v2[8] = {0b00111,0b00111,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000};      
 byte v3[8] = {0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b11111,0b11111};
 byte v4[8] = {0b11111,0b11111,0b00000,0b00000,0b00000,0b00000,0b11111,0b11111};
 byte v5[8] = {0b11100,0b11100,0b00000,0b00000,0b00000,0b00000,0b11100,0b11100};
 byte v6[8] = {0b11100,0b11100,0b11100,0b11100,0b11100,0b11100,0b11100,0b11100};
 byte v7[8] = {0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b00111,0b00111};
 byte v8[8] = {0b11111,0b11111,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000}; 

 long times,oldPosition  = -999,newPosition;
 int vol,bass,treb,att_l,att_r,att_c,att_sw,att_sl,att_sr,mute,power;
 int menu,treb_print,bass_print,menu0=100,in;
 bool gr1,gr2;
 byte a[6],d1,d2,d3,d4,d5,d6,e1,e2,e3,w,w2,x;

void setup() {
  irrecv.enableIRIn();lcd.init();lcd.backlight();Serial.begin(9600);
  MsTimer2::set(3, to_Timer);MsTimer2::start();
  pinMode(ENC_SW,INPUT); 
  pinMode(LATCH, OUTPUT);digitalWrite(LATCH, LOW);
  pinMode(DATA, OUTPUT);digitalWrite(DATA, LOW);
  pinMode(CLOCK, OUTPUT);digitalWrite(CLOCK, LOW);
  pinMode(ATT,INPUT_PULLUP);   // КНОПКА ATT
  pinMode(MUTE,INPUT_PULLUP);   // КНОПКА MUTE
  pinMode(STANDBY,INPUT_PULLUP);   // КНОПКА STANDBY
  pinMode(IN,INPUT_PULLUP);   // КНОПКА INPUT
  pinMode(ST_OUT,OUTPUT); 
  pinMode(OUT_PIN1,OUTPUT); 
  pinMode(OUT_PIN2,OUTPUT); 
  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);
  if(EEPROM.read(100)!=0){for(int i=0;i&lt;101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении  
  lcd.setCursor(0,0);lcd.print(&quot;Sound  Processor&quot;);lcd.setCursor(5,1);lcd.print(&quot;M62446&quot;); delay(2000);lcd.clear();
  
  vol = EEPROM.read(0);bass = EEPROM.read(1)-7;treb = EEPROM.read(2)-7;
  att_l = EEPROM.read(3);att_r = EEPROM.read(4);att_c = EEPROM.read(5);att_sw = EEPROM.read(6);att_sl = EEPROM.read(7);att_sr = EEPROM.read(8);
  in = EEPROM.read(9);
  audio();

}

void loop() {
  if ( irrecv.decode( &amp;ir )) {Serial.print(&quot;0x&quot;);Serial.println( ir.value,HEX);irrecv.resume();times=millis();w=1;}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
  if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта  

  if(power==0){ 
  if(digitalRead(ENC_SW)==LOW||ir.value==MENU){menu++;menu0=100;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu&gt;2){menu=0;}}

  if(digitalRead(ATT)==LOW||ir.value==ATT_IR){menu0++;menu=100;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu0&gt;5){menu0=0;}}

  if((ir.value==MUTE_IR||digitalRead(MUTE)==LOW)&amp;&amp;mute==0){mute=1;menu=100;menu0=100;cl();lcd.setCursor(6,0);lcd.print(&quot;MUTE&quot;);audio_mute();delay(300);}// mute on
  if((ir.value==MUTE_IR||digitalRead(MUTE)==LOW)&amp;&amp;mute==1){mute=0;cl();times=millis();menu=0;myEnc.write(0);audio();}// mute off 

  if(ir.value==BASS_UP_IR &amp;&amp; menu!=2){menu=2;bass++;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;bass_func();audio();}// bassUP
  if(ir.value==BASS_DW_IR &amp;&amp; menu!=2){menu=2;bass--;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;bass_func();audio();}// bassDW

  if(ir.value==TREB_UP_IR &amp;&amp; menu!=1){menu=1;treb++;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;treb_func();audio();}// trebUP
  if(ir.value==TREB_DW_IR &amp;&amp; menu!=1){menu=1;treb--;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;treb_func();audio();}// trebDW   
 
  if(digitalRead(IN)==LOW||ir.value==IN_IR){in++;menu=100;cl();times=millis();w=1;w2=1;if(in&gt;1){in=0;}
  if(in==0){lcd.setCursor(3,0);lcd.print(&quot;INPUT 2CH&quot;);digitalWrite(OUT_PIN1,LOW);digitalWrite(OUT_PIN2,LOW);delay(1000);menu=0;cl();}
  if(in==1){lcd.setCursor(3,0);lcd.print(&quot;INPUT 6CH&quot;);digitalWrite(OUT_PIN1,LOW);digitalWrite(OUT_PIN2,HIGH);delay(1000);menu=0;cl();}
  }
 
 }
 // power 
  if((ir.value==POWER_IR||digitalRead(STANDBY)==LOW)&amp;&amp;power==0){power=1;cl();audio_mute();lcd.setCursor(3,0);lcd.print(&quot;POWER  OFF&quot;);menu=100;menu0=100;delay(3000);lcd.noBacklight();digitalWrite(ST_OUT,HIGH);}// power off
  if((ir.value==POWER_IR||digitalRead(STANDBY)==LOW)&amp;&amp;power==1){power=0;lcd.backlight();cl();lcd.setCursor(3,0);lcd.print(&quot;POWER   ON &quot;);myEnc.write(0);digitalWrite(ST_OUT,LOW);delay(3000);audio();menu=0;cl();}// power on  
    
 ////////////// VOLUME ///////////////////////////////////////////////////////////////////
 if(menu==0){
   if(ir.value==DW){vol++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;vol_func();audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl1();times=millis();w=1;w2=1;vol_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==UP){vol--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;vol_func();audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl1();times=millis();w=1;w2=1;vol_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   vol=vol-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;vol_func();audio();}
   a[0]= (50-vol)/10;a[1]=(50-vol)%10;
   for(x=0;x&lt;2;x++){switch(x){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
   if(mute==0){lcd.setCursor(0,0);lcd.print(&quot;VOLUME&quot;);}else{lcd.setCursor(0,0);lcd.print(&quot;MUTE&quot;);}
   lcd.setCursor(0,1);lcd.print(&quot;CONTROL&quot;);
  }

////////////// TREBLE ///////////////////////////////////////////////////////////////////
 if(menu==1){
   if(ir.value==UP||ir.value==TREB_UP_IR){treb++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;treb_func();audio();}// кнопка &gt; 
   if(ir.value==DW||ir.value==TREB_DW_IR){treb--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;treb_func();audio();}// кнопка &lt;
 
   if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   treb=treb+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;treb_func();audio();}
   if(treb&lt;0){treb_print = abs(treb)*2;lcd.setCursor(7,0);lcd.write((uint8_t)3);}else{treb_print = treb*2;lcd.setCursor(7,0);lcd.print(&quot; &quot;);}
   a[0]= treb_print/10;a[1]=treb_print%10;
   for(x=0;x&lt;2;x++){switch(x){case 0: e1=8,e2=9,e3=10;break;case 1: e1=11,e2=12,e3=13;break;}digit();}
   lcd.setCursor(0,0);lcd.print(&quot;TREBLE&quot;);lcd.setCursor(0,1);lcd.print(&quot;CONTROL&quot;);lcd.setCursor(14,0);lcd.print(&quot;dB&quot;);
   }   

 ////////////// BASS ///////////////////////////////////////////////////////////////////
 if(menu==2){
   if(ir.value==UP||ir.value==BASS_UP_IR){bass++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;bass_func();audio();}// кнопка &gt; 
   if(ir.value==DW||ir.value==BASS_DW_IR){bass--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;bass_func();audio();}// кнопка &lt;
 
   if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   bass=bass+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;bass_func();audio();}
   if(bass&lt;0){bass_print = abs(bass)*2;lcd.setCursor(7,0);lcd.write((uint8_t)3);}else{bass_print = bass*2;lcd.setCursor(7,0);lcd.print(&quot; &quot;);}
   a[0]= bass_print/10;a[1]=bass_print%10;
   for(x=0;x&lt;2;x++){switch(x){case 0: e1=8,e2=9,e3=10;break;case 1: e1=11,e2=12,e3=13;break;}digit();}
   lcd.setCursor(0,0);lcd.print(&quot;BASS&quot;);lcd.setCursor(0,1);lcd.print(&quot;CONTROL&quot;);lcd.setCursor(14,0);lcd.print(&quot;dB&quot;);
   }     


  ////////////// ATT_L ///////////////////////////////////////////////////////////////////
 if(menu0==0){menu=100;
   if(ir.value==UP){att_l++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;att_l_func();audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){att_l++;gr2=0;cl1();times=millis();w=1;w2=1;att_l_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==DW){att_l--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;att_l_func();audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){att_l--;gr1=0;cl1();times=millis();w=1;w2=1;att_l_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   att_l=att_l+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;att_l_func();audio();}
   a[0]= (att_l)/10;a[1]=(att_l)%10;
   for(x=0;x&lt;2;x++){switch(x){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
   lcd.setCursor(0,0);lcd.print(&quot;ATTENUATOR&quot;);lcd.setCursor(0,1);lcd.print(&quot;LEFT&quot;);
   }   

  ////////////// ATT_R ///////////////////////////////////////////////////////////////////
 if(menu0==1){menu=100;
   if(ir.value==UP){att_r++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;att_r_func();audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){att_r++;gr2=0;cl1();times=millis();w=1;w2=1;att_r_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==DW){att_r--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;att_r_func();audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){att_r--;gr1=0;cl1();times=millis();w=1;w2=1;att_r_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   att_r=att_r+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;att_r_func();audio();}
   a[0]= (att_r)/10;a[1]=(att_r)%10;
   for(x=0;x&lt;2;x++){switch(x){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
   lcd.setCursor(0,0);lcd.print(&quot;ATTENUATOR&quot;);lcd.setCursor(0,1);lcd.print(&quot;RIGHT&quot;);
   }     

  ////////////// ATT_C ///////////////////////////////////////////////////////////////////
 if(menu0==2){menu=100;
   if(ir.value==UP){att_c++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;att_c_func();audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){att_c++;gr2=0;cl1();times=millis();w=1;w2=1;att_c_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==DW){att_c--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;att_c_func();audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){att_c--;gr1=0;cl1();times=millis();w=1;w2=1;att_c_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   att_c=att_c+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;att_c_func();audio();}
   a[0]= (att_c)/10;a[1]=(att_c)%10;
   for(x=0;x&lt;2;x++){switch(x){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
   lcd.setCursor(0,0);lcd.print(&quot;ATTENUATOR&quot;);lcd.setCursor(0,1);lcd.print(&quot;CENTER&quot;);
   }  

  ////////////// ATT_SW ///////////////////////////////////////////////////////////////////
 if(menu0==3){menu=100;
   if(ir.value==UP){att_sw++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;att_sw_func();audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){att_sw++;gr2=0;cl1();times=millis();w=1;w2=1;att_sw_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==DW){att_sw--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;att_sw_func();audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){att_sw--;gr1=0;cl1();times=millis();w=1;w2=1;att_sw_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   att_sw=att_sw+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;att_sw_func();audio();}
   a[0]= (att_sw)/10;a[1]=(att_sw)%10;
   for(x=0;x&lt;2;x++){switch(x){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
   lcd.setCursor(0,0);lcd.print(&quot;ATTENUATOR&quot;);lcd.setCursor(0,1);lcd.print(&quot;SUBWOOFER&quot;);
   }  

  ////////////// ATT_SL ///////////////////////////////////////////////////////////////////
 if(menu0==4){menu=100;
   if(ir.value==UP){att_sl++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;att_sl_func();audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){att_sl++;gr2=0;cl1();times=millis();w=1;w2=1;att_sl_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==DW){att_sl--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;att_sl_func();audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){att_sl--;gr1=0;cl1();times=millis();w=1;w2=1;att_sl_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   att_sl=att_sl+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;att_sl_func();audio();}
   a[0]= (att_sl)/10;a[1]=(att_sl)%10;
   for(x=0;x&lt;2;x++){switch(x){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
   lcd.setCursor(0,0);lcd.print(&quot;ATTENUATOR&quot;);lcd.setCursor(0,1);lcd.print(&quot;SUR. LEFT&quot;);
   }  

  ////////////// ATT_SR ///////////////////////////////////////////////////////////////////
 if(menu0==5){menu=100;
   if(ir.value==UP){att_sr++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;att_sr_func();audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){att_sr++;gr2=0;cl1();times=millis();w=1;w2=1;att_sr_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==DW){att_sr--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;att_sr_func();audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){att_sr--;gr1=0;cl1();times=millis();w=1;w2=1;att_sr_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   att_sr=att_sr+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;att_sr_func();audio();}
   a[0]= (att_sr)/10;a[1]=(att_sr)%10;
   for(x=0;x&lt;2;x++){switch(x){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
   lcd.setCursor(0,0);lcd.print(&quot;ATTENUATOR&quot;);lcd.setCursor(0,1);lcd.print(&quot;SUR. RIGHT&quot;);
   }                      


 if(millis()-times&gt;10000&amp;&amp;w==1&amp;&amp;mute==0&amp;&amp;power==0){
   menu=0;menu0=100;w=0;cl();
   EEPROM.update(0,vol);EEPROM.update(1,bass+7);EEPROM.update(2,treb+7);
   EEPROM.update(3,att_l);EEPROM.update(4,att_r);EEPROM.update(5,att_c);
   EEPROM.update(6,att_sw);EEPROM.update(7,att_sl);EEPROM.update(8,att_sr);
   EEPROM.update(9,in);
   }
}

void vol_func(){if(vol&gt;50){vol=50;}if(vol&lt;0){vol=0;}}
void treb_func(){if(treb&lt;-7){treb=-7;}if(treb&gt;7){treb=7;}}
void bass_func(){if(bass&lt;-7){bass=-7;}if(bass&gt;7){bass=7;}}
void cl(){ir.value=0;delay(300);lcd.clear();}
void cl1(){ir.value=0;delay(200);}  

void att_l_func(){if(att_l&gt;19){att_l=19;}if(att_l&lt;0){att_l=0;}}
void att_r_func(){if(att_r&gt;19){att_r=19;}if(att_r&lt;0){att_r=0;}}
void att_c_func(){if(att_c&gt;19){att_c=19;}if(att_c&lt;0){att_c=0;}}
void att_sw_func(){if(att_sw&gt;19){att_sw=19;}if(att_sw&lt;0){att_sw=0;}}
void att_sr_func(){if(att_sr&gt;19){att_sr=19;}if(att_sr&lt;0){att_sr=0;}}
void att_sl_func(){if(att_sl&gt;19){att_sl=19;}if(att_sl&lt;0){att_sl=0;}}

void digit(){switch(a[x]){
case 0: d1=1,d2=8,d3=6,d4=1,d5=3,d6=6;break;case 1: d1=32,d2=2,d3=6,d4=32,d5=32,d6=6;break;
case 2: d1=2,d2=8,d3=6,d4=1,d5=4,d6=5;break;case 3: d1=2,d2=4,d3=6,d4=7,d5=3,d6=6;break;
case 4: d1=1,d2=3,d3=6,d4=32,d5=32,d6=6;break;case 5: d1=1,d2=4,d3=5,d4=7,d5=3,d6=6;break;
case 6: d1=1,d2=4,d3=5,d4=1,d5=3,d6=6;break;case 7: d1=1,d2=8,d3=6,d4=32,d5=32,d6=6;break;
case 8: d1=1,d2=4,d3=6,d4=1,d5=3,d6=6;break;case 9: d1=1,d2=4,d3=6,d4=7,d5=3,d6=6;break;}
lcd.setCursor(e1,0);lcd.write((uint8_t)d1);lcd.setCursor(e2,0);lcd.write((uint8_t)d2);lcd.setCursor(e3,0);lcd.write((uint8_t)d3);
lcd.setCursor(e1,1);lcd.write((uint8_t)d4);lcd.setCursor(e2,1);lcd.write((uint8_t)d5);lcd.setCursor(e3,1);lcd.write((uint8_t)d6);}

void to_Timer(){newPosition = myEnc.read()/4;}
void audio(){
  byte_1(treb,0b0000,bass,0);// treb -7...7, port 0b0000, bass -7...7, bypass = 0
  byte_2(vol+att_l,vol+att_r);// 0...95 = 0...-95 dB mute = 111
  byte_3(vol+att_c,vol+att_sw);// 0...95 = 0...-95 dB mute = 111
  byte_4(vol+att_sl,vol+att_sr);// 0...95 = 0...-95 dB mute = 111
  }

void audio_mute(){
  byte_2(111,111);
  byte_3(111,111);
  byte_4(111,111);
  }  

void byte_1(int treb, byte port, int bass, bool by_pass){
  // treb int -7...+7 === -14...+14 dB
  // bass int -7...+7 === -14...+14 dB
  // byte port 0b0000....0b1111
  // by_pass  === 0 TONE | 1 BYPASS 
  switch(treb){
    case -7: treb = 0b1111;break;
    case -6: treb = 0b1101;break;
    case -5: treb = 0b1110;break;
    case -4: treb = 0b1100;break;
    case -3: treb = 0b1011;break;
    case -2: treb = 0b1010;break;
    case -1: treb = 0b1001;break;
    case  0: treb = 0b0000;break;
    case  1: treb = 0b0001;break;
    case  2: treb = 0b0010;break;
    case  3: treb = 0b0011;break;
    case  4: treb = 0b0100;break;
    case  5: treb = 0b0110;break;
    case  6: treb = 0b0101;break;
    case  7: treb = 0b0111;break;
    }
  switch(bass){
    case -7: bass = 0b1111;break;
    case -6: bass = 0b1101;break;
    case -5: bass = 0b1110;break;
    case -4: bass = 0b1100;break;
    case -3: bass = 0b1011;break;
    case -2: bass = 0b1010;break;
    case -1: bass = 0b1001;break;
    case  0: bass = 0b0000;break;
    case  1: bass = 0b0001;break;
    case  2: bass = 0b0010;break;
    case  3: bass = 0b0011;break;
    case  4: bass = 0b0100;break;
    case  5: bass = 0b0110;break;
    case  6: bass = 0b0101;break;
    case  7: bass = 0b0111;break;
    }  
  unsigned int data_byte = (treb&lt;&lt;12)|(port&lt;&lt;8)|(bass&lt;&lt;4)|(by_pass&lt;&lt;2)|0b00;
  writeByte(data_byte);  
  }

void byte_2(int vol_l, int vol_r){
  // int vol 0...95 === 0...-95 dB mute=111
  if(vol_l&gt;79){vol_l=vol_l+16;}
  if(vol_r&gt;79){vol_r=vol_r+16;}
  unsigned int data_byte = (vol_l&lt;&lt;9)|(vol_r&lt;&lt;2)|0b01;
  writeByte(data_byte); 
  }  
void byte_3(int vol_c, int vol_sw){
  // int vol 0...95 === 0...-95 dB mute=112
  if(vol_c&gt;79){vol_c=vol_c+16;}
  if(vol_sw&gt;79){vol_sw=vol_sw+16;}
  unsigned int data_byte = (vol_c&lt;&lt;9)|(vol_sw&lt;&lt;2)|0b10;
  writeByte(data_byte); 
  }  
void byte_4(int vol_sl, int vol_sr){
  // int vol 0...95 === 0...-95 dB mute=112
  if(vol_sl&gt;79){vol_sl=vol_sl+16;}
  if(vol_sr&gt;79){vol_sr=vol_sr+16;}
  unsigned int data_byte = (vol_sl&lt;&lt;9)|(vol_sr&lt;&lt;2)|0b11;
  writeByte(data_byte); 
  }    

void writeByte(uint16_t data){
    digitalWrite(LATCH, HIGH); delayMicroseconds(1);
    digitalWrite(LATCH, LOW); delayMicroseconds(3);
    for (int i = 15; i &gt;= 0; i--) {
        digitalWrite(DATA, (data &gt;&gt; i) &amp; 1); delayMicroseconds(3);
        digitalWrite(CLOCK, HIGH); delayMicroseconds(3);
        digitalWrite(CLOCK, LOW); delayMicroseconds(3);
    }
    digitalWrite(LATCH, HIGH); delayMicroseconds(1);
    digitalWrite(LATCH, LOW); delayMicroseconds(3);
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Sat, 24 Jan 2026 11:48:04 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=12217#p12217</guid>
		</item>
	</channel>
</rss>
