<?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; PT2257 + OLED 128x32]]></title>
		<link>http://forum.rcl-radio.ru/viewtopic.php?id=723</link>
		<atom:link href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=723&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «PT2257 + OLED 128x32».]]></description>
		<lastBuildDate>Mon, 05 Jan 2026 11:36:07 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: PT2257 + OLED 128x32]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=12073#p12073</link>
			<description><![CDATA[<p><a href="http://forum.rcl-radio.ru/viewtopic.php?pid=12072#p12072">http://forum.rcl-radio.ru/viewtopic.php … 072#p12072</a></p>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Mon, 05 Jan 2026 11:36:07 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=12073#p12073</guid>
		</item>
		<item>
			<title><![CDATA[Re: PT2257 + OLED 128x32]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=12066#p12066</link>
			<description><![CDATA[<p>я имел ввиду м62429 +0,91″ I2C 128×32 OLED</p>]]></description>
			<author><![CDATA[null@example.com (evgeny000)]]></author>
			<pubDate>Mon, 05 Jan 2026 10:18:12 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=12066#p12066</guid>
		</item>
		<item>
			<title><![CDATA[Re: PT2257 + OLED 128x32]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=12065#p12065</link>
			<description><![CDATA[<p>на дисплее 1602 я собирал. там всё отлично. у pt2257 видимо проблема из-за того что i2c на отдной шине с дисплее и микросхемой. при питании от разных источников помехи отсутствуют</p>]]></description>
			<author><![CDATA[null@example.com (evgeny000)]]></author>
			<pubDate>Mon, 05 Jan 2026 10:15:35 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=12065#p12065</guid>
		</item>
		<item>
			<title><![CDATA[Re: PT2257 + OLED 128x32]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=12064#p12064</link>
			<description><![CDATA[<p>Проверьте м62429 тестовым скетчем <a href="http://rcl-radio.ru/?p=63039">http://rcl-radio.ru/?p=63039</a></p>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Mon, 05 Jan 2026 09:40:44 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=12064#p12064</guid>
		</item>
		<item>
			<title><![CDATA[Re: PT2257 + OLED 128x32]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=12062#p12062</link>
			<description><![CDATA[<p>Доброе утро. А сложно поменять чип на m62429. У pt сильные наводки по шине при питании от одного источника напряжения. никакими фильтрами не убирается. может м62429 менее капризная</p>]]></description>
			<author><![CDATA[null@example.com (evgeny000)]]></author>
			<pubDate>Mon, 05 Jan 2026 07:42:45 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=12062#p12062</guid>
		</item>
		<item>
			<title><![CDATA[Re: PT2257 + OLED 128x32]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=12059#p12059</link>
			<description><![CDATA[<p>Всё отлично работает</p>]]></description>
			<author><![CDATA[null@example.com (evgeny000)]]></author>
			<pubDate>Sun, 04 Jan 2026 14:46:39 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=12059#p12059</guid>
		</item>
		<item>
			<title><![CDATA[PT2257 + OLED 128x32]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=12057#p12057</link>
			<description><![CDATA[<p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2026/01/233aaa5371e0f4f322498c18039693e8.png" alt="http://forum.rcl-radio.ru/uploads/images/2026/01/233aaa5371e0f4f322498c18039693e8.png" /></span> </p><br /><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2026/01/c9200d50cc2d87a6afa7bca554b03f96.png" alt="http://forum.rcl-radio.ru/uploads/images/2026/01/c9200d50cc2d87a6afa7bca554b03f96.png" /></span> </p><br /><div class="codebox"><pre><code>// энкодер
#define ENC_DT       9
#define ENC_CLK      8
#define ENC_SW       10

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

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

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

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

#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;PT2257.h&gt;             // http://rcl-radio.ru/wp-content/uploads/2019/01/PT2257.zip

 U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE);  // I2C / TWI 
 IRrecv irrecv(IR);
 Encoder myEnc(ENC_DT, ENC_CLK);
 decode_results ir; 
 PT2257 rt;

 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;

 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(POWER_BUTTON,INPUT_PULLUP);
  pinMode(MUTE_BUTTON,INPUT_PULLUP);
  pinMode(STANDBY_OUT,OUTPUT); 

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

  delay(300);
  digitalWrite(STANDBY_OUT,LOW);
  vol = EEPROM.read(0);balans = EEPROM.read(3)-8;
  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;1){menu=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(25,25,&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,25,&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(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,8,&quot;VOLUME&quot;);
  u8g.setFont(u8g_font_profont29r); u8g.setPrintPos(95, 24);u8g.print(vol-8);
  for(int v_pos=0; v_pos&lt;(71-8)*1.3;v_pos+=4){u8g.drawBox(v_pos+0,16, 2, 1);}
  for(int v_pos=0; v_pos&lt;(vol-8)*1.3;v_pos+=4){u8g.drawBox(v_pos+0,18, 2, 9);}
  for(int v_pos=0; v_pos&lt;(71-8)*1.3;v_pos+=4){u8g.drawBox(v_pos+0,28, 2, 1);}
   } while( u8g.nextPage() );
  }}

///////// BALL /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  if(menu==1){
   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(vol+balans);
//  Serial.println(vol-balans);
  u8g.firstPage();  
   do {
  u8g.setFont(u8g_font_profont12r);u8g.drawStr(0,8,&quot;BALANCE&quot;);
  u8g.setFont(u8g_font_profont29r); 
  if(balans&gt;=0){u8g.setPrintPos(112, 24);u8g.print(balans);u8g.drawStr(95,24,&quot;+&quot;);}
  else{u8g.setPrintPos(95, 24);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*4);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)*4)-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(3,balans+8);
     menu=0;w1=0;w=1;myEnc.write(0);}
  }

 
void to_Timer(){newPosition = myEnc.read()/4;} 
void audio(){
  rt.setLeft(vol-8+balans); // int 0...79 
  rt.setRight(vol-8-balans);// int 0...79
  rt.setMute(mute);  // int 0...1
}

void vol_func(){if(vol&gt;71){vol=71;}if(vol&lt;=8){vol=8;}} // int 0 ... int 79 
void ball_func(){if(balans&gt;8){balans=8;}if(balans&lt;=-8){balans=-8;}}
void cl(){ir.value=0;delay(200);} </code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Sun, 04 Jan 2026 10:48:27 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=12057#p12057</guid>
		</item>
	</channel>
</rss>
