<?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; Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)]]></title>
		<link>http://forum.rcl-radio.ru/viewtopic.php?id=564</link>
		<atom:link href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=564&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)».]]></description>
		<lastBuildDate>Fri, 16 Jun 2023 14:21:58 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=7991#p7991</link>
			<description><![CDATA[<p><a href="http://rcl-radio.ru/?p=130724">http://rcl-radio.ru/?p=130724</a></p>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Fri, 16 Jun 2023 14:21:58 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=7991#p7991</guid>
		</item>
		<item>
			<title><![CDATA[Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=7990#p7990</link>
			<description><![CDATA[<p>Все работает, как от производителя. Можно сказать проект закончен. Осталось все собрать, проводо укоротить.</p>]]></description>
			<author><![CDATA[null@example.com (gidon19880518)]]></author>
			<pubDate>Thu, 15 Jun 2023 17:32:49 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=7990#p7990</guid>
		</item>
		<item>
			<title><![CDATA[Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=7981#p7981</link>
			<description><![CDATA[<p>Изменил индикацию MUTE, увеличил регулировку баланса до +-10дБ</p><div class="codebox"><pre><code>#define MUTE_OUT    0
#define GND5        13
#define SEG_G       2   // in51
#define DP          3   // in20
#define SEG_A       4   // out51
#define SEG_F       5   // out20
#define SEG_D       6
#define SEG_E       7  
#define SEG_B       8   // stby
#define SEG_C       9   // mute
#define ENC_CLK     10  // энкодер контакт 1
#define ENC_DT      11  // энкодер контакт 2
#define PIN_IR      12  // вход IR
#define PIN_IN      1  // кнопка INPUT

#define GND1        A0
#define GND2        A1
#define GND3        A2
#define GND4        A3
// SDA              A4 
// SCL              A5

#define VOL_UP_IR      0x33B8D22D
#define VOL_DW_IR      0x33B8F20D
#define CENTER_UP_IR   0x33B8D42B
#define CENTER_DW_IR   0x33B8906F
#define SURR_UP_IR     0x33B854AB
#define SURR_DW_IR     0x33B804FB
#define SUB_UP_IR      0x33B832CD
#define SUB_DW_IR      0x33B8C43B
#define BALL_UP_IR     0x33B8827D
#define BALL_DW_IR     0x33B8847B
#define ST_BY_IR       0x33B800FF
#define MUTE_IR        0x33B8649B
#define MODE_IR        0x33B8A45B
#define INPUT_IR       0x33B844BB

#include &lt;Wire.h&gt;
#include &lt;Encoder.h&gt;            // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
#include &lt;MsTimer2.h&gt;           // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip       
#include &lt;PT2323.h&gt;             // http://rcl-radio.ru/wp-content/uploads/2019/06/PT2323-2.zip
#include &lt;TDA7448.h&gt;            // http://rcl-radio.ru/wp-content/uploads/2019/08/TDA7448-1.zip
#include &lt;EEPROM.h&gt;
#include &lt;IRremote.h&gt;           // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip     
#include &lt;boarddefs.h&gt;          // входит в состав библиотеки IRremote
 
 PT2323 pt; 
 TDA7448 tda;
 IRrecv irrecv(PIN_IR); // указываем вывод модуля IR приемника
 Encoder myEnc(ENC_DT, ENC_CLK);// DT, CLK
 decode_results ir; 
 

 int an, segm,i,menu,input,in_data,vol;
 byte a[4];
 long oldPosition  = -999,newPosition,times,tim_mut; 
 bool mute_led=0,power_led=0,in5_1_led=0,aux_led=0,out5_1_led=0,out2_1_led=0;
 bool w,w1,dp_led,gr1,gr2,mut,power;
 int surr,center,subw,ball;
 bool out;

  
void setup(){ 
    Wire.begin();
    irrecv.enableIRIn();
  //  Serial.begin(9600);
    MsTimer2::set(2, to_Timer);MsTimer2::start();
    pinMode(PIN_IN,INPUT); // кнопка INPUT
    pinMode(SEG_A,OUTPUT);
    pinMode(SEG_B,OUTPUT);
    pinMode(SEG_C,OUTPUT);
    pinMode(SEG_D,OUTPUT);
    pinMode(SEG_E,OUTPUT);
    pinMode(SEG_F,OUTPUT);
    pinMode(SEG_G,OUTPUT);
    pinMode(DP,OUTPUT);
    pinMode(GND1,OUTPUT);
    pinMode(GND2,OUTPUT);
    pinMode(GND3,OUTPUT);
    pinMode(GND4,OUTPUT);
    pinMode(GND5,OUTPUT);
    pinMode(MUTE_OUT,OUTPUT);
   // digitalWrite(MUTE_OUT,LOW);
    digitalWrite(MUTE_OUT,HIGH);
    if(EEPROM.read(100)!=0){for(int i=0;i&lt;101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении  
    input = EEPROM.read(0);vol = EEPROM.read(1)-79;center = EEPROM.read(2);subw = EEPROM.read(3);surr = EEPROM.read(4);ball = EEPROM.read(5)-10;out = EEPROM.read(6);
    if(out&gt;1){out=1;}
    if(input&gt;4){input=4;}
    if(input==0){in_data=0;}
    if(input==1){in_data=4;}
    delay(300);
    audio_pt();
    audio_tda();
}
 
void loop(){ 
/// IR ////////////////////////////////////////
   if ( irrecv.decode( &amp;ir )) {
 // Serial.print(&quot;0x&quot;);Serial.println( ir.value,HEX);
   irrecv.resume();times=millis();w=1;w1=1;}
   if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта   
//// BUTTON + IR ////////////////////////////////////////////////
if(ir.value==ST_BY_IR &amp;&amp; power==1){power=0;menu=0;mut=0;audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// power
if(ir.value==ST_BY_IR &amp;&amp; power==0){power=1;menu=100;mut=1;audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// power

if(power==0){
  power_led=0;
  
if(ir.value==MUTE_IR &amp;&amp; mut==1){mut=0;menu=0;audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// mute
if(ir.value==MUTE_IR &amp;&amp; mut==0){mut=1;menu=100;audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// mute

if(mut==0){
if((digitalRead(PIN_IN)==LOW || ir.value==INPUT_IR) &amp;&amp; input==1){input=0;in_data=0;audio_pt();cl();w=1;w1=1;times=millis();delay(250);}// input
if((digitalRead(PIN_IN)==LOW || ir.value==INPUT_IR) &amp;&amp; input==0){input=1;in_data=4;audio_pt();cl();w=1;w1=1;times=millis();delay(250);}// input

if(ir.value==VOL_UP_IR &amp;&amp; menu!=0){vol++;menu=0;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;vol_func();audio_tda();}// кнопка &gt; 
if(ir.value==VOL_DW_IR &amp;&amp; menu!=0){vol--;menu=0;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;vol_func();audio_tda();}// кнопка &lt;

if(ir.value==MODE_IR &amp;&amp; out==1){out=0;audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// out
if(ir.value==MODE_IR &amp;&amp; out==0){out=1;audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// out

if(ir.value==SUB_UP_IR &amp;&amp; menu!=1){subw++;menu=1;sub_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// subw
if(ir.value==SUB_DW_IR &amp;&amp; menu!=1){subw--;menu=1;sub_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// subw

if(ir.value==CENTER_UP_IR &amp;&amp; menu!=2){center++;menu=2;center_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// subw
if(ir.value==CENTER_DW_IR &amp;&amp; menu!=2){center--;menu=2;center_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// subw

if(ir.value==SURR_UP_IR &amp;&amp; menu!=3){surr++;menu=3;surr_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// surr
if(ir.value==SURR_DW_IR &amp;&amp; menu!=3){surr--;menu=3;surr_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// surr

if(ir.value==BALL_UP_IR &amp;&amp; menu!=4){ball++;menu=4;ball_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// ball
if(ir.value==BALL_DW_IR &amp;&amp; menu!=4){ball--;menu=4;ball_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// ball
}

  if(out==0){out5_1_led=1;out2_1_led=0;}
  if(out==1){out5_1_led=0;out2_1_led=1;}
  if(input==0){aux_led=1;in5_1_led=0;}else{in5_1_led=1;aux_led=0;}
}

else{power_led=1;out5_1_led=0;out2_1_led=0;mute_led=0;aux_led=0;in5_1_led=0;a[0]=10;a[1]=10;a[2]=10;a[3]=10;an=5;dp_led=0;}


//// VOLUME ////////////////////////////////////////////////
if(menu==0){
  if(input==0){a[0]=2;a[1]=0;dp_led=1;}
  if(input==1){a[0]=5;a[1]=1;dp_led=1;}
   
   if(ir.value==VOL_UP_IR){vol++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;vol_func();audio_tda();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl();times=millis();w=1;w1=1;vol_func();audio_tda();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==VOL_DW_IR){vol--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;vol_func();audio_tda();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl();times=millis();w=1;w1=1;vol_func();audio_tda();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;  
 
  if (newPosition != oldPosition){oldPosition = newPosition;myEnc.write(0);enc_err();vol=vol+newPosition;
   newPosition=0;w=1;w1=1;times=millis();vol_func();audio_tda();}
    a[2]=(79+vol)/10;
    a[3]=(79+vol)%10;
    //a[3]=out;
  }  
///////////////////////////////////////////////////////////

//// ATT SUBW ///////////////////////////////////////////////////////////
if(menu==1){
   if(ir.value==SUB_UP_IR){subw++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;sub_func();audio_tda();}// кнопка &gt; 
   if(ir.value==SUB_DW_IR){subw--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;sub_func();audio_tda();}// кнопка &lt;
       a[0]=11;
       a[1]=12;
       a[2]=(subw-5)/10%10;
       a[3]=(subw-5)%10;
      if(subw-5&gt;=0) {a[2]=10;a[3]=abs(subw-5);}
        else{a[2]=17;a[3]=abs(subw-5);}  
  }

//// ATT CENTER ///////////////////////////////////////////////////////////
if(menu==2){
   if(ir.value==CENTER_UP_IR){center++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;center_func();audio_tda();}// кнопка &gt; 
   if(ir.value==CENTER_DW_IR){center--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;center_func();audio_tda();}// кнопка &lt;
       a[0]=13;
       a[1]=14;
       a[2]=(center-5)/10%10;
       a[3]=(center-5)%10;
      if(center-5&gt;=0) {a[2]=10;a[3]=abs(center-5);}
        else{a[2]=17;a[3]=abs(center-5);}   
  }  


//// ATT SURR ///////////////////////////////////////////////////////////
if(menu==3){
   if(ir.value==SURR_UP_IR){surr++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;surr_func();audio_tda();}// кнопка &gt; 
   if(ir.value==SURR_DW_IR){surr--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;surr_func();audio_tda();}// кнопка &lt; 
       a[0]=11;
       a[1]=15;
       a[2]=(surr-5)/10%10;
       a[3]=(surr-5)%10;
      if(surr-5&gt;=0) {a[2]=10;a[3]=abs(surr-5);}
        else{a[2]=17;a[3]=abs(surr-5);}    
  } 

//// BALLANCE SURR ///////////////////////////////////////////////////////////
if(menu==4){
   if(ir.value==BALL_UP_IR){ball++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;ball_func();audio_tda();}// кнопка &gt; 
   if(ir.value==BALL_DW_IR){ball--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;ball_func();audio_tda();}// кнопка &lt; 
       a[0]=12;
       a[1]=16;
      if(ball&gt;=0) {a[2]=abs(ball/10);;a[3]=abs(ball%10);}
      else if(ball==-10){a[2]=18;a[3]=0;}
        else{a[2]=17;a[3]=abs(ball);}
  }  

if(mut==1 &amp;&amp; power==0){
  if(millis()-tim_mut&gt;500){tim_mut=millis();}
  if(millis()-tim_mut&lt;250){a[0]=10;a[1]=10;a[2]=10;a[3]=10;dp_led=0;mute_led=0;}
  if(millis()-tim_mut&gt;250){
          a[2]=(79+vol)/10;a[3]=(79+vol)%10;
            if(input==0){a[0]=2;a[1]=0;dp_led=1;}
            if(input==1){a[0]=5;a[1]=1;dp_led=1;}
            mute_led=1;
    }
  }      

////////////////// EEPROM //////////////////////////////////////////////////////////////
 if(millis()-times&gt;5000 &amp;&amp; w1==1 &amp;&amp; power==0 &amp;&amp; mut==0){
     EEPROM.update(0,input);EEPROM.update(1,vol+79);EEPROM.update(2,center);EEPROM.update(3,subw);EEPROM.update(4,surr);EEPROM.update(5,ball+10);EEPROM.update(6,out);
     menu=0;w1=0;w=1;}       
 }// loop

void ball_func(){if(ball&lt;-10){ball=-10;}if(ball&gt;10){ball=10;}}
void surr_func(){if(surr&lt;0){surr=0;}if(surr&gt;10){surr=10;}}
void cl(){ir.value=0;delay(100);}
void center_func(){if(center&lt;0){center=0;}if(center&gt;10){center=10;}}
void vol_func(){if(vol&gt;=0){vol=0;}if(vol&lt;-79){vol=-79;}}
void sub_func(){if(subw&lt;0){subw=0;}if(subw&gt;10){subw=10;}}
void enc_err(){if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}}
void to_Timer(){newPosition = myEnc.read()/4;
  switch(i){
    case 0: segm = 10; segment();an=5;anod();delay(1);segm=a[0];ch(DP,dp_led); an=0; anod(); segment();break;
    case 1: segm = 10; segment();an=5;anod();delay(1);segm=a[1]; an=1; anod(); segment();break;
    case 2: segm = 10; segment();an=5;anod();delay(1);segm=a[2]; an=2; anod(); segment();break;
    case 3: segm = 10; segment();an=5;anod();delay(1);segm=a[3]; an=3; anod(); segment();break;
    case 4: segm = 10; segment();an=5;anod();delay(1);
       ch(SEG_C,mute_led);
       ch(SEG_B,power_led);
       ch(SEG_G,in5_1_led);
       ch(DP,aux_led);
       ch(SEG_A,out5_1_led);
       ch(SEG_F,out2_1_led);
    an=4; anod();break;
  }
   i++;if(i&gt;4){i=0;} 
   delay(1);
  } 
 
void segment(){
  switch(segm){                                                                 
             //  A          B           C            D          E          F         G  
    case 0: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,0);break;// 0 
    case 1: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);break;// 1
    case 2: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,0);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,0);ch(SEG_G,1);break;// 2
    case 3: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,1);break;// 3   
    case 4: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 4 
    case 5: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 5 
    case 6: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);break;// 6 
    case 7: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);break;// 7 
    case 8: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);break;// 8
    case 9: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 9 
   case 10: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,0);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);ch(DP,0);break;// пусто  
   case 11: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);ch(DP,0);break;// S
   case 12: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);ch(DP,0);break;// b
   case 13: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,0);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,0);ch(DP,0);break;// C
   case 14: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,1);ch(SEG_F,0);ch(SEG_G,1);ch(DP,0);break;// n
   case 15: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,0);ch(DP,0);break;// U
   case 16: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,0);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,0);ch(DP,0);break;// L 
   case 17: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,0);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,1);ch(DP,0);break;// - 
   case 18: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,1);ch(DP,0);break;// -1 
  }}
void anod(){
  switch(an){                                                             
    case 0:ch(GND1,0);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break;  
    case 1:ch(GND1,1);ch(GND2,0);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break; 
    case 2:ch(GND1,1);ch(GND2,1);ch(GND3,0);ch(GND4,1);ch(GND5,1);  break;  
    case 3:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,0);ch(GND5,1);  break;  
    case 4:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,0);  break; 
    case 5:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break;   
  }}
void ch(int pin, int logic){digitalWrite(pin,logic);}

void audio_pt(){
  pt.setInput(in_data); // входы 1...4 (0...3) или 6 моно (4)
  pt.setMute(0,0,0,0,0,0,0); // MUTE OFF для выходов (0,0,0,0,0,0,0); 
                              // MUTE ON  для выходов (1,1,1,1,1,1,1); 
                              // fl,  fr,  ct,  sub,  sl,  sr, все  выходы mute
  pt.setFeature(0,0); // дополнительные функции 0...3
                     // 0 - Enhanced Surround Function Active
                     // 1 - Enhanced Surround Function Disabled
                     // 0 - Mixed Channel (0dB) Setup
                     // 1 - Mixed Channel (+6dB) Setup  
}

void audio_tda(){// 0 макс громк, -79(79) мин громк 
if(mut==0){ 
  tda.setAtt(1,vol);// FL
  tda.setAtt(2,vol);// FR
 if(out==0){ tda.setAtt(3,vol+center);}else{tda.setAtt(3,-79);}// CT
  tda.setAtt(4,vol+subw);// SUB 
 if(out==0){ tda.setAtt(5,vol+surr+10+ball);}else{tda.setAtt(5,-79);}// SL  
 if(out==0){ tda.setAtt(6,vol+surr+10-ball);}else{tda.setAtt(6,-79);}// SR
}
else{
  tda.setAtt(1,-79);// FL
  tda.setAtt(2,-79);// FR
  tda.setAtt(3,-79);// CT
  tda.setAtt(4,-79);// SUB 
  tda.setAtt(5,-79);// SL
  tda.setAtt(6,-79);// SR
  }
  }</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Wed, 14 Jun 2023 12:02:58 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=7981#p7981</guid>
		</item>
		<item>
			<title><![CDATA[Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=7980#p7980</link>
			<description><![CDATA[<p>Все работает замечательно. Пришел другой пульт сегодня коды пропишу. <br />подсмотрел как реализовано mute на другой системе microlab.&nbsp; Можно ли сделать при нажатии на mute что бы индикаторы мигали (с последним значением ) с светодиодом mute. surr добавляет звук на тыловых колонках. только не понял работу баланса, что -то меняется но еле заметно.&nbsp; <br />и еще можно ли реализовать Cn, SU, Sb, значения менялись не от 0 до 9 от от -5 до 5.</p>]]></description>
			<author><![CDATA[null@example.com (gidon19880518)]]></author>
			<pubDate>Wed, 14 Jun 2023 09:31:14 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=7980#p7980</guid>
		</item>
		<item>
			<title><![CDATA[Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=7974#p7974</link>
			<description><![CDATA[<p>Все работает, буду тестировать</p>]]></description>
			<author><![CDATA[null@example.com (gidon19880518)]]></author>
			<pubDate>Sat, 10 Jun 2023 05:45:46 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=7974#p7974</guid>
		</item>
		<item>
			<title><![CDATA[Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=7973#p7973</link>
			<description><![CDATA[<p>Сейчас MUTE будет отключать звук</p><div class="codebox"><pre><code>#define MUTE_OUT    0
#define GND5        13
#define SEG_G       2   // in51
#define DP          3   // in20
#define SEG_A       4   // out51
#define SEG_F       5   // out20
#define SEG_D       6
#define SEG_E       7  
#define SEG_B       8   // stby
#define SEG_C       9   // mute
#define ENC_CLK     10  // энкодер контакт 1
#define ENC_DT      11  // энкодер контакт 2
#define PIN_IR      12  // вход IR
#define PIN_IN      1  // кнопка INPUT

#define GND1        A0
#define GND2        A1
#define GND3        A2
#define GND4        A3
// SDA              A4 
// SCL              A5

#define VOL_UP_IR      0x33B8D22D
#define VOL_DW_IR      0x33B8F20D
#define CENTER_UP_IR   0x33B8D42B
#define CENTER_DW_IR   0x33B8906F
#define SURR_UP_IR     0x33B854AB
#define SURR_DW_IR     0x33B804FB
#define SUB_UP_IR      0x33B832CD
#define SUB_DW_IR      0x33B8C43B
#define BALL_UP_IR     0x33B8827D
#define BALL_DW_IR     0x33B8847B
#define ST_BY_IR       0x33B800FF
#define MUTE_IR        0x33B8649B
#define MODE_IR        0x33B8A45B
#define INPUT_IR       0x33B844BB

#include &lt;Wire.h&gt;
#include &lt;Encoder.h&gt;            // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
#include &lt;MsTimer2.h&gt;           // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip       
#include &lt;PT2323.h&gt;             // http://rcl-radio.ru/wp-content/uploads/2019/06/PT2323-2.zip
#include &lt;TDA7448.h&gt;            // http://rcl-radio.ru/wp-content/uploads/2019/08/TDA7448-1.zip
#include &lt;EEPROM.h&gt;
#include &lt;IRremote.h&gt;           // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip     
#include &lt;boarddefs.h&gt;          // входит в состав библиотеки IRremote
 
 PT2323 pt; 
 TDA7448 tda;
 IRrecv irrecv(PIN_IR); // указываем вывод модуля IR приемника
 Encoder myEnc(ENC_DT, ENC_CLK);// DT, CLK
 decode_results ir; 
 

 int an, segm,i,menu,input,in_data,vol;
 byte a[4];
 long oldPosition  = -999,newPosition,times; 
 bool mute_led=0,power_led=0,in5_1_led=0,aux_led=0,out5_1_led=0,out2_1_led=0;
 bool w,w1,dp_led,gr1,gr2,mut,power;
 int surr,center,subw,ball;
 bool out;

  
void setup(){ 
    Wire.begin();
    irrecv.enableIRIn();
  //  Serial.begin(9600);
    MsTimer2::set(2, to_Timer);MsTimer2::start();
    pinMode(PIN_IN,INPUT); // кнопка INPUT
    pinMode(SEG_A,OUTPUT);
    pinMode(SEG_B,OUTPUT);
    pinMode(SEG_C,OUTPUT);
    pinMode(SEG_D,OUTPUT);
    pinMode(SEG_E,OUTPUT);
    pinMode(SEG_F,OUTPUT);
    pinMode(SEG_G,OUTPUT);
    pinMode(DP,OUTPUT);
    pinMode(GND1,OUTPUT);
    pinMode(GND2,OUTPUT);
    pinMode(GND3,OUTPUT);
    pinMode(GND4,OUTPUT);
    pinMode(GND5,OUTPUT);
    pinMode(MUTE_OUT,OUTPUT);
   // digitalWrite(MUTE_OUT,LOW);
    digitalWrite(MUTE_OUT,HIGH);
    if(EEPROM.read(100)!=0){for(int i=0;i&lt;101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении  
    input = EEPROM.read(0);vol = EEPROM.read(1)-79;center = EEPROM.read(2);subw = EEPROM.read(3);surr = EEPROM.read(4);ball = EEPROM.read(5)-5;out = EEPROM.read(6);
    if(out&gt;1){out=1;}
    if(input&gt;4){input=4;}
    if(input==0){in_data=0;}
    if(input==1){in_data=4;}
    delay(300);
    audio_pt();
    audio_tda();
}
 
void loop(){ 
/// IR ////////////////////////////////////////
   if ( irrecv.decode( &amp;ir )) {
  Serial.print(&quot;0x&quot;);Serial.println( ir.value,HEX);
   irrecv.resume();times=millis();w=1;w1=1;}
   if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта   
//// BUTTON + IR ////////////////////////////////////////////////
if(ir.value==ST_BY_IR &amp;&amp; power==1){power=0;menu=0;mut=0;audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// power
if(ir.value==ST_BY_IR &amp;&amp; power==0){power=1;menu=100;mut=1;audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// power

if(power==0){
  power_led=0;
  
if(ir.value==MUTE_IR &amp;&amp; mut==1){mut=0;menu=0;audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// mute
if(ir.value==MUTE_IR &amp;&amp; mut==0){mut=1;menu=100;audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// mute

if(mut==0){
if((digitalRead(PIN_IN)==LOW || ir.value==INPUT_IR) &amp;&amp; input==1){input=0;in_data=0;audio_pt();cl();w=1;w1=1;times=millis();delay(250);}// input
if((digitalRead(PIN_IN)==LOW || ir.value==INPUT_IR) &amp;&amp; input==0){input=1;in_data=4;audio_pt();cl();w=1;w1=1;times=millis();delay(250);}// input

if(ir.value==VOL_UP_IR &amp;&amp; menu!=0){vol++;menu=0;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;vol_func();audio_tda();}// кнопка &gt; 
if(ir.value==VOL_DW_IR &amp;&amp; menu!=0){vol--;menu=0;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;vol_func();audio_tda();}// кнопка &lt;

if(ir.value==MODE_IR &amp;&amp; out==1){out=0;audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// out
if(ir.value==MODE_IR &amp;&amp; out==0){out=1;audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// out

if(ir.value==SUB_UP_IR &amp;&amp; menu!=1){subw++;menu=1;sub_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// subw
if(ir.value==SUB_DW_IR &amp;&amp; menu!=1){subw--;menu=1;sub_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// subw

if(ir.value==CENTER_UP_IR &amp;&amp; menu!=2){center++;menu=2;center_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// subw
if(ir.value==CENTER_DW_IR &amp;&amp; menu!=2){center--;menu=2;center_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// subw

if(ir.value==SURR_UP_IR &amp;&amp; menu!=3){surr++;menu=3;surr_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// surr
if(ir.value==SURR_DW_IR &amp;&amp; menu!=3){surr--;menu=3;surr_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// surr

if(ir.value==BALL_UP_IR &amp;&amp; menu!=4){ball++;menu=4;ball_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// ball
if(ir.value==BALL_DW_IR &amp;&amp; menu!=4){ball--;menu=4;ball_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// ball
}

  if(out==0){out5_1_led=1;out2_1_led=0;}
  if(out==1){out5_1_led=0;out2_1_led=1;}
  if(mut==0){mute_led=0;}else{mute_led=1;}
  if(input==0){aux_led=1;in5_1_led=0;}else{in5_1_led=1;aux_led=0;}
}

else{power_led=1;out5_1_led=0;out2_1_led=0;mute_led=0;aux_led=0;in5_1_led=0;a[0]=10;a[1]=10;a[2]=10;a[3]=10;an=5;dp_led=0;}


//// VOLUME ////////////////////////////////////////////////
if(menu==0){
  if(input==0){a[0]=2;a[1]=0;dp_led=1;}
  if(input==1){a[0]=5;a[1]=1;dp_led=1;}
   
   if(ir.value==VOL_UP_IR){vol++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;vol_func();audio_tda();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl();times=millis();w=1;w1=1;vol_func();audio_tda();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==VOL_DW_IR){vol--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;vol_func();audio_tda();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl();times=millis();w=1;w1=1;vol_func();audio_tda();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;  
 
  if (newPosition != oldPosition){oldPosition = newPosition;myEnc.write(0);enc_err();vol=vol+newPosition;
   newPosition=0;w=1;w1=1;times=millis();vol_func();audio_tda();}
    a[2]=(79+vol)/10;
    a[3]=(79+vol)%10;
    //a[3]=out;
  }  
///////////////////////////////////////////////////////////

//// ATT SUBW ///////////////////////////////////////////////////////////
if(menu==1){
   if(ir.value==SUB_UP_IR){subw++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;sub_func();audio_tda();}// кнопка &gt; 
   if(ir.value==SUB_DW_IR){subw--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;sub_func();audio_tda();}// кнопка &lt;
       a[0]=11;
       a[1]=12;
       a[2]=subw/10%10;
       a[3]=subw%10;
  }

//// ATT CENTER ///////////////////////////////////////////////////////////
if(menu==2){
   if(ir.value==CENTER_UP_IR){center++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;center_func();audio_tda();}// кнопка &gt; 
   if(ir.value==CENTER_DW_IR){center--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;center_func();audio_tda();}// кнопка &lt;
       a[0]=13;
       a[1]=14;
       a[2]=center/10%10;
       a[3]=center%10;
  }  


//// ATT SURR ///////////////////////////////////////////////////////////
if(menu==3){
   if(ir.value==SURR_UP_IR){surr++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;surr_func();audio_tda();}// кнопка &gt; 
   if(ir.value==SURR_DW_IR){surr--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;surr_func();audio_tda();}// кнопка &lt; 
       a[0]=11;
       a[1]=15;
       a[2]=surr/10%10;
       a[3]=surr%10;
  } 

//// BALLANCE SURR ///////////////////////////////////////////////////////////
if(menu==4){
   if(ir.value==BALL_UP_IR){ball++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;ball_func();audio_tda();}// кнопка &gt; 
   if(ir.value==BALL_DW_IR){ball--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;ball_func();audio_tda();}// кнопка &lt; 
       a[0]=12;
       a[1]=16;
      if(ball&gt;=0) {a[2]=10;a[3]=abs(ball);}
        else{a[2]=17;a[3]=abs(ball);}
  }  

if(mut==1 &amp;&amp; power==0){a[0]=17;a[1]=17;a[2]=17;a[3]=17;}      

////////////////// EEPROM //////////////////////////////////////////////////////////////
 if(millis()-times&gt;5000 &amp;&amp; w1==1 &amp;&amp; power==0 &amp;&amp; mut==0){
     EEPROM.update(0,input);EEPROM.update(1,vol+79);EEPROM.update(2,center);EEPROM.update(3,subw);EEPROM.update(4,surr);EEPROM.update(5,ball+5);EEPROM.update(6,out);
     menu=0;w1=0;w=1;}       
 }// loop

void ball_func(){if(ball&lt;-5){ball=-5;}if(ball&gt;5){ball=5;}}
void surr_func(){if(surr&lt;0){surr=0;}if(surr&gt;10){surr=10;}}
void cl(){ir.value=0;delay(100);}
void center_func(){if(center&lt;0){center=0;}if(center&gt;10){center=10;}}
void vol_func(){if(vol&gt;=0){vol=0;}if(vol&lt;-79){vol=-79;}}
void sub_func(){if(subw&lt;0){subw=0;}if(subw&gt;10){subw=10;}}
void enc_err(){if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}}
void to_Timer(){newPosition = myEnc.read()/4;
  switch(i){
    case 0: segm = 10; segment();an=5;anod();delay(1);segm=a[0];ch(DP,dp_led); an=0; anod(); segment();break;
    case 1: segm = 10; segment();an=5;anod();delay(1);segm=a[1]; an=1; anod(); segment();break;
    case 2: segm = 10; segment();an=5;anod();delay(1);segm=a[2]; an=2; anod(); segment();break;
    case 3: segm = 10; segment();an=5;anod();delay(1);segm=a[3]; an=3; anod(); segment();break;
    case 4: segm = 10; segment();an=5;anod();delay(1);
       ch(SEG_C,mute_led);
       ch(SEG_B,power_led);
       ch(SEG_G,in5_1_led);
       ch(DP,aux_led);
       ch(SEG_A,out5_1_led);
       ch(SEG_F,out2_1_led);
    an=4; anod();break;
  }
   i++;if(i&gt;4){i=0;} 
   delay(1);
  } 
 
void segment(){
  switch(segm){                                                                 
             //  A          B           C            D          E          F         G  
    case 0: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,0);break;// 0 
    case 1: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);break;// 1
    case 2: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,0);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,0);ch(SEG_G,1);break;// 2
    case 3: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,1);break;// 3   
    case 4: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 4 
    case 5: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 5 
    case 6: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);break;// 6 
    case 7: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);break;// 7 
    case 8: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);break;// 8
    case 9: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 9 
   case 10: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,0);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);ch(DP,0);break;// пусто  
   case 11: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);ch(DP,0);break;// S
   case 12: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);ch(DP,0);break;// b
   case 13: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,0);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,0);ch(DP,0);break;// C
   case 14: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,1);ch(SEG_F,0);ch(SEG_G,1);ch(DP,0);break;// n
   case 15: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,0);ch(DP,0);break;// U
   case 16: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,0);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,0);ch(DP,0);break;// L 
   case 17: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,0);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,1);ch(DP,0);break;// - 
  }}
void anod(){
  switch(an){                                                             
    case 0:ch(GND1,0);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break;  
    case 1:ch(GND1,1);ch(GND2,0);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break; 
    case 2:ch(GND1,1);ch(GND2,1);ch(GND3,0);ch(GND4,1);ch(GND5,1);  break;  
    case 3:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,0);ch(GND5,1);  break;  
    case 4:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,0);  break; 
    case 5:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break;   
  }}
void ch(int pin, int logic){digitalWrite(pin,logic);}

void audio_pt(){
  pt.setInput(in_data); // входы 1...4 (0...3) или 6 моно (4)
  pt.setMute(0,0,0,0,0,0,0); // MUTE OFF для выходов (0,0,0,0,0,0,0); 
                              // MUTE ON  для выходов (1,1,1,1,1,1,1); 
                              // fl,  fr,  ct,  sub,  sl,  sr, все  выходы mute
  pt.setFeature(0,0); // дополнительные функции 0...3
                     // 0 - Enhanced Surround Function Active
                     // 1 - Enhanced Surround Function Disabled
                     // 0 - Mixed Channel (0dB) Setup
                     // 1 - Mixed Channel (+6dB) Setup  
}

void audio_tda(){// 0 макс громк, -79(79) мин громк 
if(mut==0){ 
  tda.setAtt(1,vol);// FL
  tda.setAtt(2,vol);// FR
 if(out==0){ tda.setAtt(3,vol+center);}else{tda.setAtt(3,-79);}// CT
  tda.setAtt(4,vol+subw);// SUB 
 if(out==0){ tda.setAtt(5,vol+surr+5+ball);}else{tda.setAtt(5,-79);}// SL
 if(out==0){ tda.setAtt(6,vol+surr+5-ball);}else{tda.setAtt(6,-79);}// SR
}
else{
  tda.setAtt(1,-79);// FL
  tda.setAtt(2,-79);// FR
  tda.setAtt(3,-79);// CT
  tda.setAtt(4,-79);// SUB 
  tda.setAtt(5,-79);// SL
  tda.setAtt(6,-79);// SR
  }
  }</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Sat, 10 Jun 2023 01:23:17 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=7973#p7973</guid>
		</item>
		<item>
			<title><![CDATA[Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=7972#p7972</link>
			<description><![CDATA[<p>все переключает нормально. все режимы работают.<br />stby выключает звук.<br />mute&nbsp; не работает пишет тире на сигментах, звук не отключает<br />надо еще несколько дней на тесты</p>]]></description>
			<author><![CDATA[null@example.com (gidon19880518)]]></author>
			<pubDate>Fri, 09 Jun 2023 20:30:19 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=7972#p7972</guid>
		</item>
		<item>
			<title><![CDATA[Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=7971#p7971</link>
			<description><![CDATA[<p>Чуть позже проверю</p>]]></description>
			<author><![CDATA[null@example.com (gidon19880518)]]></author>
			<pubDate>Fri, 09 Jun 2023 16:27:49 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=7971#p7971</guid>
		</item>
		<item>
			<title><![CDATA[Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=7970#p7970</link>
			<description><![CDATA[<div class="codebox"><pre><code>#define MUTE_OUT    0
#define GND5        13
#define SEG_G       2   // in51
#define DP          3   // in20
#define SEG_A       4   // out51
#define SEG_F       5   // out20
#define SEG_D       6
#define SEG_E       7  
#define SEG_B       8   // stby
#define SEG_C       9   // mute
#define ENC_CLK     10  // энкодер контакт 1
#define ENC_DT      11  // энкодер контакт 2
#define PIN_IR      12  // вход IR
#define PIN_IN      1  // кнопка INPUT

#define GND1        A0
#define GND2        A1
#define GND3        A2
#define GND4        A3
// SDA              A4 
// SCL              A5

#define VOL_UP_IR      0x33B8D22D
#define VOL_DW_IR      0x33B8F20D
#define CENTER_UP_IR   0x33B8D42B
#define CENTER_DW_IR   0x33B8906F
#define SURR_UP_IR     0x33B854AB
#define SURR_DW_IR     0x33B804FB
#define SUB_UP_IR      0x33B832CD
#define SUB_DW_IR      0x33B8C43B
#define BALL_UP_IR     0x33B8827D
#define BALL_DW_IR     0x33B8847B
#define ST_BY_IR       0x33B800FF
#define MUTE_IR        0x33B8649B
#define MODE_IR        0x33B8A45B
#define INPUT_IR       0x33B844BB

#include &lt;Wire.h&gt;
#include &lt;Encoder.h&gt;            // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
#include &lt;MsTimer2.h&gt;           // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip       
#include &lt;PT2323.h&gt;             // http://rcl-radio.ru/wp-content/uploads/2019/06/PT2323-2.zip
#include &lt;TDA7448.h&gt;            // http://rcl-radio.ru/wp-content/uploads/2019/08/TDA7448-1.zip
#include &lt;EEPROM.h&gt;
#include &lt;IRremote.h&gt;           // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip     
#include &lt;boarddefs.h&gt;          // входит в состав библиотеки IRremote
 
 PT2323 pt; 
 TDA7448 tda;
 IRrecv irrecv(PIN_IR); // указываем вывод модуля IR приемника
 Encoder myEnc(ENC_DT, ENC_CLK);// DT, CLK
 decode_results ir; 
 

 int an, segm,i,menu,input,in_data,vol;
 byte a[4];
 long oldPosition  = -999,newPosition,times; 
 bool mute_led=0,power_led=0,in5_1_led=0,aux_led=0,out5_1_led=0,out2_1_led=0;
 bool w,w1,dp_led,gr1,gr2,mut,power;
 int surr,center,subw,ball;
 bool out;

  
void setup(){ 
    Wire.begin();
    irrecv.enableIRIn();
  //  Serial.begin(9600);
    MsTimer2::set(2, to_Timer);MsTimer2::start();
    pinMode(PIN_IN,INPUT); // кнопка INPUT
    pinMode(SEG_A,OUTPUT);
    pinMode(SEG_B,OUTPUT);
    pinMode(SEG_C,OUTPUT);
    pinMode(SEG_D,OUTPUT);
    pinMode(SEG_E,OUTPUT);
    pinMode(SEG_F,OUTPUT);
    pinMode(SEG_G,OUTPUT);
    pinMode(DP,OUTPUT);
    pinMode(GND1,OUTPUT);
    pinMode(GND2,OUTPUT);
    pinMode(GND3,OUTPUT);
    pinMode(GND4,OUTPUT);
    pinMode(GND5,OUTPUT);
    pinMode(MUTE_OUT,OUTPUT);
   // digitalWrite(MUTE_OUT,LOW);
    digitalWrite(MUTE_OUT,HIGH);
    if(EEPROM.read(100)!=0){for(int i=0;i&lt;101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении  
    input = EEPROM.read(0);vol = EEPROM.read(1)-79;center = EEPROM.read(2);subw = EEPROM.read(3);surr = EEPROM.read(4);ball = EEPROM.read(5)-5;out = EEPROM.read(6);
    if(out&gt;1){out=1;}
    if(input&gt;4){input=4;}
    if(input==0){in_data=0;}
    if(input==1){in_data=4;}
    delay(300);
    audio_pt();
    audio_tda();
}
 
void loop(){ 
/// IR ////////////////////////////////////////
   if ( irrecv.decode( &amp;ir )) { 
  Serial.print(&quot;0x&quot;);Serial.println( ir.value,HEX);
   irrecv.resume();times=millis();w=1;w1=1;}
   if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта   
//// BUTTON + IR ////////////////////////////////////////////////
if(ir.value==ST_BY_IR &amp;&amp; power==1){power=0;menu=0;mut=0;audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// power
if(ir.value==ST_BY_IR &amp;&amp; power==0){power=1;menu=100;mut=1;audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// power

if(power==0){
  power_led=0;
  
if(ir.value==MUTE_IR &amp;&amp; mut==1){mut=0;menu=0;audio_tda;cl();w=1;w1=1;times=millis();delay(250);}// mute
if(ir.value==MUTE_IR &amp;&amp; mut==0){mut=1;menu=100;audio_tda;cl();w=1;w1=1;times=millis();delay(250);}// mute

if(mut==0){
if((digitalRead(PIN_IN)==LOW || ir.value==INPUT_IR) &amp;&amp; input==1){input=0;in_data=0;audio_pt();cl();w=1;w1=1;times=millis();delay(250);}// input
if((digitalRead(PIN_IN)==LOW || ir.value==INPUT_IR) &amp;&amp; input==0){input=1;in_data=4;audio_pt();cl();w=1;w1=1;times=millis();delay(250);}// input

if(ir.value==VOL_UP_IR &amp;&amp; menu!=0){vol++;menu=0;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;vol_func();audio_tda();}// кнопка &gt; 
if(ir.value==VOL_DW_IR &amp;&amp; menu!=0){vol--;menu=0;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;vol_func();audio_tda();}// кнопка &lt;

if(ir.value==MODE_IR &amp;&amp; out==1){out=0;audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// out
if(ir.value==MODE_IR &amp;&amp; out==0){out=1;audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// out

if(ir.value==SUB_UP_IR &amp;&amp; menu!=1){subw++;menu=1;sub_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// subw
if(ir.value==SUB_DW_IR &amp;&amp; menu!=1){subw--;menu=1;sub_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// subw

if(ir.value==CENTER_UP_IR &amp;&amp; menu!=2){center++;menu=2;center_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// subw
if(ir.value==CENTER_DW_IR &amp;&amp; menu!=2){center--;menu=2;center_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// subw

if(ir.value==SURR_UP_IR &amp;&amp; menu!=3){surr++;menu=3;surr_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// surr
if(ir.value==SURR_DW_IR &amp;&amp; menu!=3){surr--;menu=3;surr_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// surr

if(ir.value==BALL_UP_IR &amp;&amp; menu!=4){ball++;menu=4;ball_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// ball
if(ir.value==BALL_DW_IR &amp;&amp; menu!=4){ball--;menu=4;ball_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// ball
}

  if(out==0){out5_1_led=1;out2_1_led=0;}
  if(out==1){out5_1_led=0;out2_1_led=1;}
  if(mut==0){mute_led=0;}else{mute_led=1;}
  if(input==0){aux_led=1;in5_1_led=0;}else{in5_1_led=1;aux_led=0;}
}

else{power_led=1;out5_1_led=0;out2_1_led=0;mute_led=0;aux_led=0;in5_1_led=0;a[0]=10;a[1]=10;a[2]=10;a[3]=10;an=5;dp_led=0;}


//// VOLUME ////////////////////////////////////////////////
if(menu==0){
  if(input==0){a[0]=2;a[1]=0;dp_led=1;}
  if(input==1){a[0]=5;a[1]=1;dp_led=1;}
   
   if(ir.value==VOL_UP_IR){vol++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;vol_func();audio_tda();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl();times=millis();w=1;w1=1;vol_func();audio_tda();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==VOL_DW_IR){vol--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;vol_func();audio_tda();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl();times=millis();w=1;w1=1;vol_func();audio_tda();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;  
 
  if (newPosition != oldPosition){oldPosition = newPosition;myEnc.write(0);enc_err();vol=vol+newPosition;
   newPosition=0;w=1;w1=1;times=millis();delay(20);vol_func();audio_tda();}
    a[2]=(79+vol)/10;
    a[3]=(79+vol)%10;
    //a[3]=out;
  }  
///////////////////////////////////////////////////////////

//// ATT SUBW ///////////////////////////////////////////////////////////
if(menu==1){
   if(ir.value==SUB_UP_IR){subw++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;sub_func();audio_tda();}// кнопка &gt; 
   if(ir.value==SUB_DW_IR){subw--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;sub_func();audio_tda();}// кнопка &lt;
       a[0]=11;
       a[1]=12;
       a[2]=subw/10%10;
       a[3]=subw%10;
  }

//// ATT CENTER ///////////////////////////////////////////////////////////
if(menu==2){
   if(ir.value==CENTER_UP_IR){center++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;center_func();audio_tda();}// кнопка &gt; 
   if(ir.value==CENTER_DW_IR){center--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;center_func();audio_tda();}// кнопка &lt;
       a[0]=13;
       a[1]=14;
       a[2]=center/10%10;
       a[3]=center%10;
  }  


//// ATT SURR ///////////////////////////////////////////////////////////
if(menu==3){
   if(ir.value==SURR_UP_IR){surr++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;surr_func();audio_tda();}// кнопка &gt; 
   if(ir.value==SURR_DW_IR){surr--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;surr_func();audio_tda();}// кнопка &lt; 
       a[0]=11;
       a[1]=15;
       a[2]=surr/10%10;
       a[3]=surr%10;
  } 

//// BALLANCE SURR ///////////////////////////////////////////////////////////
if(menu==4){
   if(ir.value==BALL_UP_IR){ball++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;ball_func();audio_tda();}// кнопка &gt; 
   if(ir.value==BALL_DW_IR){ball--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;ball_func();audio_tda();}// кнопка &lt; 
       a[0]=12;
       a[1]=16;
      if(ball&gt;=0) {a[2]=10;a[3]=abs(ball);}
        else{a[2]=17;a[3]=abs(ball);}
  }  

if(mut==1 &amp;&amp; power==0){a[0]=17;a[1]=17;a[2]=17;a[3]=17;}      

////////////////// EEPROM //////////////////////////////////////////////////////////////
 if(millis()-times&gt;5000 &amp;&amp; w1==1 &amp;&amp; power==0 &amp;&amp; mut==0){
     EEPROM.update(0,input);EEPROM.update(1,vol+79);EEPROM.update(2,center);EEPROM.update(3,subw);EEPROM.update(4,surr);EEPROM.update(5,ball+5);EEPROM.update(6,out);
     menu=0;w1=0;w=1;}       
 }// loop

void ball_func(){if(ball&lt;-5){ball=-5;}if(ball&gt;5){ball=5;}}
void surr_func(){if(surr&lt;0){surr=0;}if(surr&gt;10){surr=10;}}
void cl(){ir.value=0;delay(100);}
void center_func(){if(center&lt;0){center=0;}if(center&gt;10){center=10;}}
void vol_func(){if(vol&gt;=0){vol=0;}if(vol&lt;-79){vol=-79;}}
void sub_func(){if(subw&lt;0){subw=0;}if(subw&gt;10){subw=10;}}
void enc_err(){if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}}
void to_Timer(){newPosition = myEnc.read()/4;
  switch(i){
    case 0: segm = 10; segment();an=5;anod();delay(1);segm=a[0];ch(DP,dp_led); an=0; anod(); segment();break;
    case 1: segm = 10; segment();an=5;anod();delay(1);segm=a[1]; an=1; anod(); segment();break;
    case 2: segm = 10; segment();an=5;anod();delay(1);segm=a[2]; an=2; anod(); segment();break;
    case 3: segm = 10; segment();an=5;anod();delay(1);segm=a[3]; an=3; anod(); segment();break;
    case 4: segm = 10; segment();an=5;anod();delay(1);
       ch(SEG_C,mute_led);
       ch(SEG_B,power_led);
       ch(SEG_G,in5_1_led);
       ch(DP,aux_led);
       ch(SEG_A,out5_1_led);
       ch(SEG_F,out2_1_led);
    an=4; anod();break;
  }
   i++;if(i&gt;4){i=0;} 
   delay(1);
  } 
 
void segment(){
  switch(segm){                                                                 
             //  A          B           C            D          E          F         G  
    case 0: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,0);break;// 0 
    case 1: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);break;// 1
    case 2: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,0);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,0);ch(SEG_G,1);break;// 2
    case 3: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,1);break;// 3   
    case 4: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 4 
    case 5: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 5 
    case 6: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);break;// 6 
    case 7: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);break;// 7 
    case 8: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);break;// 8
    case 9: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 9 
   case 10: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,0);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);ch(DP,0);break;// пусто  
   case 11: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);ch(DP,0);break;// S
   case 12: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);ch(DP,0);break;// b
   case 13: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,0);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,0);ch(DP,0);break;// C
   case 14: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,1);ch(SEG_F,0);ch(SEG_G,1);ch(DP,0);break;// n
   case 15: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,0);ch(DP,0);break;// U
   case 16: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,0);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,0);ch(DP,0);break;// L 
   case 17: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,0);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,1);ch(DP,0);break;// - 
  }}
void anod(){
  switch(an){                                                             
    case 0:ch(GND1,0);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break;  
    case 1:ch(GND1,1);ch(GND2,0);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break; 
    case 2:ch(GND1,1);ch(GND2,1);ch(GND3,0);ch(GND4,1);ch(GND5,1);  break;  
    case 3:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,0);ch(GND5,1);  break;  
    case 4:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,0);  break; 
    case 5:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break;   
  }}
void ch(int pin, int logic){digitalWrite(pin,logic);}

void audio_pt(){
  pt.setInput(in_data); // входы 1...4 (0...3) или 6 моно (4)
  pt.setMute(0,0,0,0,0,0,0); // MUTE OFF для выходов (0,0,0,0,0,0,0); 
                              // MUTE ON  для выходов (1,1,1,1,1,1,1); 
                              // fl,  fr,  ct,  sub,  sl,  sr, все  выходы mute
  pt.setFeature(0,0); // дополнительные функции 0...3
                     // 0 - Enhanced Surround Function Active
                     // 1 - Enhanced Surround Function Disabled
                     // 0 - Mixed Channel (0dB) Setup
                     // 1 - Mixed Channel (+6dB) Setup  
}

void audio_tda(){// 0 макс громк, -79(79) мин громк 
if(mut==0){ 
  tda.setAtt(1,vol);// FL
  tda.setAtt(2,vol);// FR
 if(out==0){ tda.setAtt(3,vol+center);}else{tda.setAtt(3,-79);}// CT
  tda.setAtt(4,vol+subw);// SUB 
 if(out==0){ tda.setAtt(5,vol+surr+5+ball);}else{tda.setAtt(5,-79);}// SL
 if(out==0){ tda.setAtt(6,vol+surr+5-ball);}else{tda.setAtt(6,-79);}// SR
}
else{
  tda.setAtt(1,-79);// FL
  tda.setAtt(2,-79);// FR
  tda.setAtt(3,-79);// CT
  tda.setAtt(4,-79);// SUB 
  tda.setAtt(5,-79);// SL
  tda.setAtt(6,-79);// SR
  }
  }</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Fri, 09 Jun 2023 16:25:39 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=7970#p7970</guid>
		</item>
		<item>
			<title><![CDATA[Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=7969#p7969</link>
			<description><![CDATA[<p>Mute&nbsp; не работает. <br />при включении mute&nbsp; вот такая картинка<br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2023/06/c54a5639c6dd70eae783b1e1d783c929.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2023/06/c54a5639c6dd70eae783b1e1d783c929.jpg" /></span> <br />через секунд 3-4 вот такая картинка<br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2023/06/30de024763a587c6b14c74d27198a8da.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2023/06/30de024763a587c6b14c74d27198a8da.jpg" /></span><br />и все это дело мигает)</p>]]></description>
			<author><![CDATA[null@example.com (gidon19880518)]]></author>
			<pubDate>Fri, 09 Jun 2023 16:13:21 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=7969#p7969</guid>
		</item>
		<item>
			<title><![CDATA[Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=7968#p7968</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>mute должно работать</p></blockquote></div><div class="codebox"><pre><code>#define MUTE_OUT    0
#define GND5        13
#define SEG_G       2   // in51
#define DP          3   // in20
#define SEG_A       4   // out51
#define SEG_F       5   // out20
#define SEG_D       6
#define SEG_E       7  
#define SEG_B       8   // stby
#define SEG_C       9   // mute
#define ENC_CLK     10  // энкодер контакт 1
#define ENC_DT      11  // энкодер контакт 2
#define PIN_IR      12  // вход IR
#define PIN_IN      1  // кнопка INPUT

#define GND1        A0
#define GND2        A1
#define GND3        A2
#define GND4        A3
// SDA              A4 
// SCL              A5

#define VOL_UP_IR      0x33B8D22D
#define VOL_DW_IR      0x33B8F20D
#define CENTER_UP_IR   0x33B8D42B
#define CENTER_DW_IR   0x33B8906F
#define SURR_UP_IR     0x33B854AB
#define SURR_DW_IR     0x33B804FB
#define SUB_UP_IR      0x33B832CD
#define SUB_DW_IR      0x33B8C43B
#define BALL_UP_IR     0x33B8827D
#define BALL_DW_IR     0x33B8847B
#define ST_BY_IR       0x33B800FF
#define MUTE_IR        0x33B8649B
#define MODE_IR        0x33B8A45B
#define INPUT_IR       0x33B844BB

#include &lt;Wire.h&gt;
#include &lt;Encoder.h&gt;            // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
#include &lt;MsTimer2.h&gt;           // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip       
#include &lt;PT2323.h&gt;             // http://rcl-radio.ru/wp-content/uploads/2019/06/PT2323-2.zip
#include &lt;TDA7448.h&gt;            // http://rcl-radio.ru/wp-content/uploads/2019/08/TDA7448-1.zip
#include &lt;EEPROM.h&gt;
#include &lt;IRremote.h&gt;           // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip     
#include &lt;boarddefs.h&gt;          // входит в состав библиотеки IRremote
 
 PT2323 pt; 
 TDA7448 tda;
 IRrecv irrecv(PIN_IR); // указываем вывод модуля IR приемника
 Encoder myEnc(ENC_DT, ENC_CLK);// DT, CLK
 decode_results ir; 
 

 int an, segm,i,menu,input,in_data,vol;
 byte a[4];
 long oldPosition  = -999,newPosition,times; 
 bool mute_led=0,power_led=0,in5_1_led=0,aux_led=0,out5_1_led=0,out2_1_led=0;
 bool w,w1,dp_led,gr1,gr2,mut,power;
 int surr,center,subw,ball;
 bool out;

  
void setup(){ 
    Wire.begin();
    irrecv.enableIRIn();
   // Serial.begin(9600);
    MsTimer2::set(2, to_Timer);MsTimer2::start();
    pinMode(PIN_IN,INPUT); // кнопка INPUT
    pinMode(SEG_A,OUTPUT);
    pinMode(SEG_B,OUTPUT);
    pinMode(SEG_C,OUTPUT);
    pinMode(SEG_D,OUTPUT);
    pinMode(SEG_E,OUTPUT);
    pinMode(SEG_F,OUTPUT);
    pinMode(SEG_G,OUTPUT);
    pinMode(DP,OUTPUT);
    pinMode(GND1,OUTPUT);
    pinMode(GND2,OUTPUT);
    pinMode(GND3,OUTPUT);
    pinMode(GND4,OUTPUT);
    pinMode(GND5,OUTPUT);
    pinMode(MUTE_OUT,OUTPUT);
   // digitalWrite(MUTE_OUT,LOW);
    digitalWrite(MUTE_OUT,HIGH);
    if(EEPROM.read(100)!=0){for(int i=0;i&lt;101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении  
    input = EEPROM.read(0);vol = EEPROM.read(1)-79;center = EEPROM.read(2);subw = EEPROM.read(3);surr = EEPROM.read(4);ball = EEPROM.read(5)-5;out = EEPROM.read(6);
    if(out&gt;1){out=1;}
    if(input&gt;4){input=4;}
    if(input==0){in_data=0;}
    if(input==1){in_data=4;}
    delay(300);
    audio_pt();
    audio_tda();
}
 
void loop(){ 
/// IR ////////////////////////////////////////
   if ( irrecv.decode( &amp;ir )) { 
//   Serial.print(&quot;0x&quot;);Serial.println( ir.value,HEX);
   irrecv.resume();times=millis();w=1;w1=1;}
   if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта   
//// BUTTON + IR ////////////////////////////////////////////////
if(ir.value==ST_BY_IR &amp;&amp; power==1){power=0;menu=0;mut=0;audio_pt;cl();w=1;w1=1;times=millis();delay(250);}// out
if(ir.value==ST_BY_IR &amp;&amp; power==0){power=1;menu=100;mut=1;audio_pt;cl();w=1;w1=1;times=millis();delay(250);}// out

if(power==0){
  power_led=0;
  
if(ir.value==MUTE_IR &amp;&amp; mut==1){mut=0;menu=0;audio_pt;cl();w=1;w1=1;times=millis();delay(250);}// out
if(ir.value==MUTE_IR &amp;&amp; mut==0){mut=1;menu=100;audio_pt;cl();w=1;w1=1;times=millis();delay(250);}// out

if(mut==0){
if((digitalRead(PIN_IN)==LOW || ir.value==INPUT_IR) &amp;&amp; input==1){input=0;in_data=0;audio_tda;cl();w=1;w1=1;times=millis();delay(250);}// input
if((digitalRead(PIN_IN)==LOW || ir.value==INPUT_IR) &amp;&amp; input==0){input=1;in_data=4;audio_tda;cl();w=1;w1=1;times=millis();delay(250);}// input

if(ir.value==VOL_UP_IR &amp;&amp; menu!=0){vol++;menu=0;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;vol_func();audio_tda();}// кнопка &gt; 
if(ir.value==VOL_DW_IR &amp;&amp; menu!=0){vol--;menu=0;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;vol_func();audio_tda();}// кнопка &lt;

if(ir.value==MODE_IR &amp;&amp; out==1){out=0;audio_tda;cl();w=1;w1=1;times=millis();delay(250);}// out
if(ir.value==MODE_IR &amp;&amp; out==0){out=1;audio_tda;cl();w=1;w1=1;times=millis();delay(250);}// out

if(ir.value==SUB_UP_IR &amp;&amp; menu!=1){subw++;menu=1;sub_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// subw
if(ir.value==SUB_DW_IR &amp;&amp; menu!=1){subw--;menu=1;sub_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// subw

if(ir.value==CENTER_UP_IR &amp;&amp; menu!=2){center++;menu=2;center_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// subw
if(ir.value==CENTER_DW_IR &amp;&amp; menu!=2){center--;menu=2;center_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// subw

if(ir.value==SURR_UP_IR &amp;&amp; menu!=3){surr++;menu=3;surr_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// surr
if(ir.value==SURR_DW_IR &amp;&amp; menu!=3){surr--;menu=3;surr_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// surr

if(ir.value==BALL_UP_IR &amp;&amp; menu!=4){ball++;menu=4;ball_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// ball
if(ir.value==BALL_DW_IR &amp;&amp; menu!=4){ball--;menu=4;ball_func();audio_tda();cl();w=1;w1=1;times=millis();delay(250);}// ball
}

  if(out==0){out5_1_led=1;out2_1_led=0;}
  if(out==1){out5_1_led=0;out2_1_led=1;}
  if(mut==0){mute_led=0;}else{mute_led=1;}
  if(input==0){aux_led=1;in5_1_led=0;}else{in5_1_led=1;aux_led=0;}
}

else{power_led=1;out5_1_led=0;out2_1_led=0;mute_led=0;aux_led=0;in5_1_led=0;a[0]=10;a[1]=10;a[2]=10;a[3]=10;an=5;dp_led=0;}


//// VOLUME ////////////////////////////////////////////////
if(menu==0){
  if(input==0){a[0]=2;a[1]=0;dp_led=1;}
  if(input==1){a[0]=5;a[1]=1;dp_led=1;}
   
   if(ir.value==VOL_UP_IR){vol++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;vol_func();audio_tda();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl();times=millis();w=1;w1=1;vol_func();audio_tda();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==VOL_DW_IR){vol--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;vol_func();audio_tda();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl();times=millis();w=1;w1=1;vol_func();audio_tda();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;  
 
  if (newPosition != oldPosition){oldPosition = newPosition;myEnc.write(0);enc_err();vol=vol+newPosition;
   newPosition=0;w=1;w1=1;times=millis();delay(20);vol_func();audio_tda();}
    a[2]=(79+vol)/10;
    a[3]=(79+vol)%10;
    //a[3]=in_data;
  }  
///////////////////////////////////////////////////////////

//// ATT SUBW ///////////////////////////////////////////////////////////
if(menu==1){
   if(ir.value==SUB_UP_IR){subw++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;sub_func();audio_tda();}// кнопка &gt; 
   if(ir.value==SUB_DW_IR){subw--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;sub_func();audio_tda();}// кнопка &lt;
       a[0]=11;
       a[1]=12;
       a[2]=subw/10%10;
       a[3]=subw%10;
  }

//// ATT CENTER ///////////////////////////////////////////////////////////
if(menu==2){
   if(ir.value==CENTER_UP_IR){center++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;center_func();audio_tda();}// кнопка &gt; 
   if(ir.value==CENTER_DW_IR){center--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;center_func();audio_tda();}// кнопка &lt;
       a[0]=13;
       a[1]=14;
       a[2]=center/10%10;
       a[3]=center%10;
  }  


//// ATT SURR ///////////////////////////////////////////////////////////
if(menu==3){
   if(ir.value==SURR_UP_IR){surr++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;surr_func();audio_tda();}// кнопка &gt; 
   if(ir.value==SURR_DW_IR){surr--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;surr_func();audio_tda();}// кнопка &lt; 
       a[0]=11;
       a[1]=15;
       a[2]=surr/10%10;
       a[3]=surr%10;
  } 

//// BALLANCE SURR ///////////////////////////////////////////////////////////
if(menu==4){
   if(ir.value==BALL_UP_IR){ball++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;ball_func();audio_tda();}// кнопка &gt; 
   if(ir.value==BALL_DW_IR){ball--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;ball_func();audio_tda();}// кнопка &lt; 
       a[0]=12;
       a[1]=16;
      if(ball&gt;=0) {a[2]=10;a[3]=abs(ball);}
        else{a[2]=17;a[3]=abs(ball);}
  }  

if(mut==1 &amp;&amp; power==0){a[0]=17;a[1]=17;a[2]=17;a[3]=17;}      
 

////////////////// EEPROM //////////////////////////////////////////////////////////////
 if(millis()-times&gt;5000 &amp;&amp; w1==1 &amp;&amp; power==0){
     EEPROM.update(0,input);EEPROM.update(1,vol+79);EEPROM.update(2,center);EEPROM.update(3,subw);EEPROM.update(4,surr);EEPROM.update(5,ball+5);EEPROM.update(6,out);
     menu=0;w1=0;w=1;}       
 }// loop

void ball_func(){if(ball&lt;-5){ball=-5;}if(ball&gt;5){ball=5;}}
void surr_func(){if(surr&lt;0){surr=0;}if(surr&gt;10){surr=10;}}
void cl(){ir.value=0;delay(100);}
void center_func(){if(center&lt;0){center=0;}if(center&gt;10){center=10;}}
void vol_func(){if(vol&gt;=0){vol=0;}if(vol&lt;-79){vol=-79;}}
void sub_func(){if(subw&lt;0){subw=0;}if(subw&gt;10){subw=10;}}
void enc_err(){if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}}
void to_Timer(){newPosition = myEnc.read()/4;
  switch(i){
    case 0: segm = 10; segment();an=5;anod();delay(1);segm=a[0];ch(DP,dp_led); an=0; anod(); segment();break;
    case 1: segm = 10; segment();an=5;anod();delay(1);segm=a[1]; an=1; anod(); segment();break;
    case 2: segm = 10; segment();an=5;anod();delay(1);segm=a[2]; an=2; anod(); segment();break;
    case 3: segm = 10; segment();an=5;anod();delay(1);segm=a[3]; an=3; anod(); segment();break;
    case 4: segm = 10; segment();an=5;anod();delay(1);
       ch(SEG_C,mute_led);
       ch(SEG_B,power_led);
       ch(SEG_G,in5_1_led);
       ch(DP,aux_led);
       ch(SEG_A,out5_1_led);
       ch(SEG_F,out2_1_led);
    an=4; anod();break;
  }
   i++;if(i&gt;4){i=0;} 
   delay(1);
  } 
 
void segment(){
  switch(segm){                                                                 
             //  A          B           C            D          E          F         G  
    case 0: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,0);break;// 0 
    case 1: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);break;// 1
    case 2: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,0);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,0);ch(SEG_G,1);break;// 2
    case 3: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,1);break;// 3   
    case 4: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 4 
    case 5: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 5 
    case 6: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);break;// 6 
    case 7: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);break;// 7 
    case 8: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);break;// 8
    case 9: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 9 
   case 10: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,0);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);ch(DP,0);break;// пусто  
   case 11: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);ch(DP,0);break;// S
   case 12: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);ch(DP,0);break;// b
   case 13: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,0);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,0);ch(DP,0);break;// C
   case 14: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,1);ch(SEG_F,0);ch(SEG_G,1);ch(DP,0);break;// n
   case 15: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,0);ch(DP,0);break;// U
   case 16: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,0);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,0);ch(DP,0);break;// L 
   case 17: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,0);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,1);ch(DP,0);break;// - 
  }}
void anod(){
  switch(an){                                                             
    case 0:ch(GND1,0);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break;  
    case 1:ch(GND1,1);ch(GND2,0);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break; 
    case 2:ch(GND1,1);ch(GND2,1);ch(GND3,0);ch(GND4,1);ch(GND5,1);  break;  
    case 3:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,0);ch(GND5,1);  break;  
    case 4:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,0);  break; 
    case 5:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break;   
  }}
void ch(int pin, int logic){digitalWrite(pin,logic);}

void audio_pt(){
  pt.setInput(in_data); // входы 1...4 (0...3) или 6 моно (4)
  pt.setMute(0,0,0,0,0,0,0); // MUTE OFF для выходов (0,0,0,0,0,0,0); 
                              // MUTE ON  для выходов (1,1,1,1,1,1,1); 
                              // fl,  fr,  ct,  sub,  sl,  sr, все  выходы mute
  pt.setFeature(0,0); // дополнительные функции 0...3
                     // 0 - Enhanced Surround Function Active
                     // 1 - Enhanced Surround Function Disabled
                     // 0 - Mixed Channel (0dB) Setup
                     // 1 - Mixed Channel (+6dB) Setup  
}

void audio_tda(){// 0 макс громк, -79(79) мин громк 
if(mut==0){  
  tda.setAtt(1,vol);// FL
  tda.setAtt(2,vol);// FR
 if(out==0){ tda.setAtt(3,vol+center);}else{tda.setAtt(3,-79);}// CT
  tda.setAtt(4,vol+subw);// SUB 
 if(out==0){ tda.setAtt(5,vol+surr+5+ball);}else{tda.setAtt(5,-79);}// SL
 if(out==0){ tda.setAtt(6,vol+surr+5-ball);}else{tda.setAtt(6,-79);}// SR
}
else{
  tda.setAtt(1,-79);// FL
  tda.setAtt(2,-79);// FR
  tda.setAtt(3,-79);// CT
  tda.setAtt(4,-79);// SUB 
  tda.setAtt(5,-79);// SL
  tda.setAtt(6,-79);// SR
  }
  }</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Fri, 09 Jun 2023 16:06:39 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=7968#p7968</guid>
		</item>
		<item>
			<title><![CDATA[Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=7967#p7967</link>
			<description><![CDATA[<p>IN2.0 не работает. По схеме IN2.0 это 1 и 28 вывод PT2323?&nbsp; &nbsp; да , проверил дата шит, и прозвонил на плате.<br />MODE так же не работает до момента как нажать CENTER, SURR, SURR, BALL на пульте. все верно</p>]]></description>
			<author><![CDATA[null@example.com (gidon19880518)]]></author>
			<pubDate>Fri, 09 Jun 2023 16:05:06 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=7967#p7967</guid>
		</item>
		<item>
			<title><![CDATA[Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=7966#p7966</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>2.0 пропал. ну и mode так же ведет себя</p></blockquote></div><p>IN2.0 не работает. По схеме IN2.0 это 1 и 28 вывод PT2323?</p><p>MODE так же не работает до момента как нажать CENTER, SURR, SURR, BALL на пульте.</p><p>Должен работать я увидел ошибку.</p>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Fri, 09 Jun 2023 15:57:43 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=7966#p7966</guid>
		</item>
		<item>
			<title><![CDATA[Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=7965#p7965</link>
			<description><![CDATA[<p>5.1 вход и выход все нормально, 2.0 пропал. ну и mode так же ведет себя</p>]]></description>
			<author><![CDATA[null@example.com (gidon19880518)]]></author>
			<pubDate>Fri, 09 Jun 2023 15:52:33 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=7965#p7965</guid>
		</item>
		<item>
			<title><![CDATA[Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=7964#p7964</link>
			<description><![CDATA[<p>Входы переключаются? Звук есть при входе IN5.1 и IN2.0?</p><p>Это точно работает как надо?</p>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Fri, 09 Jun 2023 15:46:41 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=7964#p7964</guid>
		</item>
	</channel>
</rss>
