<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[forum.rcl-radio.ru &mdash; TDA7439 + OLED_1.3+IR+ENCODER]]></title>
	<link rel="self" href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=592&amp;type=atom" />
	<updated>2026-03-12T18:22:12Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.rcl-radio.ru/viewtopic.php?id=592</id>
		<entry>
			<title type="html"><![CDATA[Re: TDA7439 + OLED_1.3+IR+ENCODER]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=12599#p12599" />
			<content type="html"><![CDATA[<p>Александр здравствуйте, можно убрать из программы кнопку POWER OFF/ON. Спасибо</p>]]></content>
			<author>
				<name><![CDATA[romadzu]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2199</uri>
			</author>
			<updated>2026-03-12T18:22:12Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=12599#p12599</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA7439 + OLED_1.3+IR+ENCODER]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=12590#p12590" />
			<content type="html"><![CDATA[<p>Благодарю Вас за проделанную работу!</p>]]></content>
			<author>
				<name><![CDATA[vertalin49]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=4185</uri>
			</author>
			<updated>2026-03-04T20:30:54Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=12590#p12590</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA7439 + OLED_1.3+IR+ENCODER]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=12575#p12575" />
			<content type="html"><![CDATA[<p>Я сделал так: <br />Encoder myEnc(ENC_CLK, ENC_DT)&nbsp; (было Encoder myEnc(ENC_DT, ENC_CLK)</p>]]></content>
			<author>
				<name><![CDATA[RIGOR81]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=4194</uri>
			</author>
			<updated>2026-03-01T18:46:20Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=12575#p12575</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA7439 + OLED_1.3+IR+ENCODER]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=12574#p12574" />
			<content type="html"><![CDATA[<p>#define ENC_DT&nbsp; &nbsp; &nbsp; &nbsp;8<br />#define ENC_CLK&nbsp; &nbsp; &nbsp; 9<br />#define ENC_SW&nbsp; &nbsp; &nbsp; &nbsp;10<br />#define IR&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;12</p><p>заменить на</p><p>#define ENC_DT&nbsp; &nbsp; &nbsp; &nbsp;9<br />#define ENC_CLK&nbsp; &nbsp; &nbsp; 8<br />#define ENC_SW&nbsp; &nbsp; &nbsp; &nbsp;10<br />#define IR&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;12</p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2026-03-01T17:42:22Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=12574#p12574</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA7439 + OLED_1.3+IR+ENCODER]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=12573#p12573" />
			<content type="html"><![CDATA[<p>Всем спасибо, разобрался сам как сделать.</p>]]></content>
			<author>
				<name><![CDATA[RIGOR81]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=4194</uri>
			</author>
			<updated>2026-03-01T16:20:00Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=12573#p12573</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA7439 + OLED_1.3+IR+ENCODER]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=12572#p12572" />
			<content type="html"><![CDATA[<p>Подскажите еще один вопрос. Энкодер при вращении в лево, идет увиличение, в право уменьшение во всех режимах. Как это исправить?</p>]]></content>
			<author>
				<name><![CDATA[RIGOR81]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=4194</uri>
			</author>
			<updated>2026-03-01T15:59:46Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=12572#p12572</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA7439 + OLED_1.3+IR+ENCODER]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=12567#p12567" />
			<content type="html"><![CDATA[<p>Огромное спасибо, заработало.</p>]]></content>
			<author>
				<name><![CDATA[RIGOR81]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=4194</uri>
			</author>
			<updated>2026-03-01T07:35:26Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=12567#p12567</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA7439 + OLED_1.3+IR+ENCODER]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=12566#p12566" />
			<content type="html"><![CDATA[<p>driver 1 а не 16</p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2026-02-28T19:51:08Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=12566#p12566</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA7439 + OLED_1.3+IR+ENCODER]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=12565#p12565" />
			<content type="html"><![CDATA[<p>Ни чего не изменилось. Возможно я неправильно настроил ардуино ИДЕ<span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2026/02/a22432adebe86760578ed9516a816bd8.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2026/02/a22432adebe86760578ed9516a816bd8.jpg" /></span> </p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2026/02/88b51b9ea01aa69b89cde6229e33fbce.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2026/02/88b51b9ea01aa69b89cde6229e33fbce.jpg" /></span> </p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2026/02/39d61ff02dd57e6ee4cc87e2fb71bcdd.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2026/02/39d61ff02dd57e6ee4cc87e2fb71bcdd.jpg" /></span></p>]]></content>
			<author>
				<name><![CDATA[RIGOR81]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=4194</uri>
			</author>
			<updated>2026-02-28T18:05:10Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=12565#p12565</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA7439 + OLED_1.3+IR+ENCODER]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=12564#p12564" />
			<content type="html"><![CDATA[<p>Не вижу причин почему не работает</p><p>Попробуйте очистить память принудительно.</p><p>замените <br /> if(EEPROM.read(100)!=0){for(int i=0;i&lt;101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении&nbsp; </p><p>на</p><p>for(int i=0;i&lt;101;i++){EEPROM.update(i,0);}</p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2026-02-28T15:58:50Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=12564#p12564</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA7439 + OLED_1.3+IR+ENCODER]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=12563#p12563" />
			<content type="html"><![CDATA[<p>Скетч из примеров в Арудуину ИДЕ. Библиотека U8glib.</p><p>Вот с этими строками работало<br />//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);&nbsp; &nbsp; // I2C / TWI <br />//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST);&nbsp; &nbsp; // Dev 0, Fast I2C / TWI<br />//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK);&nbsp; &nbsp; // Display which does not send ACK</p><p>Экран менял.&nbsp; LGT8F328P вначале была зеленая платка, поменял на фиолетовую. Ничего непоменялось.</p>]]></content>
			<author>
				<name><![CDATA[RIGOR81]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=4194</uri>
			</author>
			<updated>2026-02-28T15:29:11Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=12563#p12563</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA7439 + OLED_1.3+IR+ENCODER]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=12562#p12562" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Экран проверял,&nbsp; из примеров HelloWorld выводится</p></blockquote></div><p>какую библиотеку и скетч использовали?</p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2026-02-28T15:22:15Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=12562#p12562</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA7439 + OLED_1.3+IR+ENCODER]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=12561#p12561" />
			<content type="html"><![CDATA[<p>Добрый день. Подскажите&nbsp; в чем проблема. Собрал схему (пока&nbsp; еще без ИК модуля). Заливаю скетч, на экране белые точки. Экран проверял,&nbsp; из примеров HelloWorld выводится. Сканером I2C видно адреса TDA7439 и экрана.</p>]]></content>
			<author>
				<name><![CDATA[RIGOR81]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=4194</uri>
			</author>
			<updated>2026-02-28T15:12:42Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=12561#p12561</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA7439 + OLED_1.3+IR+ENCODER]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=12553#p12553" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>#define ENC_DT       8
#define ENC_CLK      9
#define ENC_SW       10
#define IR           12

#define MENU      0x33B820DF // button encoder
#define UP        0x33B810EF // &gt;&gt;&gt;
#define DW        0x33B8E01F // &lt;&lt;&lt;
#define INPUT_IR  0x33B88877 // IN
#define POWER_IR  0x33B800FF // POWER
#define MUTE_IR   0x33B811FF // MUTE

#define IN            2 
#define POWER         6
#define POWER_OUT_PIN 13
#define MUTE          3


#define IN1_OUT   A0
#define IN2_OUT   A1
#define IN3_OUT   A2
#define IN4_OUT   A3

#include &lt;Wire.h&gt; 
#include &lt;U8glib.h&gt;            // https://github.com/olikraus/u8glib/
#include &lt;MsTimer2.h&gt;          // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip 
#include &lt;TDA7439.h&gt;
#include &lt;Encoder.h&gt;           // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip 
#include &lt;EEPROM.h&gt;
#include &lt;boarddefs.h&gt;         // входит в состав библиотеки IRremote
#include &lt;IRremote.h&gt;          // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip
 
TDA7439 tda;
Encoder myEnc(ENC_DT, ENC_CLK);
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST);
IRrecv irrecv(IR); 
decode_results ir; 

long oldPosition  = -999,newPosition, times;
int vol_reg,balans,treb_reg,bass_reg,mid_reg,in_reg,gain0,gain1,gain2,gain3,gain4,menu,vol_old;
bool gr1,gr2,w=1,w1,www,power,power_off=1,mute;

void setup() {
  Wire.begin();Serial.begin(9600);
  irrecv.enableIRIn();
  pinMode(ENC_SW,INPUT);
  pinMode(IN,INPUT_PULLUP);
  pinMode(MUTE,INPUT_PULLUP);
  pinMode(POWER,INPUT_PULLUP); 
  pinMode(POWER_OUT_PIN,OUTPUT);
  pinMode(IN1_OUT,OUTPUT);
  pinMode(IN2_OUT,OUTPUT);
  pinMode(IN3_OUT,OUTPUT);
  pinMode(IN4_OUT,OUTPUT);
  digitalWrite(POWER_OUT_PIN,LOW);
  if(EEPROM.read(100)!=0){for(int i=0;i&lt;101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении  
  MsTimer2::set(1, to_Timer);MsTimer2::start();
  vol_reg = EEPROM.read(0);treb_reg = EEPROM.read(1)-7;mid_reg = EEPROM.read(2)-7;bass_reg = EEPROM.read(3)-7;
  in_reg = EEPROM.read(4);gain1 = EEPROM.read(5);gain2 = EEPROM.read(6);gain3 = EEPROM.read(7);gain4 = EEPROM.read(8);balans = EEPROM.read(9)-8;
  switch(in_reg){
    case 1: gain0=gain1;break;
    case 2: gain0=gain2;break;
    case 3: gain0=gain3;break;
    case 4: gain0=gain4;break;
    }
  audio();  
}

void loop() {
  if(power==0){
   if(in_reg==1){digitalWrite(IN1_OUT,HIGH);}else{digitalWrite(IN1_OUT,LOW);}
   if(in_reg==2){digitalWrite(IN2_OUT,HIGH);}else{digitalWrite(IN2_OUT,LOW);}
   if(in_reg==3){digitalWrite(IN3_OUT,HIGH);}else{digitalWrite(IN3_OUT,LOW);}
   if(in_reg==4){digitalWrite(IN4_OUT,HIGH);}else{digitalWrite(IN4_OUT,LOW);}
  }
   else{digitalWrite(IN1_OUT,LOW);digitalWrite(IN2_OUT,LOW);digitalWrite(IN3_OUT,LOW);digitalWrite(IN4_OUT,LOW);}
   
  // IR ////////////////////////////////////////
 if ( irrecv.decode( &amp;ir )) {Serial.print(&quot;0x&quot;);Serial.println( ir.value,HEX);irrecv.resume();}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
 if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта  

// BUTTON ///////////////////////////////////////////////////
 if((digitalRead(POWER)==LOW||ir.value==POWER_IR||power_off==1)&amp;&amp;power==0&amp;&amp;mute==0){power_off=0;power=1;menu=100;cl();vol_old=vol_reg;vol_reg=0;audio();
  u8g.firstPage();do {u8g.setFont(u8g_font_profont12r);u8g.drawStr(40,30,&quot;POWER OFF&quot;);} while( u8g.nextPage() );
  digitalWrite(POWER_OUT_PIN,HIGH);delay(1000);digitalWrite(POWER_OUT_PIN,LOW); 
  u8g.firstPage();do {} while( u8g.nextPage() );}
  
 if((digitalRead(POWER)==LOW||ir.value==POWER_IR)&amp;&amp;power==1){power=0;menu=0;vol_reg=vol_old;times=millis();w=1;w1=1;
  u8g.firstPage();do {u8g.drawStr(42,30,&quot;POWER ON&quot;);} while( u8g.nextPage() );
  digitalWrite(POWER_OUT_PIN,HIGH);delay(1000);digitalWrite(POWER_OUT_PIN,LOW); 
  audio();}


if(power==0){
 if(digitalRead(ENC_SW)==LOW||ir.value==MENU){menu++;cl();if(menu&gt;4){menu=0;}times=millis();w=1;w1=1;delay(200);}
 if(digitalRead(IN)==LOW||ir.value==INPUT_IR){menu=10;cl();in_reg++;times=millis();w=1;w1=1;www=1;if(in_reg&gt;4){in_reg=1;};delay(200);}
 
 if((digitalRead(MUTE)==LOW||ir.value==MUTE_IR)&amp;&amp;mute==0){mute=1;menu=100;cl();vol_old=vol_reg;vol_reg=0;audio();
     u8g.firstPage();do {u8g.setFont(u8g_font_profont12r);u8g.drawStr(53,30,&quot;MUTE&quot;);} while( u8g.nextPage() );}
 if((digitalRead(MUTE)==LOW||ir.value==MUTE_IR)&amp;&amp;mute==1){mute=0;times=millis();w=1;w1=1;menu=0;cl();vol_reg=vol_old;audio();}
}
//////// VOLUME //////////////////////////////////////////////////////////////////////////////////////////////////////////////  
  if(menu==0){
   if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   vol_reg=vol_reg+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;vol_func();audio();}
 
   if(ir.value==UP){vol_reg++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;vol_func();audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){vol_reg++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;vol_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==DW){vol_reg--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;vol_func();audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){vol_reg--;gr1=0;cl();times=millis();w=1;w1=1;vol_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
  if(w==1){w=0;
  u8g.firstPage();  
   do {
  u8g.setFont(u8g_font_profont12r);u8g.drawStr(0,8,&quot;VOLUME&quot;);u8g.drawStr(0,18,&quot;IN&quot;);
  u8g.setPrintPos(20, 18);u8g.print(in_reg);u8g.drawStr(0,28,&quot;GAIN&quot;);u8g.setPrintPos(30, 28);u8g.print(gain0);
  u8g.drawLine(0, 32, 128, 32);
  u8g.drawStr(0,44,&quot;TREBLE&quot;);u8g.setPrintPos(80, 44);u8g.print(treb_reg*2);u8g.drawStr(95,44,&quot;dB&quot;);
  u8g.drawStr(0,54,&quot;MIDDLE&quot;);u8g.setPrintPos(80, 54);u8g.print(mid_reg*2);u8g.drawStr(95,54,&quot;dB&quot;);
  u8g.drawStr(0,64,&quot;BASS&quot;);u8g.setPrintPos(80, 64);u8g.print(bass_reg*2);u8g.drawStr(95,64,&quot;dB&quot;);
  u8g.setFont(u8g_font_profont29r); u8g.setPrintPos(78, 22);u8g.print(vol_reg);
   } while( u8g.nextPage() );
  }}
/////////////////////////////////////////////////////////////////

//////// TRABLE //////////////////////////////////////////////////////////////////////////////////////////////////////////////  
  if(menu==1){
   if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   treb_reg=treb_reg+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;treb_func();audio();}
 
   if(ir.value==UP){treb_reg++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;treb_func();audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){treb_reg++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;treb_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==DW){treb_reg--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;treb_func();audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){treb_reg--;gr1=0;cl();times=millis();w=1;w1=1;treb_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
   
   if(w==1){w=0;
  u8g.firstPage();  
   do {
  u8g.setFont(u8g_font_profont29r); u8g.setPrintPos(78, 22);u8g.print(treb_reg*2);
  u8g.drawLine(0, 32, 128, 32);
  u8g.setFont(u8g_font_profont12r);u8g.drawStr(0,8,&quot;TREBLE&quot;);u8g.drawStr(0,44,&quot;MIDDLE&quot;);u8g.setPrintPos(80, 44);u8g.print(mid_reg*2);u8g.drawStr(95,44,&quot;dB&quot;);
  u8g.drawStr(0,54,&quot;BASS&quot;);u8g.setPrintPos(80, 54);u8g.print(bass_reg*2);u8g.drawStr(95,54,&quot;dB&quot;);
  u8g.drawStr(0,64,&quot;BALANCE&quot;);u8g.setPrintPos(80, 64);u8g.print(balans);u8g.drawStr(95,64,&quot;dB&quot;);
   } while( u8g.nextPage() );
  }}
/////////////////////////////////////////////////////////////////

//////// MIDDLE //////////////////////////////////////////////////////////////////////////////////////////////////////////////  
  if(menu==2){
   if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   mid_reg=mid_reg+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;mid_func();audio();}
 
   if(ir.value==UP){mid_reg++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;mid_func();audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){mid_reg++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;mid_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==DW){mid_reg--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;mid_func();audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){mid_reg--;gr1=0;cl();times=millis();w=1;w1=1;mid_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
   
   if(w==1){w=0;
  u8g.firstPage();  
   do {
  u8g.setFont(u8g_font_profont29r); u8g.setPrintPos(78, 22);u8g.print(mid_reg*2);
  u8g.drawLine(0, 32, 128, 32);
  u8g.setFont(u8g_font_profont12r);u8g.drawStr(0,8,&quot;MIDDLE&quot;);u8g.drawStr(0,44,&quot;BASS&quot;);u8g.setPrintPos(80, 44);u8g.print(bass_reg*2);u8g.drawStr(95,44,&quot;dB&quot;);
  u8g.drawStr(0,54,&quot;BALANCE&quot;);u8g.setPrintPos(80, 54);u8g.print(balans);u8g.drawStr(95,54,&quot;dB&quot;);
  u8g.drawStr(0,64,&quot;VOLUME&quot;);u8g.setPrintPos(80, 64);u8g.print(vol_reg);u8g.drawStr(95,64,&quot;dB&quot;);
   } while( u8g.nextPage() );
  }}
/////////////////////////////////////////////////////////////////

//////// BASS //////////////////////////////////////////////////////////////////////////////////////////////////////////////  
  if(menu==3){
   if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   bass_reg=bass_reg+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;bass_func();audio();}
 
   if(ir.value==UP){bass_reg++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;bass_func();audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){bass_reg++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;bass_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==DW){bass_reg--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;bass_func();audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){bass_reg--;gr1=0;cl();times=millis();w=1;w1=1;bass_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
   
 if(w==1){w=0;
  u8g.firstPage();  
   do {
  u8g.setFont(u8g_font_profont29r); u8g.setPrintPos(78, 22);u8g.print(bass_reg*2);
  u8g.drawLine(0, 32, 128, 32);
  u8g.setFont(u8g_font_profont12r);u8g.drawStr(0,8,&quot;BASS&quot;);
  u8g.drawStr(0,44,&quot;BALANCE&quot;);u8g.setPrintPos(80, 44);u8g.print(balans);u8g.drawStr(95,44,&quot;dB&quot;);
  u8g.drawStr(0,54,&quot;VOLUME&quot;);u8g.setPrintPos(80, 54);u8g.print(vol_reg);u8g.drawStr(95,54,&quot;dB&quot;);
  u8g.drawStr(0,64,&quot;TREBLE&quot;);u8g.setPrintPos(80, 64);u8g.print(treb_reg*2);u8g.drawStr(95,64,&quot;dB&quot;);
   } while( u8g.nextPage() );
  }}
/////////////////////////////////////////////////////////////////

//////// BALANCE //////////////////////////////////////////////////////////////////////////////////////////////////////////////  
  if(menu==4){
  if (newPosition != oldPosition){oldPosition = newPosition;balans=balans+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;ball_func();audio();}
 
   if(ir.value==UP){balans++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;ball_func();audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){balans++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;ball_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==DW){balans--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;ball_func();audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){balans--;gr1=0;cl();times=millis();w=1;w1=1;ball_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
  if(w==1){w=0;
  u8g.firstPage();  
   do {
  u8g.setFont(u8g_font_profont12r);u8g.drawStr(0,8,&quot;BALANCE&quot;);u8g.setFont(u8g_font_profont29r); u8g.setPrintPos(78, 22);u8g.print(abs(balans));
  u8g.setFont(u8g_font_profont12r);
  if(balans&lt;=0){u8g.drawStr(50,20,&quot;LCH&quot;);}
  if(balans&gt;=0){u8g.drawStr(105,20,&quot;RCH&quot;);}
  u8g.drawLine(0, 32, 128, 32);
  u8g.drawStr(0,44,&quot;VOLUME&quot;);u8g.setPrintPos(80, 44);u8g.print(vol_reg);u8g.drawStr(95,44,&quot;dB&quot;);
  u8g.drawStr(0,54,&quot;TREBLE&quot;);u8g.setPrintPos(80, 54);u8g.print(mid_reg*2);u8g.drawStr(95,54,&quot;dB&quot;);
  u8g.drawStr(0,64,&quot;MIDDLE&quot;);u8g.setPrintPos(80, 64);u8g.print(treb_reg*2);u8g.drawStr(95,64,&quot;dB&quot;);
  } while( u8g.nextPage() );
  }}
//////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////// INPUT GAIN ///////////////////////////////////////////////////////////////////
 if(menu==10){
  switch(in_reg){
    case 1: gain0=gain1;break;
    case 2: gain0=gain2;break;
    case 3: gain0=gain3;break;
    case 4: gain0=gain4;break;
    }
  if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   gain0=gain0+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;www=1;gain_func();}

   if(ir.value==UP){gain0++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;gain_func();www=1;}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){gain0++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;gain_func();www=1;}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==DW){gain0--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;gain_func();www=1;}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){gain0--;gr1=0;cl();times=millis();w=1;w1=1;gain_func();www=1;}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;

  switch(in_reg){
    case 1: gain1=gain0;break;
    case 2: gain2=gain0;break;
    case 3: gain3=gain0;break;
    case 4: gain4=gain0;break;
    } 
  if(www==1){audio();www=0;}
  if(w==1){w=0;
  u8g.firstPage();  
   do {
  u8g.setFont(u8g_font_profont29r); u8g.setPrintPos(78, 22);u8g.print(in_reg);  
  u8g.drawLine(0, 32, 128, 32);
  u8g.setFont(u8g_font_profont12r);u8g.drawStr(0,8,&quot;INPUT&quot;);u8g.drawStr(0,44,&quot;GAIN&quot;);
  u8g.setFont(u8g_font_profont29r); u8g.setPrintPos(78, 60);u8g.print(gain0);
    } while( u8g.nextPage() );
  }}


if(millis()-times&gt;5000 &amp;&amp; w1==1 &amp;&amp; power==0 &amp;&amp; mute==0){
     EEPROM.update(0,vol_reg);EEPROM.update(1,treb_reg+7);EEPROM.update(2,mid_reg+7);EEPROM.update(3,bass_reg+7);
     EEPROM.update(4,in_reg);EEPROM.update(5,gain1);EEPROM.update(6,gain2);EEPROM.update(7,gain3);EEPROM.update(8,gain4);EEPROM.update(9,balans+8);
     menu=0;w1=0;w=1;myEnc.write(0);}

}


void to_Timer(){newPosition = myEnc.read()/4;}
void cl(){ir.value=0;delay(200);}
void vol_func(){if(vol_reg&lt;0){vol_reg=0;}if(vol_reg&gt;48){vol_reg=48;}}
void treb_func(){if(treb_reg&lt;-7){treb_reg=-7;}if(treb_reg&gt;7){treb_reg=7;}}
void mid_func(){if(mid_reg&lt;-7){mid_reg=-7;}if(mid_reg&gt;7){mid_reg=7;}}
void bass_func(){if(bass_reg&lt;-7){bass_reg=-7;}if(bass_reg&gt;7){bass_reg=7;}}
void gain_func(){if(gain0&gt;15){gain0=15;}if(gain0&lt;0){gain0=0;}}
void ball_func(){if(balans&gt;8){balans=8;}if(balans&lt;-8){balans=-8;}}
void audio(){
  tda.setInput(in_reg); // 1 to 4 // номер канала
  tda.inputGain(gain0); // 0 to 15 // усиление 
  tda.setVolume(vol_reg); // 0 to 48 ( 0 is mute) // громкость
  tda.setSnd(bass_reg, 1); //-7 to +7 , 1 - Bass | 2 - Mids | 3 - Trebble
  tda.setSnd(mid_reg, 2);
  tda.setSnd(treb_reg, 3); 
  tda.spkAtt(8 + balans ,8 - balans); // баланс R L от 0 to 79 (db) 
 }</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2026-02-26T01:16:47Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=12553#p12553</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA7439 + OLED_1.3+IR+ENCODER]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=12550#p12550" />
			<content type="html"><![CDATA[<p>Использую этот скетч от 2023-11-23 20:03:32</p>]]></content>
			<author>
				<name><![CDATA[vertalin49]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=4185</uri>
			</author>
			<updated>2026-02-25T16:55:08Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=12550#p12550</id>
		</entry>
</feed>
