<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[forum.rcl-radio.ru &mdash; TDA8425 + OLED 128x32]]></title>
	<link rel="self" href="https://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=722&amp;type=atom" />
	<updated>2026-09-13T18:13:31Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.rcl-radio.ru/viewtopic.php?id=722</id>
		<entry>
			<title type="html"><![CDATA[Re: TDA8425 + OLED 128x32]]></title>
			<link rel="alternate" href="https://forum.rcl-radio.ru/viewtopic.php?pid=12745#p12745" />
			<content type="html"><![CDATA[<p>Поправил скетч для кнопок из сообщения номер 38, выровнял все надписи по середине для дисплея 1.3. Выход на усилитель&nbsp; D13 изменил на логическую 1 , так же D11 включается при переходе на блютус. Изменил надписи входов.&nbsp; &nbsp;Увеличил надписи в меню VOLUME BASS TREBLE BALANCE ,по мне так, очень мелкие плохо видно. А может старенький уже просто))). </p><p><span class="postimg"><img src="https://forum.rcl-radio.ru/uploads/images/2026/09/d2a3ede8b1110e666388f74add17cba9.jpg" alt="https://forum.rcl-radio.ru/uploads/images/2026/09/d2a3ede8b1110e666388f74add17cba9.jpg" /></span> </p><br /><div class="codebox"><pre><code>// ИК датчик
#define IR           12

// кнопки управления
#define IN_BUTTON       2
#define POWER_BUTTON    3
#define MUTE_BUTTON     4

#define UP_BUTTON        5
#define DW_BUTTON        6
#define LEFT_BUTTON      7
#define RIGHT_BUTTON     8

// выход управления standby
#define STANDBY_OUT     13

// выход управления input
#define IN_OUT     11

// коды кнопок ИК пульта
#define MENU_UP    0xFF906F // button encoder
#define MENU_DW    0xFFA857 // button encoder
#define UP         0xFFC23D // &gt;&gt;&gt;
#define DW         0xFF02FD // &lt;&lt;&lt;
#define INPUT_IR   0xFF629D // IN
#define POWER_IR   0xFFA25D // POWER
#define MUTE_IR    0xFFE21D // MUTE

#include &lt;Wire.h&gt; 
#include &lt;U8glib.h&gt;             // https://github.com/olikraus/u8glib/  
#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
#include &lt;TDA8425.h&gt;            // http://rcl-radio.ru/wp-content/uploads/2018/11/TDA8425.zip

 U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); 
 IRrecv irrecv(IR);
 decode_results ir; 
 TDA8425 tda;

 extern uint8_t SmallFont[],BigNumbers[];
 long times,times0,oldPosition  = -999,newPosition;
 int vol,balans,bass,treb,in,menu=0;
 bool mute=0,gr1,gr2,w=1,w1,power=0;
 bool in_flag,w2;

 void setup(){
  Wire.begin();
  irrecv.enableIRIn();
  Serial.begin(9600);
  if(EEPROM.read(100)!=0){for(int i=0;i&lt;101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении  
  pinMode(IN_BUTTON,INPUT_PULLUP);
  pinMode(POWER_BUTTON,INPUT_PULLUP);
  pinMode(MUTE_BUTTON,INPUT_PULLUP);
  pinMode(STANDBY_OUT,OUTPUT);
  pinMode(IN_OUT,OUTPUT);
  pinMode(UP_BUTTON,INPUT_PULLUP);
  pinMode(DW_BUTTON,INPUT_PULLUP);
  pinMode(LEFT_BUTTON,INPUT_PULLUP);
  pinMode(RIGHT_BUTTON,INPUT_PULLUP);
   

 u8g.firstPage(); do {
  u8g.setFont(u8g_font_profont29r);u8g.drawStr(5,45,&quot;TDA8425&quot;); 
  }while( u8g.nextPage() );

  delay(300);
  digitalWrite(STANDBY_OUT,HIGH);
  vol = EEPROM.read(0);bass = EEPROM.read(1);treb = EEPROM.read(2);balans = EEPROM.read(3)-4;in = EEPROM.read(4);
  if(in==0){digitalWrite(IN_OUT,HIGH);} 
  if(in==1){digitalWrite(IN_OUT,LOW);} 
  audio(); 
 }

 void loop(){
  // IR ////////////////////////////////////////
  if ( irrecv.decode( &amp;ir )) {Serial.print(&quot;0x&quot;);Serial.println( ir.value,HEX);irrecv.resume();times=millis();w=1;}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
  if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта  
  
 if(power==0){ 
  
 if(digitalRead(UP_BUTTON)==LOW || ir.value==MENU_UP){menu++;cl();delay(200);times=millis();w1=1;w=1;if(menu&gt;3){menu=0;}} // меню
 if(digitalRead(DW_BUTTON)==LOW || ir.value==MENU_DW){menu--;cl();delay(200);times=millis();w1=1;w=1;if(menu&lt;0){menu=3;}} // меню
 

 if((digitalRead(IN_BUTTON)==LOW || ir.value==INPUT_IR) &amp;&amp; mute==0){in++;cl();if(in&gt;1){in=0;}audio();times0=millis();in_flag=1;
 u8g.firstPage(); do {u8g.setFont(u8g_font_profont29r);
 if(in==0){u8g.drawStr(0,45,&quot; AUX ON &quot;);digitalWrite(IN_OUT,HIGH);} 
 if(in==1){u8g.drawStr(0,45,&quot; BT  ON &quot;);digitalWrite(IN_OUT,LOW);} 
 }while( u8g.nextPage() );delay(200);} // input 
 if(millis()-times0&lt;3000 &amp;&amp; in_flag==1){menu=100;}
 if(millis()-times0&gt;=3000 &amp;&amp; in_flag==1){menu=0;w=1;in_flag=0;}

 if((digitalRead(MUTE_BUTTON)==LOW || ir.value==MUTE_IR)&amp;&amp; mute==0){mute=1;cl();times=millis();w1=1;w=1;audio();
 u8g.firstPage(); do {u8g.setFont(u8g_font_profont29r);u8g.drawStr(35,42,&quot;MUTE&quot;);}while( u8g.nextPage() );delay(300);menu=100;} // mute on 

 if((digitalRead(MUTE_BUTTON)==LOW || ir.value==MUTE_IR)&amp;&amp; mute==1){mute=0;cl();times=millis();w1=1;w=1;audio();
 delay(300);menu=0;} // mute off 
 }

 if((digitalRead(POWER_BUTTON)==LOW || ir.value==POWER_IR)&amp;&amp; power==0){power=1;cl();times=millis();w1=1;w=1;mute=1;audio();digitalWrite(STANDBY_OUT,HIGH);
 u8g.firstPage(); do {u8g.setFont(u8g_font_profont29r);u8g.drawStr(10,45,&quot;STANDBY&quot;);}while( u8g.nextPage() );delay(2000);menu=100;
 u8g.firstPage(); do {}while( u8g.nextPage() );} // power on 

 if((digitalRead(POWER_BUTTON)==LOW || ir.value==POWER_IR)&amp;&amp; power==1){power=0;cl();times=millis();w1=1;w=1;mute=0;audio();digitalWrite(STANDBY_OUT,LOW);delay(300);menu=0;} // power off 
 
  
//////// VOLUME //////////////////////////////////////////////////////////////////////////////////////////////////////////////  
  if(menu==0){
 
   if(ir.value==UP||digitalRead(RIGHT_BUTTON)==LOW){vol++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;vol_func();audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl();times=millis();w=1;w1=1;vol_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==DW||digitalRead(LEFT_BUTTON)==LOW){vol--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;vol_func();audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl();times=millis();w=1;w1=1;vol_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
  if(w==1){w=0;
 // Serial.println(63-vol+balans);
  u8g.firstPage();  
   do {
  u8g.setFont(u8g_font_profont29r);u8g.drawStr(17,59,&quot;VOLUME&quot;);
  u8g.setFont(u8g_font_profont29r); u8g.setPrintPos(95, 32);u8g.print(vol-4);
  for(int v_pos=0; v_pos&lt;(59-3)*1.5;v_pos+=4){u8g.drawBox(v_pos+0,16, 2, 1);}
  for(int v_pos=0; v_pos&lt;(vol-3)*1.5;v_pos+=4){u8g.drawBox(v_pos+0,18, 2, 9);}
  for(int v_pos=0; v_pos&lt;(59-3)*1.5;v_pos+=4){u8g.drawBox(v_pos+0,28, 2, 1);}
   } while( u8g.nextPage() );
  }}

///////// BASS /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  if(menu==1){
  // if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
  // bass=bass+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;bass_func();audio();}

   if(ir.value==UP||digitalRead(RIGHT_BUTTON)==LOW){bass++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;bass_func();audio();}// кнопка &gt; 
   if(ir.value==DW||digitalRead(LEFT_BUTTON)==LOW){bass--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;bass_func();audio();}// кнопка &lt;
 
  if(w==1){w=0;

  u8g.firstPage();  
   do {
  u8g.setFont(u8g_font_profont29r);u8g.drawStr(33,59,&quot;BASS&quot;);
  u8g.setFont(u8g_font_profont29r); u8g.setPrintPos(95, 32);u8g.print(bass-6);
  for(int v_pos=0; v_pos&lt;(11-1)*8;v_pos+=4){u8g.drawBox(v_pos+0,16, 2, 1);}
  for(int v_pos=0; v_pos&lt;(bass-1)*8;v_pos+=4){u8g.drawBox(v_pos+0,18, 2, 9);}
  for(int v_pos=0; v_pos&lt;(11-1)*8;v_pos+=4){u8g.drawBox(v_pos+0,28, 2, 1);}
   } while( u8g.nextPage() );
  }}

///////// TREB /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  if(menu==2){

   if(ir.value==UP||digitalRead(RIGHT_BUTTON)==LOW){treb++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;treb_func();audio();}// кнопка &gt; 
   if(ir.value==DW||digitalRead(LEFT_BUTTON)==LOW){treb--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;treb_func();audio();}// кнопка &lt;
 
  if(w==1){w=0;

  u8g.firstPage();  
   do {
  u8g.setFont(u8g_font_profont29r);u8g.drawStr(17,59,&quot;TREBLE&quot;);
  u8g.setFont(u8g_font_profont29r); u8g.setPrintPos(95, 32);u8g.print(treb-6);
  for(int v_pos=0; v_pos&lt;(10-1)*8;v_pos+=4){u8g.drawBox(v_pos+0,16, 2, 1);}
  for(int v_pos=0; v_pos&lt;(treb-1)*8;v_pos+=4){u8g.drawBox(v_pos+0,18, 2, 9);}
  for(int v_pos=0; v_pos&lt;(10-1)*8;v_pos+=4){u8g.drawBox(v_pos+0,28, 2, 1);}
   } while( u8g.nextPage() );
  }}

///////// BALL /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  if(menu==3){

   if(ir.value==UP||digitalRead(RIGHT_BUTTON)==LOW){balans++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;ball_func();audio();}// кнопка &gt; 
   if(ir.value==DW||digitalRead(LEFT_BUTTON)==LOW){balans--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;ball_func();audio();}// кнопка &lt;
 
  if(w==1){w=0;
 // Serial.println(63-vol+balans);
 // Serial.println(63-vol-balans);
  u8g.firstPage();  
   do {
  u8g.setFont(u8g_font_profont29r);u8g.drawStr(12,59,&quot;BALANCE&quot;);
  u8g.setFont(u8g_font_profont29r); 
  if(balans&gt;=0){u8g.setPrintPos(112, 32);u8g.print(balans);u8g.drawStr(95,32,&quot;+&quot;);}
  else{u8g.setPrintPos(95, 32);u8g.print(balans);}

  for(int v_pos=0; v_pos&lt;(12-1)*8;v_pos+=4){u8g.drawBox(v_pos+0,16, 2, 1);}
  const int SCREEN_WIDTH = 84; 
  u8g.drawBox(43,18, 1, 9);// 0 dB
  if(balans &gt;= 0){for(int v_pos=0; v_pos&lt;(balans*8);v_pos+=4){u8g.drawBox(v_pos+48,18, 2, 9);}} 
  else{for(int v_pos=SCREEN_WIDTH-48; v_pos&gt;(SCREEN_WIDTH-(abs(balans)*8)-48); v_pos-=4){u8g.drawBox(v_pos,18, 2, 9);}}
  for(int v_pos=0; v_pos&lt;(12-1)*8;v_pos+=4){u8g.drawBox(v_pos+0,28, 2, 1);}
  
   } while( u8g.nextPage() );
  }}
  

////////////// EEPROM /////////////////////////////////////////////////////////////////////  
  if(millis()-times&gt;5000 &amp;&amp; w1==1 &amp;&amp; power==0 &amp;&amp; mute==0){
     EEPROM.update(0,vol);EEPROM.update(1,bass);EEPROM.update(2,treb);EEPROM.update(3,balans+4);EEPROM.update(4,in);
     menu=0;w1=0;w=1;}
  }


  
void audio(){
  tda.setVolumeL(vol+balans);
  tda.setVolumeR(vol-balans);
  tda.setBass(bass);
  tda.setTreble(treb);
  tda.setMute(mute);
  tda.setSource(in);
 } 

void vol_func(){if(vol&gt;59){vol=59;}if(vol&lt;=4){vol=4;}} // int 0 = min ... int 63 = max + ballans 4 dB 
void bass_func(){if(bass&gt;11){bass=11;}if(bass&lt;2){bass=2;}} // int 6 = 0 dB | int 2 = -12 dB | int 11 = 15 dB
void treb_func(){if(treb&gt;10){treb=10;}if(treb&lt;2){treb=2;}} // int 6 = 0 dB | int 2 = -12 dB | int 10 = 12 dB
void ball_func(){if(balans&gt;4){balans=4;}if(balans&lt;=-4){balans=-4;}}
void cl(){ir.value=0;delay(200);}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[www.aleksandrov74]]></name>
				<uri>https://forum.rcl-radio.ru/profile.php?id=1953</uri>
			</author>
			<updated>2026-09-13T18:13:31Z</updated>
			<id>https://forum.rcl-radio.ru/viewtopic.php?pid=12745#p12745</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA8425 + OLED 128x32]]></title>
			<link rel="alternate" href="https://forum.rcl-radio.ru/viewtopic.php?pid=12744#p12744" />
			<content type="html"><![CDATA[<p>Загрузил скетч , пин 11 всегда&nbsp; с логической 1,при любом включении входа. При этом входа остались с прежним названием Input 1 и 2.На счет шкал все в норме ровно по середине (но с этим я разобрался сам вроде).Не понимаю где переименовать входа? И увеличить надписи VOL BASS TRE BALANCE, уж больно мелкие из далека не разобрать какой режим выбираешь.</p>]]></content>
			<author>
				<name><![CDATA[www.aleksandrov74]]></name>
				<uri>https://forum.rcl-radio.ru/profile.php?id=1953</uri>
			</author>
			<updated>2026-09-12T08:50:59Z</updated>
			<id>https://forum.rcl-radio.ru/viewtopic.php?pid=12744#p12744</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA8425 + OLED 128x32]]></title>
			<link rel="alternate" href="https://forum.rcl-radio.ru/viewtopic.php?pid=12743#p12743" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>honda473 пишет:</cite><blockquote><div class="quotebox"><cite>honda473 пишет:</cite><blockquote><div class="quotebox"><cite>www.aleksandrov74 пишет:</cite><blockquote><p>Заменил еще одно но, картинка находится в верхних строках, а не по середине , как то можно поправить?</p></blockquote></div><p>Логично, что строка вверх сместилась. Ведь скетч написан под дисплей&nbsp; 128х32 пикселя ,а вы поставили дисплей 128х64 . Пикселей по вертикали стало в два раза больше. Нужно во всем скетче править расположение по вертикали.</p></blockquote></div><div class="codebox"><pre><code>// энкодер
#define ENC_DT       9
#define ENC_CLK      8
#define ENC_SW       10

// ИК датчик
#define IR           12

// кнопки управления
#define IN_BUTTON       2
#define POWER_BUTTON    3
#define MUTE_BUTTON     4

// выход управления standby
#define STANDBY_OUT     13
#define IN_OUT     11

// коды кнопок ИК пульта
#define MENU      0x2FDB24D // button encoder
#define UP        0x2FDD02F // &gt;&gt;&gt;
#define DW        0x2FD32CD // &lt;&lt;&lt;
#define INPUT_IR  0x2FD6A95 // IN
#define POWER_IR  0x2FD00FF // POWER
#define MUTE_IR   0x2FDB04F // MUTE

#include &lt;Wire.h&gt; 
#include &lt;U8glib.h&gt;             // https://github.com/olikraus/u8glib/
#include &lt;Encoder.h&gt;            // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip    
#include &lt;EEPROM.h&gt;
#include &lt;MsTimer2.h&gt;           // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip       
#include &lt;boarddefs.h&gt;          // входит в состав библиотеки IRremote
#include &lt;IRremote.h&gt;           // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip
#include &lt;TDA8425.h&gt;            // http://rcl-radio.ru/wp-content/uploads/2018/11/TDA8425.zip

 
 U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0 | U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI

 IRrecv irrecv(IR);
 Encoder myEnc(ENC_DT, ENC_CLK);
 decode_results ir; 
 TDA8425 tda;

 extern uint8_t SmallFont[],BigNumbers[];
 long times,oldPosition  = -999,newPosition;
 int vol,balans,bass,treb,in,menu;
 bool mute=0,gr1,gr2,w,w1,power=0,in_flag;

 void setup(){
  Wire.begin();
  irrecv.enableIRIn();
  Serial.begin(9600);
  MsTimer2::set(3, to_Timer);MsTimer2::start();
  if(EEPROM.read(100)!=0){for(int i=0;i&lt;101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении  
  pinMode(IN_BUTTON,INPUT_PULLUP);
  pinMode(POWER_BUTTON,INPUT_PULLUP);
  pinMode(MUTE_BUTTON,INPUT_PULLUP);
  pinMode(STANDBY_OUT,OUTPUT);
  pinMode(IN_OUT,OUTPUT);  

 u8g.firstPage(); do {
  u8g.setFont(u8g_font_profont29r);u8g.drawStr(5,45,&quot;TDA8425&quot;); 
  }while( u8g.nextPage() );

  delay(300);
  digitalWrite(STANDBY_OUT,LOW);
  vol = EEPROM.read(0);bass = EEPROM.read(1);treb = EEPROM.read(2);balans = EEPROM.read(3)-4;in = EEPROM.read(4);
  if(in==0){digitalWrite(IN_OUT,HIGH);} 
  if(in==1){digitalWrite(IN_OUT,LOW);} 
  audio(); 
 }

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

 if((digitalRead(IN_BUTTON)==LOW || ir.value==INPUT_IR) &amp;&amp; mute==0){in++;cl();times=millis();w1=1;w=1;if(in&gt;1){in=0;}audio();
 u8g.firstPage(); do {u8g.setFont(u8g_font_profont29r);u8g.drawStr(0,45,&quot;INPUT&quot;);u8g.setPrintPos(95, 25);u8g.print(in+1);}while( u8g.nextPage() );delay(1000);} // input 

 if((digitalRead(MUTE_BUTTON)==LOW || ir.value==MUTE_IR)&amp;&amp; mute==0){mute=1;cl();times=millis();w1=1;w=1;audio();
 u8g.firstPage(); do {u8g.setFont(u8g_font_profont29r);u8g.drawStr(25,45,&quot;MUTE&quot;);}while( u8g.nextPage() );delay(300);menu=100;} // mute on 

 if((digitalRead(MUTE_BUTTON)==LOW || ir.value==MUTE_IR)&amp;&amp; mute==1){mute=0;cl();times=millis();w1=1;w=1;audio();
 delay(300);menu=0;} // mute off 
 }

 if((digitalRead(POWER_BUTTON)==LOW || ir.value==POWER_IR)&amp;&amp; power==0){power=1;cl();times=millis();w1=1;w=1;mute=1;audio();digitalWrite(STANDBY_OUT,LOW);
 u8g.firstPage(); do {u8g.setFont(u8g_font_profont29r);u8g.drawStr(10,45,&quot;STANDBY&quot;);}while( u8g.nextPage() );delay(2000);menu=100;
 u8g.firstPage(); do {}while( u8g.nextPage() );} // power on 

 if((digitalRead(POWER_BUTTON)==LOW || ir.value==POWER_IR)&amp;&amp; power==1){power=0;cl();times=millis();w1=1;w=1;mute=0;audio();digitalWrite(STANDBY_OUT,HIGH);delay(300);menu=0;} // power off 
 
  
//////// VOLUME //////////////////////////////////////////////////////////////////////////////////////////////////////////////  
  if(menu==0){
   if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   vol=vol+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;vol_func();audio();}
 
   if(ir.value==UP){vol++;gr1=1;gr2=0;cl();times=millis();w=1;w1=1;vol_func();audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl();times=millis();w=1;w1=1;vol_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==DW){vol--;gr1=0;gr2=1;cl();times=millis();w=1;w1=1;vol_func();audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl();times=millis();w=1;w1=1;vol_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
  if(w==1){w=0;
 // Serial.println(63-vol+balans);
  u8g.firstPage();  
   do {
  u8g.setFont(u8g_font_profont12r);u8g.drawStr(0,28,&quot;VOLUME&quot;);
  u8g.setFont(u8g_font_profont29r); u8g.setPrintPos(95, 44);u8g.print(vol-4);
  for(int v_pos=0; v_pos&lt;(59-3)*1.5;v_pos+=4){u8g.drawBox(v_pos+0,36, 2, 1);}
  for(int v_pos=0; v_pos&lt;(vol-3)*1.5;v_pos+=4){u8g.drawBox(v_pos+0,38, 2, 9);}
  for(int v_pos=0; v_pos&lt;(59-3)*1.5;v_pos+=4){u8g.drawBox(v_pos+0,48, 2, 1);}
   } while( u8g.nextPage() );
  }}

///////// BASS /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  if(menu==1){
   if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   bass=bass+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;bass_func();audio();}

   if(ir.value==UP){bass++;gr1=1;gr2=0;ir.value=0;times=millis();w=1;w1=1;bass_func();audio();}// кнопка &gt; 
   if(ir.value==DW){bass--;gr1=0;gr2=1;ir.value=0;times=millis();w=1;w1=1;bass_func();audio();}// кнопка &lt;
 
  if(w==1){w=0;

  u8g.firstPage();  
   do {
  u8g.setFont(u8g_font_profont12r);u8g.drawStr(0,28,&quot;BASS&quot;);
  u8g.setFont(u8g_font_profont29r); u8g.setPrintPos(95, 44);u8g.print(bass-6);
  for(int v_pos=0; v_pos&lt;(11-1)*8;v_pos+=4){u8g.drawBox(v_pos+0,36, 2, 1);}
  for(int v_pos=0; v_pos&lt;(bass-1)*8;v_pos+=4){u8g.drawBox(v_pos+0,38, 2, 9);}
  for(int v_pos=0; v_pos&lt;(11-1)*8;v_pos+=4){u8g.drawBox(v_pos+0,48, 2, 1);}
   } while( u8g.nextPage() );
  }}

///////// TREB /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  if(menu==2){
   if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   treb=treb+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;treb_func();audio();}

   if(ir.value==UP){treb++;gr1=1;gr2=0;ir.value=0;times=millis();w=1;w1=1;treb_func();audio();}// кнопка &gt; 
   if(ir.value==DW){treb--;gr1=0;gr2=1;ir.value=0;times=millis();w=1;w1=1;treb_func();audio();}// кнопка &lt;
 
  if(w==1){w=0;

  u8g.firstPage();  
   do {
  u8g.setFont(u8g_font_profont12r);u8g.drawStr(0,28,&quot;TREBLE&quot;);
  u8g.setFont(u8g_font_profont29r); u8g.setPrintPos(95, 44);u8g.print(treb-6);
  for(int v_pos=0; v_pos&lt;(10-1)*8;v_pos+=4){u8g.drawBox(v_pos+0,36, 2, 1);}
  for(int v_pos=0; v_pos&lt;(treb-1)*8;v_pos+=4){u8g.drawBox(v_pos+0,38, 2, 9);}
  for(int v_pos=0; v_pos&lt;(10-1)*8;v_pos+=4){u8g.drawBox(v_pos+0,48, 2, 1);}
   } while( u8g.nextPage() );
  }}

///////// BALL /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  if(menu==3){
   if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   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;ir.value=0;times=millis();w=1;w1=1;ball_func();audio();}// кнопка &gt; 
   if(ir.value==DW){balans--;gr1=0;gr2=1;ir.value=0;times=millis();w=1;w1=1;ball_func();audio();}// кнопка &lt;
 
  if(w==1){w=0;
 // Serial.println(63-vol+balans);
 // Serial.println(63-vol-balans);
  u8g.firstPage();  
   do {
  u8g.setFont(u8g_font_profont12r);u8g.drawStr(0,28,&quot;BALANCE&quot;);
  u8g.setFont(u8g_font_profont29r); 
  if(balans&gt;=0){u8g.setPrintPos(112, 44);u8g.print(balans);u8g.drawStr(95,44,&quot;+&quot;);}
  else{u8g.setPrintPos(95, 44);u8g.print(balans);}

  for(int v_pos=0; v_pos&lt;(12-1)*8;v_pos+=4){u8g.drawBox(v_pos+0,36, 2, 1);}
  const int SCREEN_WIDTH = 84; 
  u8g.drawBox(43,38, 1, 9);// 0 dB
  if(balans &gt;= 0){for(int v_pos=0; v_pos&lt;(balans*8);v_pos+=4){u8g.drawBox(v_pos+48,38, 2, 9);}} 
  else{for(int v_pos=SCREEN_WIDTH-48; v_pos&gt;(SCREEN_WIDTH-(abs(balans)*8)-48); v_pos-=4){u8g.drawBox(v_pos,38, 2, 9);}}
  for(int v_pos=0; v_pos&lt;(12-1)*8;v_pos+=4){u8g.drawBox(v_pos+0,48, 2, 1);}
  
   } while( u8g.nextPage() );
  }}
  

////////////// EEPROM /////////////////////////////////////////////////////////////////////  
  if(millis()-times&gt;5000 &amp;&amp; w1==1 &amp;&amp; power==0 &amp;&amp; mute==0){
     EEPROM.update(0,vol);EEPROM.update(1,bass);EEPROM.update(2,treb);EEPROM.update(3,balans+4);EEPROM.update(4,in);
     menu=0;w1=0;w=1;myEnc.write(0);}
  }


  
void to_Timer(){newPosition = myEnc.read()/4;} 
void audio(){
  tda.setVolumeL(vol+balans);
  tda.setVolumeR(vol-balans);
  tda.setBass(bass);
  tda.setTreble(treb);
  tda.setMute(mute);
  tda.setSource(in);
 } 

void vol_func(){if(vol&gt;59){vol=59;}if(vol&lt;=4){vol=4;}} // int 0 = min ... int 63 = max + ballans 4 dB 
void bass_func(){if(bass&gt;11){bass=11;}if(bass&lt;2){bass=2;}} // int 6 = 0 dB | int 2 = -12 dB | int 11 = 15 dB
void treb_func(){if(treb&gt;10){treb=10;}if(treb&lt;2){treb=2;}} // int 6 = 0 dB | int 2 = -12 dB | int 10 = 12 dB
void ball_func(){if(balans&gt;4){balans=4;}if(balans&lt;=-4){balans=-4;}}
void cl(){ir.value=0;delay(200);} </code></pre></div></blockquote></div><p>Попробовал поправить строки,не все ,попробуйте,что изменится. Дисплея такого нет ,не на чем проверить.</p>]]></content>
			<author>
				<name><![CDATA[honda473]]></name>
				<uri>https://forum.rcl-radio.ru/profile.php?id=4061</uri>
			</author>
			<updated>2026-09-11T16:11:56Z</updated>
			<id>https://forum.rcl-radio.ru/viewtopic.php?pid=12743#p12743</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA8425 + OLED 128x32]]></title>
			<link rel="alternate" href="https://forum.rcl-radio.ru/viewtopic.php?pid=12741#p12741" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>kkmaz пишет:</cite><blockquote><p>Добрый день. Наконец-то собрал все в кучу. Все работает. Есть один нюанс, какой-то шум идет от ТДАшки. <br />При коротком на входе усилителя тишина полная. линейный вход минуя тда тоже тихо.&nbsp; <br />Может ли шуметь длинная линия на А4,А5? Или то, что дисплей висит на одной линии данных с ТДАшкой?<br />И еще один вопрос, можно ли как-то выровнять входные уровни каналов?</p></blockquote></div><p>Шум какой идет от процессора ,просто шипение или фон?<br />Баланс вроде есть в настройках ,им и отрегулируйте уровень лк и пк сигнала на усилитель.</p>]]></content>
			<author>
				<name><![CDATA[honda473]]></name>
				<uri>https://forum.rcl-radio.ru/profile.php?id=4061</uri>
			</author>
			<updated>2026-09-11T14:40:58Z</updated>
			<id>https://forum.rcl-radio.ru/viewtopic.php?pid=12741#p12741</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA8425 + OLED 128x32]]></title>
			<link rel="alternate" href="https://forum.rcl-radio.ru/viewtopic.php?pid=12740#p12740" />
			<content type="html"><![CDATA[<p>Добрый день. Наконец-то собрал все в кучу. Все работает. Есть один нюанс, какой-то шум идет от ТДАшки. <br />При коротком на входе усилителя тишина полная. линейный вход минуя тда тоже тихо.&nbsp; <br />Может ли шуметь длинная линия на А4,А5? Или то, что дисплей висит на одной линии данных с ТДАшкой?<br />И еще один вопрос, можно ли как-то выровнять входные уровни каналов?</p>]]></content>
			<author>
				<name><![CDATA[kkmaz]]></name>
				<uri>https://forum.rcl-radio.ru/profile.php?id=5020</uri>
			</author>
			<updated>2026-09-11T12:31:38Z</updated>
			<id>https://forum.rcl-radio.ru/viewtopic.php?pid=12740#p12740</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA8425 + OLED 128x32]]></title>
			<link rel="alternate" href="https://forum.rcl-radio.ru/viewtopic.php?pid=12739#p12739" />
			<content type="html"><![CDATA[<p>Но там кнопки в управлении а не энкодер</p>]]></content>
			<author>
				<name><![CDATA[www.aleksandrov74]]></name>
				<uri>https://forum.rcl-radio.ru/profile.php?id=1953</uri>
			</author>
			<updated>2026-09-11T10:00:37Z</updated>
			<id>https://forum.rcl-radio.ru/viewtopic.php?pid=12739#p12739</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA8425 + OLED 128x32]]></title>
			<link rel="alternate" href="https://forum.rcl-radio.ru/viewtopic.php?pid=12738#p12738" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>www.aleksandrov74 пишет:</cite><blockquote><p>Еще можно было сделать при переключении входа, на каком нибудь пине ардуино появлялась логическая 1 ,а при переходе снова на другой вход ,стоновилась бы логический 0, и обозвать например это вход ,Bluetooth ON&quot;,а второй вход AUX.</p></blockquote></div><p>В сообщении №38 скетч,там как раз ножка 11 меняет логические уровни при переключении входов.</p>]]></content>
			<author>
				<name><![CDATA[honda473]]></name>
				<uri>https://forum.rcl-radio.ru/profile.php?id=4061</uri>
			</author>
			<updated>2026-09-11T09:20:38Z</updated>
			<id>https://forum.rcl-radio.ru/viewtopic.php?pid=12738#p12738</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA8425 + OLED 128x32]]></title>
			<link rel="alternate" href="https://forum.rcl-radio.ru/viewtopic.php?pid=12737#p12737" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>www.aleksandrov74 пишет:</cite><blockquote><p>Заменил еще одно но, картинка находится в верхних строках, а не по середине , как то можно поправить?</p></blockquote></div><p>Логично, что строка вверх сместилась. Ведь скетч написан под дисплей&nbsp; 128х32 пикселя ,а вы поставили дисплей 128х64 . Пикселей по вертикали стало в два раза больше. Нужно во всем скетче править расположение по вертикали.</p>]]></content>
			<author>
				<name><![CDATA[honda473]]></name>
				<uri>https://forum.rcl-radio.ru/profile.php?id=4061</uri>
			</author>
			<updated>2026-09-11T09:00:57Z</updated>
			<id>https://forum.rcl-radio.ru/viewtopic.php?pid=12737#p12737</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA8425 + OLED 128x32]]></title>
			<link rel="alternate" href="https://forum.rcl-radio.ru/viewtopic.php?pid=12736#p12736" />
			<content type="html"><![CDATA[<p>if((digitalRead(POWER_BUTTON)==LOW || ir.value==POWER_IR)&amp;&amp; power==0){power=1;cl();times=millis();w1=1;w=1;mute=1;audio();digitalWrite(STANDBY_OUT,LOW);<br /> u8g.firstPage(); do {u8g.setFont(u8g_font_profont29r);u8g.drawStr(10,25,&quot;STANDBY&quot;);}while( u8g.nextPage() );delay(2000);menu=100;<br /> u8g.firstPage(); do {}while( u8g.nextPage() );} // power on </p><p> if((digitalRead(POWER_BUTTON)==LOW || ir.value==POWER_IR)&amp;&amp; power==1){power=0;cl();times=millis();w1=1;w=1;mute=0;audio();digitalWrite(STANDBY_OUT,HIGH);delay(300);menu=0;} // power off</p><p>Сделал как вы написали все четко!<br />Заменил еще одно но, картинка находится в верхних строках, а не по середине , как то можно поправить?<br />Еще можно было сделать при переключении входа, на каком нибудь пине ардуино появлялась логическая 1 ,а при переходе снова на другой вход ,стоновилась бы логический 0, и обозвать например это вход ,Bluetooth ON&quot;,а второй вход AUX.</p>]]></content>
			<author>
				<name><![CDATA[www.aleksandrov74]]></name>
				<uri>https://forum.rcl-radio.ru/profile.php?id=1953</uri>
			</author>
			<updated>2026-09-11T06:20:03Z</updated>
			<id>https://forum.rcl-radio.ru/viewtopic.php?pid=12736#p12736</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA8425 + OLED 128x32]]></title>
			<link rel="alternate" href="https://forum.rcl-radio.ru/viewtopic.php?pid=12735#p12735" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>www.aleksandrov74 пишет:</cite><blockquote><p>Все нормально отображается корректно. Только беда Теперь команда с экодера и кнопок идут с какой то задержкой ,но у меня пока без TDA .Может быть такой эффект торможения без TDA? И еще при переводе на StandBY ,на 13 пине логическая 1,а хотелось бы 0.</p></blockquote></div><p>Если tda на шине нет ,возможны торможения.<br /><span class="postimg"><img src="https://forum.rcl-radio.ru/uploads/images/2026/09/46bd8cdb387588475e62a6ccb998b538.png" alt="https://forum.rcl-radio.ru/uploads/images/2026/09/46bd8cdb387588475e62a6ccb998b538.png" /></span> <br />попробуйте так поменять выход пина 13.</p>]]></content>
			<author>
				<name><![CDATA[honda473]]></name>
				<uri>https://forum.rcl-radio.ru/profile.php?id=4061</uri>
			</author>
			<updated>2026-09-11T04:31:15Z</updated>
			<id>https://forum.rcl-radio.ru/viewtopic.php?pid=12735#p12735</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA8425 + OLED 128x32]]></title>
			<link rel="alternate" href="https://forum.rcl-radio.ru/viewtopic.php?pid=12734#p12734" />
			<content type="html"><![CDATA[<p>Все нормально отображается корректно. Только беда Теперь команда с экодера и кнопок идут с какой то задержкой ,но у меня пока без TDA .Может быть такой эффект торможения без TDA? И еще при переводе на StandBY ,на 13 пине логическая 1,а хотелось бы 0.</p>]]></content>
			<author>
				<name><![CDATA[www.aleksandrov74]]></name>
				<uri>https://forum.rcl-radio.ru/profile.php?id=1953</uri>
			</author>
			<updated>2026-09-10T18:02:42Z</updated>
			<id>https://forum.rcl-radio.ru/viewtopic.php?pid=12734#p12734</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA8425 + OLED 128x32]]></title>
			<link rel="alternate" href="https://forum.rcl-radio.ru/viewtopic.php?pid=12733#p12733" />
			<content type="html"><![CDATA[<p><span class="postimg"><img src="https://forum.rcl-radio.ru/uploads/images/2026/09/bd1e3227b58ed0ae46e6a76233bc933c.png" alt="https://forum.rcl-radio.ru/uploads/images/2026/09/bd1e3227b58ed0ae46e6a76233bc933c.png" /></span> <br />попробуйте сначала поменять настройки дисплея в библиотеке</p>]]></content>
			<author>
				<name><![CDATA[honda473]]></name>
				<uri>https://forum.rcl-radio.ru/profile.php?id=4061</uri>
			</author>
			<updated>2026-09-10T14:49:26Z</updated>
			<id>https://forum.rcl-radio.ru/viewtopic.php?pid=12733#p12733</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA8425 + OLED 128x32]]></title>
			<link rel="alternate" href="https://forum.rcl-radio.ru/viewtopic.php?pid=12732#p12732" />
			<content type="html"><![CDATA[<p>А можно скет поправить под дислей 1.3?</p>]]></content>
			<author>
				<name><![CDATA[www_aleksandrov]]></name>
				<uri>https://forum.rcl-radio.ru/profile.php?id=5024</uri>
			</author>
			<updated>2026-09-10T05:30:36Z</updated>
			<id>https://forum.rcl-radio.ru/viewtopic.php?pid=12732#p12732</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA8425 + OLED 128x32]]></title>
			<link rel="alternate" href="https://forum.rcl-radio.ru/viewtopic.php?pid=12720#p12720" />
			<content type="html"><![CDATA[<p>Компиляция прошла нормально. Вроде все работает. Проверил пока без ТДАшки.</p>]]></content>
			<author>
				<name><![CDATA[kkmaz]]></name>
				<uri>https://forum.rcl-radio.ru/profile.php?id=5020</uri>
			</author>
			<updated>2026-08-25T11:51:50Z</updated>
			<id>https://forum.rcl-radio.ru/viewtopic.php?pid=12720#p12720</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: TDA8425 + OLED 128x32]]></title>
			<link rel="alternate" href="https://forum.rcl-radio.ru/viewtopic.php?pid=12719#p12719" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Вопрос только один, За что отвечает кнопка IN, и что коммутирует вывод 11 INPUT ?</p></blockquote></div><p>Это просто индикатор выхода</p>]]></content>
			<author>
				<name><![CDATA[liman28]]></name>
				<uri>https://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2026-08-24T11:40:53Z</updated>
			<id>https://forum.rcl-radio.ru/viewtopic.php?pid=12719#p12719</id>
		</entry>
</feed>
