<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[forum.rcl-radio.ru &mdash; pt2322 pt2323]]></title>
	<link rel="self" href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=593&amp;type=atom" />
	<updated>2025-05-02T06:05:56Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.rcl-radio.ru/viewtopic.php?id=593</id>
		<entry>
			<title type="html"><![CDATA[Re: pt2322 pt2323]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=11796#p11796" />
			<content type="html"><![CDATA[<p>скетч под энкодер, 2 кнопки и ОЛЕД 128_64<br /></p><div class="codebox"><pre><code>/*
Регулировка громкости  от -79 до 0 dB (1 dB/шаг)
Регулировка тембра  bass, midle, trebl от -14 до +14 dB (2 dB/шаг) 
Управление цифровое, содержит всего 4-е слота 24-и битных регистра управления
-PT2323 6_CH Audio Selector 
Напряжение питания +4,5 … 9 В 
управление на РТ2322 + OLED 128_64 1 Encoder 2 button
пины подключения к PT2323 SDA15,SCL16 -- BUS I2C Atmega328P SDA18,SCL19
пины подключения к PT2322 SDA25,SCL24  
!!!!! не менее Atmega328P Скетч использует 20196 байт (62%)
*/
#include &lt;Wire.h&gt;
#include &lt;GyverIO.h&gt;    // https://github.com/GyverLibs/GyverIO
#include &lt;GyverOLED.h&gt;  //https://github.com/GyverLibs/GyverOLED
#include &lt;EncButton.h&gt;  //https://github.com/GyverLibs/EncButton
//#include &lt;AnalogKey.h&gt;  // https://github.com/GyverLibs/AnalogKey
#include &lt;PT2323.h&gt;  // 0x94  https://github.com/liman324/PT2323.git
#include &lt;PT2322.h&gt;  // 0x44
#include &lt;EEPROM.h&gt;
#include &lt;IRremote.h&gt;  // # Version - 2.2.3 https://github.com/Arduino-IRremote/Arduino-IRremote
PT2322 pt1;
PT2323 pt0;
//* IR remote Pioneer CXC3173
#define ARROW_UP 0x738F2F1A     // arrow up
#define ARROW_DW 0x24CA54E0     // arrow
#define ARROW_RIGHT 0xAC77E57C  // arrow &gt;
#define ARROW_LEFT 0x18B07C3E   // arrow &lt;
#define IN 0x553AF3DE           // POW
#define VOL_UP 0x20EE60D6       //+
#define VOL_DW 0xDF604FDC       //-
#define SRND 0xA7AC0E04         //A
#define MUTE 0xA2971A7A         // PAUSE
#define EQ 0x922CD3BC           // FUNCTION
IRrecv irrecv(2);               // указываем pin модуля IR приемника
decode_results ir;
#define NO_LED_FEEDBACK_CODE
String in[3] = { &quot;CD &quot;, &quot;AUX&quot;, &quot;5.1&quot; };
String tmbr[3] = { &quot;ROCK   &quot;, &quot;POP    &quot;, &quot;CLASSIC&quot; };
//int16_t sigs[2] = { 1023, 440 };  // создаём массив значений сигналов с кнопок на один пин, если кнопки аналог
// *********ENCODER**********
#define EB_NO_FOR  // отключить поддержку pressFor/holdFor/stepFor и счётчик степов (экономит 2 байта оперативки)
//#define EB_NO_CALLBACK     // отключить обработчик событий attach (экономит 2 байта оперативки)
#define EB_NO_COUNTER      // отключить счётчик энкодера [VirtEncoder, Encoder, EncButton] (экономит 4 байта оперативки)
#define EB_NO_BUFFER       // отключить буферизацию энкодера (экономит 2 байта оперативки)
#define EB_DEB_TIME 50     // таймаут гашения дребезга кнопки (кнопка)
#define EB_CLICK_TIME 500  // таймаут ожидания кликов (кнопка)
#define EB_HOLD_TIME 600   // таймаут удержания (кнопка)
#define EB_STEP_TIME 200   // таймаут импульсного удержания (кнопка)
#define EB_TOUT_TIME 500   // таймаут действия (кнопка и энкодер)
GyverOLED&lt;SSD1306_128x64, OLED_NO_BUFFER&gt; oled;
EncButton eb(8, 7, 6, INPUT, INPUT_PULLUP);  // A,B,C
Button b0(3);                                // INPUT AUDIO CHANAL
Button b1(4);                                //  SURRAUND
  //VirtButton btn0;
  //VirtButton btn1;
  //AnalogKey&lt;A0, 2, sigs&gt; keys;    //если кнопки аналог, указываем пин, количество кнопок и массив значений
int vol, bass, mid, treb, tembr;
int Menu, inputCH, x, i, ddd;
byte mute;
unsigned long time;

void setup() {
  Wire.begin();
  Wire.setClock(100000);
  Serial.begin(19200);
  irrecv.enableIRIn();  // запускаем модуль IR
  inputCH = EEPROM.read(0);
  vol = EEPROM.read(1);
  treb = EEPROM.read(2);
  mid = EEPROM.read(3);
  bass = EEPROM.read(4);
  tembr = EEPROM.read(5);
  pt0.setMute(0, 0, 0, 0, 0, 0, 0);  // MUTE OFF для выходов (0,0,0,0,0,0,0);
  pt0.setFeature(1, 0);              // дополнительные функции (Enhanced Surround,Mixed Channel)
  pt1.setFront_lk_att(abs(0));  // att front L
  pt1.setFront_rk_att(abs(0));  // att front R
  pt1.setCenter_att(abs(0));    // att center
  pt1.setRear_lk_att(abs(0));   // att rear L
  pt1.setRear_rk_att(abs(0));   // att rear R
  pt1.setSub_att(abs(0));       // att sub
  eb.counter = 0;
  eb.setEncReverse(0);
  eb.setEncType(EB_STEP4_LOW);
  eb.setFastTimeout(30);
  oled.init();
  oled.clear();
  oled.roundRect(0, 0, 124, 63, OLED_STROKE);
  oled.setScale(2);
  oled.setCursorXY(10, 8);
  oled.print(&quot;microlab&quot;);
  oled.setCursorXY(25, 32);
  oled.print(&quot;H-500&quot;);
  delay(1500);
  oled.clear();
  oled.roundRect(0, 0, 124, 30, OLED_STROKE);
  oled.setScale(2);
  oled.setCursorXY(8, 8);
  oled.print(&quot;INPUT&quot;);
  oled.setCursorXY(80, 8);
  oled.print(in[inputCH]);
  oled.setCursorXY(85, 36);
  oled.setScale(1);
  oled.print(tmbr[tembr]);
  Serial.println(&quot;START&quot;);
}
void loop() {
  eb.tick();
  b0.tick();
  b1.tick();
/*
если аналоговые кнопки, то
btn0.tick(keys.status(0));
btn1.tick(keys.status(1));
*/
  if (irrecv.decode(&amp;ir)) {
    Serial.print(&quot;0x&quot;);
    Serial.println(ir.value, HEX);
    time = millis();
    irrecv.resume();
  }  // IR приемник
  if (ir.value == ARROW_UP) {
    Menu++;
    cl();
    time = millis();
    if (Menu &gt; 4) { Menu = 0; }
  }  // меню кнопка ARROW UP
  if (ir.value == ARROW_DW) {
    Menu--;
    cl();
    time = millis();
    if (Menu &lt; 0) { Menu = 0; }
  }  // меню кнопка ARROW DOWN
  //////////// MENU //////////////
  if (eb.click()) {
    Menu++;
    if (Menu &gt; 3) Menu = 0;
  }  // кнопка енкодера

  /////////// Громкость -79...0 дБ //////////////////
  if (Menu == 0) {
    if (eb.right() | ir.value == VOL_UP) {
      vol += 3;
      cl();
    }
    if (eb.left() | ir.value == VOL_DW) {
      vol -= 3;
      cl();
    }
    if (vol &gt; 79) { vol = 79; }
    if (vol &lt; 0) { vol = 0; }
    oled.setScale(2);
    oled.setCursorXY(4, 40);
    oled.print(&quot;VOL &quot;);
    oled.setCursorXY(85, 48);
    oled.setScale(1);
    oled.print(&quot;dB&quot;);
    oled.setCursorXY(54, 40);
    oled.setScale(2);
    if (vol &lt; 10) { oled.print(&quot; &quot;); }
    oled.print(vol);
    oled.update();
    audio();
  }
  /////  ВЧ /////
  if (Menu == 1) {
    if (eb.right() | eb.rightH() | ir.value == ARROW_RIGHT) {
      treb++;
      cl();
    }  // енкодер или кнопка &gt;&gt;&gt;&gt;&gt;&gt;
    if (eb.left() | eb.leftH() | ir.value == ARROW_LEFT) {
      treb--;
      cl();
    }  // кнопка &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;
    if (treb &gt; 7) { treb = 7; }
    if (treb &lt; -7) { treb = -7; }
    oled.setScale(2);
    oled.setCursorXY(4, 40);
    oled.print(&quot;TREB&quot;);
    oled.setCursorXY(54, 40);
    if ((treb &gt;= 0)) {
      oled.print(&quot; &quot;);
    }
    oled.print(treb);
    audio();
  }
  ////// СЧ ////
  if (Menu == 2) {
    if (eb.right() | eb.rightH() | ir.value == ARROW_RIGHT) {
      mid++;
      cl();
    }  // кнопка &gt;&gt;&gt;&gt;&gt;&gt;
    if (eb.left() | eb.leftH() | ir.value == ARROW_LEFT) {
      mid--;
      cl();
    }  // кнопка &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;
    if (mid &gt; 7) { mid = 7; }
    if (mid &lt; -7) { mid = -7; }
    oled.setScale(2);
    oled.setCursorXY(4, 40);
    oled.print(&quot;MID &quot;);
    oled.setCursorXY(54, 40);
    if ((mid &gt;= 0)) { oled.print(&quot; &quot;); }
    oled.print(mid);
    audio();
  }
  /////// НЧ //////
  if (Menu == 3) {
    if (eb.right() | eb.rightH() | ir.value == ARROW_RIGHT) {
      bass++;
      cl();
    }  // енкодер или кнопка &gt;&gt;&gt;&gt;&gt;&gt;
    if (eb.left() | eb.leftH() | ir.value == ARROW_LEFT) {
      bass--;
      cl();
    }  // кнопка &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;
    if (bass &gt; 7) { bass = 7; }
    if (bass &lt; -7) { bass = -7; }
    oled.setScale(2);
    oled.setCursorXY(4, 40);
    oled.print(&quot;BASS&quot;);
    oled.setCursorXY(54, 40);
    if ((bass &gt;= 0)) { oled.print(&quot; &quot;); }
    oled.print(bass);
    audio();
  }
  ////////////////////// КНОПКА СЕЛЕКТОРА без фиксации
  if (b0.press() | (ir.value == IN)) {
    cl();
    oled.setScale(2);
    switch (inputCH) {
      case 0:
        pt0.setInput(0);  // CD

        oled.setCursorXY(80, 8);
        oled.print(in[inputCH]);
        oled.update(80, 8, 123, 29);  //обновление фрагмента
        break;
      case 1:
        pt0.setInput(1);  // AUX
        oled.setCursorXY(80, 8);
        oled.print(in[inputCH]);
        oled.update(80, 8, 123, 29);
        break;
      case 2:
        pt0.setInput(4);  // 5.1 TEATRE
        oled.setCursorXY(80, 8);
        oled.print(in[inputCH]);
        oled.update(80, 8, 123, 29);
        break;
      default: break;
    }
    inputCH++;
    if (inputCH &gt; 2) inputCH = 0;
  }
  ///// КНОПКА EQ &quot;FUNCTION&quot;
  if (ir.value == EQ) {
    cl();
    oled.setScale(1);
    switch (tembr) {
      case 0:
        oled.setCursorXY(85, 36);
        oled.print(tmbr[tembr]);
        oled.update(85, 36, 123, 40);
        bass = 4, mid = -2;
        treb = 5;
        break;
      case 1:
        oled.setCursorXY(85, 36);
        oled.print(tmbr[tembr]);
        oled.update(85, 36, 123, 40);
        bass = -3, mid = 3;
        treb = -2;
        break;
      case 2:
        oled.setCursorXY(85, 36);
        oled.print(tmbr[tembr]);
        oled.update(85, 36, 123, 40);
        bass = 0, mid = 0;
        treb = -2;
        break;
      default: break;
    }
    tembr++;
    if (tembr &gt; 2) tembr = 0;
    audio();
  }
  // КНОПКА без фиксации 3d surround &quot;AUDIO&quot;
  if (b1.press() | (ir.value == SRND)) {
    cl();
    oled.setScale(1);
    oled.setCursorXY(102, 52);
    switch (i) {
      case 0:
        ddd = i;
        oled.print(&quot;  &quot;);
        break;
      case 1:
        ddd = i;
        oled.print(&quot;3D&quot;);
        break;
      default: break;
    }
    oled.setScale(2);
    i++;
    if (i &gt; 1) i = 0;  // triger
    audio();
  }
  //////////// mute //////////////////
  if (eb.hold() | (ir.value == MUTE)) {
    mute++;
    audio();
    cl();
  }
  if (mute &gt; 1) {
    cl();
    mute = 0;
    Menu = 0;
  }
  if (mute == 1) {
    Menu = -1;
    oled.setScale(2);
    oled.setCursorXY(4, 40);
    oled.print(&quot;MUTE  &quot;);
  }
  //////// EEPROM /////
  if ((eb.timeout(5000)) &amp;&amp; (b0.timeout(5000))) {
    EEPROM.update(0, inputCH);
    EEPROM.update(1, vol);
    EEPROM.update(2, treb);
    EEPROM.update(3, mid);
    EEPROM.update(4, bass);
    EEPROM.update(5, tembr);
  }
  delay(10);
}
// очистка буферв ИК приемника
void cl() {
  ir.value = 0;
  delay(5);
}
void audio() {
  pt1.setVol(abs(vol));            // volume (int 0...79)
  pt1.setFunc(mute, ddd, 0);  // mute,3d,тембр on/off
  pt1.setBass(bass);          // BASS    -14...0...14 dB (int -7...0...7)
  pt1.setMiddle(mid);         // MIDDLE  -14...0...14 dB (int -7...0...7)
  pt1.setTreble(treb);        // TREBLE  -14...0...14 dB (int -7...0...7)
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Alex8674]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=3411</uri>
			</author>
			<updated>2025-05-02T06:05:56Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=11796#p11796</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: pt2322 pt2323]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=9080#p9080" />
			<content type="html"><![CDATA[<p>привет брат помогите пожалуйста когда отключаю звук есть а когда включаю звука нет </p><div class="codebox"><pre><code>#define IR_1 0x33B8A05F // Кнопка вверх
#define IR_2 0x33B8609F // Кнопка вниз
#define IR_3 0x33B810EF // Кнопка &gt;
#define IR_4 0x33B8E01F // Кнопка &lt;
#define IR_5 0x33B850AF // Кнопка IN
#define IR_6 0x33B844BB // Кнопка SET
#define IR_7 0x33B8946B // Кнопка MUTE
#define IR_8 0x33B800FF // Кнопка STANDBY (POWER)
 
#define BRIG_H 200      // Яркость 0...255 POWER ON
#define BRIG_L 50       // Яркость 0...255 POWER OFF
 
#include &lt;PT2322.h&gt;
#include &lt;PT2323.h&gt;            // http://rcl-radio.ru/wp-content/uploads/2019/07/TDA7719.zip
#include &lt;Wire.h&gt;
#include &lt;LiquidCrystal_I2C.h&gt;  // http://forum.rcl-radio.ru/misc.php?action=pan_download&amp;item=45&amp;download=1
#include &lt;Encoder.h&gt;            // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip    
#include &lt;EEPROM.h&gt;
#include &lt;MsTimer2.h&gt;           // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip       
#include &lt;boarddefs.h&gt;          // входит в состав библиотеки IRremote
#include &lt;IRremote.h&gt;           // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip
#include &lt;DS3231.h&gt;             // http://rcl-radio.ru/wp-content/uploads/2022/10/DS3231.zip
 PT2322 pt; PT2323 pt0;
 DS3231 clock;RTCDateTime DateTime;
 LiquidCrystal_I2C lcd(0x27,20,4);  // Устанавливаем дисплей
 IRrecv irrecv(11); // указываем вывод модуля IR приемника
 Encoder myEnc(9, 8);// DT, CLK
 decode_results ir; 
 int in,ddd,loun_f,vol_att,treb,treb_f,mid,mid_q,bass,bass_q,sub_f,faza=0,mid_f,bass_f;
 int vol,attfl,attfr,attcn,attsub,atttl,atttr;
 long time0,oldPosition  = -999,newPosition,times1;
 int menu0,menu,temp0,vol_d,bass_d,treb_d,par,z_old,z1,z0,z,menu1,in_time;
 byte q,gr1,gr2,w,w2[4],www,power,in_x,mute=1;
 int hour,minut,secon,mid_d,menu2,gain0,gain1,gain2,gain3,date,mont,year,korr;
 byte mesto2[8]={0,10,0,10,0,10,0,10};
 byte mesto3[8]={0,0,1,1,2,2,3,3};
 bool power_off=1;
 String dn[]={&quot;   &quot;,&quot;MON&quot;,&quot;TUE&quot;,&quot;WED&quot;,&quot;THU&quot;,&quot;FRI&quot;,&quot;SAT&quot;,&quot;SUN&quot;};
 byte wesk,zast;
 
void setup() {
  irrecv.enableIRIn();lcd.init();lcd.backlight();clock.begin();Serial.begin(9600);
  pinMode(10,INPUT);  // МЕНЮ КНОПКА SW энкодера
  pinMode(2,INPUT_PULLUP);   // КНОПКА SET
  pinMode(3,INPUT_PULLUP);   // КНОПКА IN
  pinMode(4,INPUT_PULLUP);   // КНОПКА MUTE
  pinMode(5,INPUT_PULLUP);   // КНОПКА STANDBY
  pinMode(7,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ STANDBY
  pinMode(6,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ ПОДСВЕТКОЙ
  pinMode(12,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ Bluetooth
  analogWrite(6, BRIG_H);// больше 200 не делать
  lcd.setCursor(3,1);lcd.print(&quot;Sound Processor&quot;);lcd.setCursor(7,2);lcd.print(&quot;TDA7719&quot;); delay(2000);lcd.clear();
  MsTimer2::set(4, to_Timer);MsTimer2::start();
  // clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
  if(EEPROM.read(100)!=0){for(int i=0;i&lt;101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении  
  vol = EEPROM.read(0)-79;in = EEPROM.read(1);bass = EEPROM.read(2)-7;mid = EEPROM.read(3)-7;treb = EEPROM.read(4)-7;
  attfl = EEPROM.read(5)-14;attcn = EEPROM.read(7)-14;attsub = EEPROM.read(8)-14;ddd  = EEPROM.read(10);
  attfr = EEPROM.read(11)-14;atttl = EEPROM.read(12)-14;atttr = EEPROM.read(13)-14;
 // switch(in)
  {
    // case 0: gain0 = gain1;break;
    // case 1: gain0 = gain2;break;
    // case 2: gain0 = gain3;break;
     }
  w2_arr();audio();audio_in();cl();
}
 
void to_Timer(){newPosition = myEnc.read()/4;}
 
void loop() { 
 DateTime = clock.getDateTime();hour = DateTime.hour;minut = DateTime.minute;secon = DateTime.second;
 date = DateTime.day;mont = DateTime.month;year = DateTime.year;wesk = DateTime.dayOfWeek;

   /////////////////////////////// УПРАВЛЕНИЕ //////////////////////////////////////////////
  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;}// запрет нажатий не активных кнопок пульта  

  if((digitalRead(10)==LOW||digitalRead(2)==LOW||digitalRead(3)==LOW||digitalRead(4)==LOW||digitalRead(5)==LOW)&amp;&amp; zast==1){cl();w=0;times1=millis();zast=0;menu0=0;menu=0;menu1=0;menu2=0;in_x=0;w2_arr();} 
  if((ir.value==IR_1||ir.value==IR_2||ir.value==IR_3||ir.value==IR_4||ir.value==IR_5||ir.value==IR_6||ir.value==IR_7||ir.value==IR_8)&amp;&amp;zast==1){
  cl();w=0;times1=millis();zast=0;menu0=0;menu=0;menu1=0;menu2=0;in_x=0;w2_arr();} 
 
  if(power==0){
    if(mute==1){
  if(digitalRead(10)==LOW&amp;&amp;menu0==0){menu++;delay(200);time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu&gt;3){menu=0;}}// меню 0
  if(digitalRead(10)==LOW&amp;&amp;menu0==1){menu1++;delay(200);time0=millis();times1=millis();zast=0;in_x=0;w=1;if(menu1&gt;7){menu1=0;}}// меню 1
  if(digitalRead(10)==LOW&amp;&amp;menu0==2){menu2++;delay(200);time0=millis();times1=millis();zast=0;in_x=0;w=1;if(menu2&gt;5){menu2=0;}}// меню 2
 
  if(ir.value==IR_2&amp;&amp;menu0==0){menu++;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu&gt;3){menu=0;}}//меню 0
  if(ir.value==IR_1&amp;&amp;menu0==0){menu--;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu&lt;0){menu=3;}}//меню 0
 
  if(ir.value==IR_2&amp;&amp;menu0==1){menu1++;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu1&gt;7){menu1=0;}}//меню 1
  if(ir.value==IR_1&amp;&amp;menu0==1){menu1--;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu1&lt;0){menu1=7;}}//меню 1
 
  if(ir.value==IR_2&amp;&amp;menu0==2){menu2++;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu2&gt;5){menu2=0;}}//меню 2
  if(ir.value==IR_1&amp;&amp;menu0==2){menu2--;gr1=0;gr2=0;cl1();time0=millis();times1=millis();zast=0;in_x=0;w=1;w2_arr();if(menu2&lt;0){menu2=5;}}//меню 2
 
  if(ir.value==IR_6||digitalRead(2)==LOW){menu0++;if(menu0&gt;2){menu0=0;}cl();in_x=0;w2_arr();time0=millis();times1=millis();zast=0;w=1;lcd.setCursor(5,1);
     lcd.print(&quot;SETTING_&quot;);lcd.print(menu0);delay(500);lcd.clear();} 
 
  if(ir.value==IR_5||digitalRead(3)==LOW){in++;cl();time0=millis();times1=millis();zast=0;in_x=1;w=1;www=1;menu0=100;menu=100;if(in&gt;2){in=0;}}// IN   
    } // mute off
  if((ir.value==IR_7||digitalRead(4)==LOW)&amp;&amp;mute==1&amp;&amp;power==0){zast=0;mute=0;in_x=0;mute=0;menu0=100;cl();w=1;w2_arr();lcd.setCursor(8,1);lcd.print(&quot;MUTE&quot;);audio();delay(300);}// mute on
  if((ir.value==IR_7||digitalRead(4)==LOW)&amp;&amp;mute==0&amp;&amp;power==0){mute=1;cl();time0=millis();times1=millis();zast=0;w=1;w2_arr();menu0=0;menu=0;myEnc.write(0);audio();}// mute off
  }// power on
 
  if((ir.value==IR_8||digitalRead(5)==LOW||power_off==1)&amp;&amp;power==0){times1=millis();zast=0;power_off=0;power=1;in_x=0;mute=0;cl();audio();lcd.setCursor(5,1);lcd.print(&quot;POWER  OFF&quot;);menu0=100;delay(3000);analogWrite(6,BRIG_L);}// power off
  if((ir.value==IR_8||digitalRead(5)==LOW)&amp;&amp;power==1){times1=millis();zast=0;power=0;analogWrite(6, BRIG_H);cl();lcd.setCursor(5,1);lcd.print(&quot;POWER   ON &quot;);w=1;w2_arr();menu0=0;myEnc.write(0);mute=1;audio();delay(3000);cl();}// power on

if(power==0){digitalWrite(7,HIGH);if(in==2){digitalWrite(12,HIGH);}else{digitalWrite(12,LOW);}}
if(power==1){digitalWrite(7,LOW);digitalWrite(12,LOW);}
 
if(power==0&amp;&amp;zast==0){
   byte a1[8] = {0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
   byte a2[8] = {0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
   byte a3[8] = {0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000}; 
   byte a4[8] = {0b10000,0b11000,0b11100,0b11110,0b11100,0b11000,0b10000,0b00000}; //&gt;
   byte a5[8] = {0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000};
   lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);lcd.createChar(3,a4);lcd.createChar(4,a5);
  }
  if(power==1||zast==1){
      byte v1[8] = {7,7,7,7,7,7,7,7};
      byte v2[8] = {7,7,0, 0, 0, 0, 0, 0};      
      byte v3[8] = { 0, 0, 0, 0, 0,0,31,31};
      byte v4[8] = {31,31, 0, 0, 0, 0,31,31};
      byte v5[8] = { 28, 28, 0, 0, 0, 0, 28, 28};
      byte v6[8] = {28,28,28,28,28,28,28,28};
      byte v7[8] = { 0, 0, 0, 0, 0, 0,7,7};
      byte v8[8] = { 31, 31,0,0,0,0,0, 0};
   byte a[6];
   byte i0,d1,d2,d3,d4,d5,d6,e1,e2,e3;
  lcd.createChar(1, v1);lcd.createChar(2, v2);lcd.createChar(3, v3);lcd.createChar(4, v4);lcd.createChar(5, v5);lcd.createChar(6, v6);lcd.createChar(7, v7);lcd.createChar(8, v8);
 
     a[0]=DateTime.hour/10;
     a[1]=DateTime.hour%10;
     a[2]=DateTime.minute/10;
     a[3]=DateTime.minute%10;
     a[4]=DateTime.second/10;
     a[5]=DateTime.second%10;
 
 for(int i=0;i&lt;6;i++){
      switch(i){
        case 0: e1=0,e2=1,e3=2;break;
        case 1: e1=3,e2=4,e3=5;break;
        case 2: e1=7,e2=8,e3=9;break;
        case 3: e1=10,e2=11,e3=12;break;
        case 4: e1=14,e2=15,e3=16;break;
        case 5: e1=17,e2=18,e3=19;break;
        }
      switch(a[i]){
        case 0: d1=1,d2=8,d3=6,d4=1,d5=3,d6=6;break;
        case 1: d1=32,d2=2,d3=6,d4=32,d5=32,d6=6;break;
        case 2: d1=2,d2=8,d3=6,d4=1,d5=4,d6=5;break;
        case 3: d1=2,d2=4,d3=6,d4=7,d5=3,d6=6;break;
        case 4: d1=1,d2=3,d3=6,d4=32,d5=32,d6=6;break;
        case 5: d1=1,d2=4,d3=5,d4=7,d5=3,d6=6;break;
        case 6: d1=1,d2=4,d3=5,d4=1,d5=3,d6=6;break;
        case 7: d1=1,d2=8,d3=6,d4=32,d5=32,d6=6;break;
        case 8: d1=1,d2=4,d3=6,d4=1,d5=3,d6=6;break;
        case 9: d1=1,d2=4,d3=6,d4=7,d5=3,d6=6;break;
    }
 
      lcd.setCursor(e1,0);lcd.write((uint8_t)d1);lcd.setCursor(e2,0);lcd.write((uint8_t)d2);lcd.setCursor(e3,0);lcd.write((uint8_t)d3);
      lcd.setCursor(e1,1);lcd.write((uint8_t)d4);lcd.setCursor(e2,1);lcd.write((uint8_t)d5);lcd.setCursor(e3,1);lcd.write((uint8_t)d6);
  }
  lcd.setCursor(6,0);lcd.print(&quot;.&quot;);lcd.setCursor(13,0);lcd.print(&quot;.&quot;);lcd.setCursor(6,1);lcd.print(&quot;.&quot;);lcd.setCursor(13,1);lcd.print(&quot;.&quot;);
  
  lcd.setCursor(0,3);lcd.print(date/10);lcd.print(date%10),lcd.print(&quot;.&quot;);lcd.print(mont/10);lcd.print(mont%10);lcd.print(&quot;.&quot;);lcd.print(year);lcd.print(&quot; &quot;);
  lcd.print(clock.readTemperature(),1);lcd.print((char)223);lcd.print(&quot; &quot;);
  lcd.print(dn[wesk]); 
  
  //lcd.setCursor(5,3);lcd.print(&quot;POWER  OFF&quot;);
  
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(2)==LOW){korr++;if(korr&gt;6){korr=0;}delay(100);} // SET
 
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==1){hour++;if(hour&gt;23){hour=23;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);} // IN
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==1){hour--;if(hour&lt;0){hour=0;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}  // MUTE

  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==2){minut++;if(minut&gt;59){minut=59;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==2){minut--;if(minut&lt;0){minut=0;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==3){secon=0;clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==3){secon=0;clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}

  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==4){date++;if(date&gt;31){date=31;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==4){date--;if(date&lt;1){date=1;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}

  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==5){mont++;if(mont&gt;12){mont=12;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==5){mont--;if(mont&lt;1){mont=1;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}

  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==6){year++;if(year&gt;2050){year=2050;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==6){year--;if(year&lt;2022){year=2022;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  
  lcd.setCursor(0,2);
  switch(korr){
    case 0 : lcd.print(&quot;                &quot;);lcd.print(&quot;    &quot;);break;
    case 1 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;HOUR&quot;);break;
    case 2 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;MIN &quot;);break;
    case 3 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;SEC &quot;);break;
    case 4 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;DATE&quot;);break;
    case 5 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;MON &quot;);break;
    case 6 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;YEAR&quot;);break;
    }
  } 
/////////////////////////////// MENU0 = VOLUME TERBLE BASS MIDDLE ///////////////////////////////////////////////////////////////////////
  if(menu0==0){ 
    switch(menu){
      case 0: temp0 = vol;q=0;break;
      case 1: temp0 = bass;q=1;break;
      case 2: temp0 = mid;q=2;break;
      case 3: temp0 = treb;q=3;break;
      }
 
     if(ir.value==IR_3){temp0++;gr1=1;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;w2[q]=1;www=1;}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){temp0++;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;w2[q]=1;www=1;}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){temp0--;gr1=0;gr2=1;cl1();time0=millis();times1=millis();zast=0;w=1;w2[q]=1;www=1;}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){temp0--;gr1=0;cl1();time0=millis();times1=millis();zast=0;w=1;w2[q]=1;www=1;}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;   
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;2){newPosition=2;}if(newPosition&lt;-2){newPosition=-2;}
     temp0=temp0+newPosition;myEnc.write(0);newPosition=0;time0=millis();times1=millis();zast=0;w=1;w2[q]=1;www=1;} 
 
 
     switch(menu){
      case 0: vol = temp0;vol_func();break;
      case 1: bass = temp0;bass_func();break;
      case 2: mid = temp0;mid_func();break;
      case 3: treb = temp0;treb_func();break;
      }
 
   au();
   for(int i=0;i&lt;4;i++){if(menu==i){lcd.setCursor(0,i);lcd.write((uint8_t)3);}else{lcd.setCursor(0,i);lcd.print(&quot; &quot;);}}
   lcd.setCursor(1,0);lcd.print(&quot;VOL(&quot;);lcd.print(in+1);lcd.print(&quot;) &quot;);if(vol&gt;=0){lcd.print(&quot; &quot;);}lcd.print(-79+vol);lcd.print(&quot; &quot;);vol_d=map(vol,-63,0,1,24);
   lcd.setCursor(1,1);lcd.print(&quot;BASS   &quot;);if(bass&gt;=0){lcd.print(&quot; &quot;);}lcd.print(bass);lcd.print(&quot; &quot;);bass_d=map(bass,-15,15,1,24);
   lcd.setCursor(1,2);lcd.print(&quot;MIDDLE &quot;);if(mid&gt;=0){lcd.print(&quot; &quot;);}lcd.print(mid);lcd.print(&quot; &quot;);mid_d=map(mid,-15,15,1,24);
   lcd.setCursor(1,3);lcd.print(&quot;TREBLE &quot;);if(treb&gt;=0){lcd.print(&quot; &quot;);}lcd.print(treb);lcd.print(&quot; &quot;);treb_d=map(treb,-15,15,1,24);
 
 
   for(int n=0;n&lt;4;n++){if(w2[n]==1){
   switch(n){
    case 0: par = vol_d;break;
    case 1: par = bass_d;break;
    case 2: par = mid_d;break;
    case 3: par = treb_d;break; 
    } 
 
   for(z=0,z0=0,z1=0;z&lt;=par;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+12,n);lcd.write((uint8_t)0);lcd.setCursor(z0+1+12,n);Serial.println(z0);z_old=7-par/3;while(z_old&gt;0){z_old=z_old-1;lcd.write((uint8_t)4);}}}
   if(z1==3){lcd.setCursor(z0+12,n);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+12,n);lcd.write((uint8_t)2);}w2[n]=0;}
   }}// menu0 = 0
///////////////////////////////////////////////////////////////////////////////////////////////
 
///////////////////////////////////////////////////////////////////////////////////////////////
 if(menu0==1){
     switch(menu1){
      case 0: temp0 = atttl;break;
      case 1: temp0 = atttr;break;
      case 2: temp0 = attfl;break;
      case 3: temp0 = attfr;break;
      case 4: temp0 = attsub;break;
      case 5: temp0 = attcn;break;
      case 6: temp0 = ddd;break;
      case 7: temp0 = loun_f;break;
      }
 
     if(ir.value==IR_3){temp0++;gr1=1;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){temp0++;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){temp0--;gr1=0;gr2=1;cl1();time0=millis();times1=millis();zast=0;;w=1;www=1;}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){temp0--;gr1=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;     
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
     temp0=temp0+newPosition;myEnc.write(0);newPosition=0;time0=millis();times1=millis();zast=0;w=1;www=1;} 
 
     switch(menu1){
      case 0: atttl = temp0;atttl_func();break;
      case 1: atttr = temp0;atttr_func();break;
      case 2: attfl = temp0;attfl_func();break;
      case 3: attfr = temp0;attfr_func();break;      
      case 4: attsub  = temp0;attsub_func();break;
      case 5: attcn  = temp0;attcn_func();break;
      case 6: ddd  = temp0;ddd_func();break;
      case 7: loun_f  = temp0;loun_f_func();break;
      }
 
  au();
  for(int i=0;i&lt;8;i++){if(menu1==i){lcd.setCursor(mesto2[i],mesto3[i]);lcd.write((uint8_t)3);}else{lcd.setCursor(mesto2[i],mesto3[i]);lcd.print(&quot; &quot;);}}
 
  lcd.setCursor(1,0);lcd.print(&quot;ATTL &quot;);lcd.print(atttl);lcd.print(&quot; &quot;);lcd.setCursor(11,0);lcd.print(&quot;ATTR &quot;);lcd.print(atttr);lcd.print(&quot; &quot;);
  lcd.setCursor(1,1);lcd.print(&quot;AT_FL &quot;);lcd.print(attfl);lcd.print(&quot; &quot;);lcd.setCursor(11,1);lcd.print(&quot;AT_FR &quot;);lcd.print(attfr);lcd.print(&quot; &quot;);
  lcd.setCursor(1,2);lcd.print(&quot;ATSUB &quot;);lcd.print(attsub);lcd.print(&quot; &quot;);lcd.setCursor(11,2);lcd.print(&quot;AT_CN &quot;);lcd.print(attcn);lcd.print(&quot; &quot;);
  lcd.setCursor(1,3);lcd.print(&quot;3D    &quot;);lcd.print(abs(ddd));lcd.print(&quot; &quot;);lcd.setCursor(11,3);
  switch(loun_f){
    case 0: lcd.print(&quot;FLAT   &quot;);break;
    case 1: lcd.print(&quot;400  Hz&quot;);break;
    case 2: lcd.print(&quot;800  Hz&quot;);break;
    case 3: lcd.print(&quot;2.4 kHz&quot;);break;}
 
 } // menu0 = 1
 
 
///////////////////////////////////////////////////////////////////////////////////////////////
 
 if(menu0==2){
     switch(menu2){
      case 0: temp0 = bass_f;break;
      case 1: temp0 = mid_f;break;
      case 2: temp0 = treb_f;break;
      case 3: temp0 = sub_f;break;
      case 4: temp0 = bass_q;break;
      case 5: temp0 = mid_q;break;
      }
 
     if(ir.value==IR_3){temp0++;gr1=1;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){temp0++;gr2=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){temp0--;gr1=0;gr2=1;cl1();time0=millis();times1=millis();zast=0;;w=1;www=1;}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){temp0--;gr1=0;cl1();time0=millis();times1=millis();zast=0;w=1;www=1;}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;     
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
     temp0=temp0+newPosition;myEnc.write(0);newPosition=0;time0=millis();times1=millis();zast=0;w=1;www=1;} 
 
     switch(menu2){
//      case 0: bass_f = temp0;bass_f_func();break;
     // case 1: mid_f = temp0;mid_f_func();break;
     // case 2: treb_f = temp0;treb_f_func();break;
     // case 3: sub_f = temp0;sub_f_func();break;      
    //  case 4: bass_q  = temp0;bass_q_func();break;
    //  case 5: mid_q  = temp0;mid_q_func();break;
      }
 
  au();
  for(int i=0;i&lt;6;i++){if(menu2==i){lcd.setCursor(mesto2[i],mesto3[i]);lcd.write((uint8_t)3);}else{lcd.setCursor(mesto2[i],mesto3[i]);lcd.print(&quot; &quot;);}}
 
  lcd.setCursor(1,0);lcd.print(&quot;BF &quot;);
    switch(bass_f){
    case 0: lcd.print(&quot; 60 Hz&quot;);break;
    case 1: lcd.print(&quot; 80 Hz&quot;);break;
    case 2: lcd.print(&quot;100 Hz&quot;);break;
    case 3: lcd.print(&quot;200 Hz&quot;);break;}
  lcd.setCursor(11,0);lcd.print(&quot;MF &quot;);
    switch(mid_f){
      case 0: lcd.print(&quot;0.5kHz&quot;);break;
      case 1: lcd.print(&quot;1.0kHz&quot;);break;
      case 2: lcd.print(&quot;1.5kHz&quot;);break;
      case 3: lcd.print(&quot;2.5kHz&quot;);break;}
 
  lcd.setCursor(1,1);lcd.print(&quot;TF&quot;);
    switch(treb_f){
      case 0: lcd.print(&quot;10.0kHz&quot;);break;
      case 1: lcd.print(&quot;12.5kHz&quot;);break;
      case 2: lcd.print(&quot;15.0kHz&quot;);break;
      case 3: lcd.print(&quot;17.5kHz&quot;);break;}
 
  lcd.setCursor(11,1);lcd.print(&quot;SF &quot;);
    switch(sub_f){
      case 0: lcd.print(&quot;FLAT  &quot;);break;
      case 1: lcd.print(&quot;400 Hz&quot;);break;
      case 2: lcd.print(&quot;800 Hz&quot;);break;
      case 3: lcd.print(&quot;2.4kHz&quot;);break;}
 
  lcd.setCursor(1,2);lcd.print(&quot;BQ &quot;);
    switch(bass_q){
      case 0: lcd.print(&quot;1.0 &quot;);break;
      case 1: lcd.print(&quot;1.25&quot;);break;
      case 2: lcd.print(&quot;1.5 &quot;);break;
      case 3: lcd.print(&quot;2.0 &quot;);break;}
 
  lcd.setCursor(11,2);lcd.print(&quot;MQ &quot;);
    switch(mid_q){
      case 0: lcd.print(&quot;0.5 &quot;);break;
      case 1: lcd.print(&quot;0.75&quot;);break;
      case 2: lcd.print(&quot;1.0 &quot;);break;
      case 3: lcd.print(&quot;1.25&quot;);break;}
 
 } // menu0 = 2 
 
 
////////////////////////// GAIN IN /////////////////////////////////////////////////////////////////////////////////////
if(in_x==1){ menu0=100;
   switch(in){
     case 0: gain0 = gain1;break;
     case 1: gain0 = gain2;break;
     case 2: gain0 = gain3;break;
     }
 
     if(ir.value==IR_3){gain0++;gr1=1;gr2=0;cl1();time0=millis();times1=millis();zast=0;www=1;w=1;gain_func();}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){gain0++;gr2=0;cl1();time0=millis();times1=millis();zast=0;www=1;w=1;gain_func();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){gain0--;gr1=0;gr2=1;cl1();time0=millis();times1=millis();zast=0;www=1;w=1;gain_func();}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){gain0--;gr1=0;cl1();time0=millis();times1=millis();zast=0;www=1;w=1;gain_func();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;  
 
    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;time0=millis();times1=millis();zast=0;www=1;w=1;gain_func();} 
 
   switch(in){
     case 0: gain1 = gain0;break;
     case 1: gain2 = gain0;break;
     case 2: gain3 = gain0;break;
     }
 
  au();
  lcd.setCursor(7,1);lcd.print(&quot;INPUT &quot;);lcd.print(in+1);lcd.setCursor(5,2);lcd.print(&quot;GAIN &quot;);lcd.print(gain0);lcd.print(&quot; &quot;);lcd.setCursor(14,2);lcd.print(&quot;dB &quot;);
   }
 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(in_x==1){in_time=3000;}else{in_time=10000;}
if(millis()-time0&gt;in_time&amp;&amp;w==1&amp;&amp;mute==1&amp;&amp;power==0&amp;&amp;zast==0){if(menu0==1){cl();}w=0;if(menu0!=0){cl();}menu0=0;menu=0;menu1=0;menu2=0;in_x=0;w2_arr();
    EEPROM.update(0,vol+79);EEPROM.update(1,in);EEPROM.update(2,bass+7);EEPROM.update(3,mid+7);EEPROM.update(4,treb+7);
     EEPROM.update(5,attfl+14);EEPROM.update(7,attcn+14);EEPROM.update(8,attsub+14);EEPROM.update(9,ddd);
     EEPROM.update(11,attfr+14);EEPROM.update(12,atttl+14);EEPROM.update(13,atttr+14);
   }
if(millis()-times1&gt;60000&amp;&amp;zast==0&amp;&amp;mute==1){zast=1;menu0=100;}   
if(w==1&amp;&amp;zast==1){cl2();w=0;times1=millis();zast=0;menu0=0;menu=0;menu1=0;menu2=0;in_x=0;w2_arr();}  

}
 
 
void gain_func(){if(gain0&lt;-15){gain0=-15;}if(gain0&gt;15){gain0=15;}}
void w2_arr(){w2[0]=1;w2[1]=1;w2[2]=1;w2[3]=1;}
void loun_f_func(){if(loun_f&gt;3){loun_f=3;}if(loun_f&lt;0){loun_f=0;}}
void ddd_func(){if(ddd&lt;0){ddd=0;}if(ddd&gt;1){ddd=1;}}
void atttl_func(){if(atttl&gt;14){atttl=14;}if(atttl&lt;0){atttl=0;}}
void atttr_func(){if(atttr&gt;14){atttr=14;}if(atttr&lt;0){atttr=0;}}
void attfl_func(){if(attfl&gt;14){attfl=14;}if(attfl&lt;0){attfl=0;}}
void attfr_func(){if(attfr&gt;14){attfr=14;}if(attfr&lt;0){attfr=0;}}
void attsub_func(){if(attsub&gt;14){attsub=14;}if(attsub&lt;0){attsub=0;}}
void attcn_func(){if(attcn&gt;14){attcn=14;}if(attcn&lt;0){attcn=0;}}
void vol_func(){if(vol&lt;0){vol=0;}if(vol&gt;79){vol=79;}}
void treb_func(){if(treb&lt;-15){treb=-15;}if(treb&gt;15){treb=15;}}
void bass_func(){if(bass&lt;-15){bass=-15;}if(bass&gt;15){bass=15;}}
void mid_func(){if(mid&lt;-15){mid=-15;}if(mid&gt;15){mid=15;}}
void cl(){ir.value=0;delay(300);lcd.clear();}
void cl1(){ir.value=0;delay(50);}  
void cl2(){ir.value=0;lcd.clear();}  
void au(){if(www==1){audio();www=0;}}
//void bass_f_func(){if(bass_f&gt;3){bass_f=3;}if(bass_f&lt;0){bass_f=0;}}
//void mid_f_func(){if(mid_f&gt;3){mid_f=3;}if(mid_f&lt;0){mid_f=0;}}
//void treb_f_func(){if(treb_f&gt;3){treb_f=3;}if(treb_f&lt;0){treb_f=0;}}
//void sub_f_func(){if(sub_f&gt;3){sub_f=3;}if(sub_f&lt;0){sub_f=0;}}
//void bass_q_func(){if(bass_q&gt;3){bass_q=3;}if(bass_q&lt;0){bass_q=0;}}
//void mid_q_func(){if(mid_q&gt;3){mid_q=3;}if(mid_q&lt;0){mid_q=0;}}
 
 void audio_in(){
  pt0.setInput(in); 
  pt0.setMute(0,0,0,0,0,0,0); 
  pt0.setFeature(1,1); 
}
 void audio(){
  pt.setFront_lk_att(abs(attfl));// att front L
  pt.setFront_rk_att(abs(attfr));// att front R
  pt.setCenter_att(abs(attcn));  // att center
  pt.setRear_lk_att(abs(atttl)); // att rear L
  pt.setRear_rk_att(abs(atttr)); // att rear R
  pt.setSub_att(abs(attsub));     // att sub
  pt.setFunc(mute,ddd,0); // mute,3d,тембр on/off
  pt.setBass(bass);            // BASS    -14...0...14 dB (int -7...0...7)
  pt.setMiddle(mid);          // MIDDLE  -14...0...14 dB (int -7...0...7)
  pt.setTreble(treb);          // TREBLE  -14...0...14 dB (int -7...0...7)
  pt.setVol(abs(vol)); // -79...0
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[shuhrat.ps]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1841</uri>
			</author>
			<updated>2023-12-24T15:02:46Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=9080#p9080</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: pt2322 pt2323]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8998#p8998" />
			<content type="html"><![CDATA[<p>привет брат помогите мене написать скетч я не могу добавить остальные функцию и не сохраняет настройку </p><div class="codebox"><pre><code>#define IR_1 0x2FDD02F // Кнопка вверх
#define IR_2 0x2FD32CD // Кнопка вниз
#define IR_3 0x2FD906F // Кнопка &gt;
#define IR_4 0x2FDF20D // Кнопка &lt;
#define IR_5 0x2FD708F // Кнопка IN
#define IR_6 0x2FD6A95 // Кнопка SET
#define IR_7 0x2FD00FF // Кнопка MUTE
#define IR_8 0x2FDB24D // Кнопка STANDBY (POWER)

#include &lt;Wire.h&gt; 
#include &lt;PT2322.h&gt;
#include &lt;PT2323.h&gt;
#include &lt;Wire.h&gt; 
#include &lt;LiquidCrystal_I2C.h&gt; 
#include &lt;Encoder.h&gt;            
#include &lt;EEPROM.h&gt;
#include &lt;MsTimer2.h&gt;           
#include &lt;boarddefs.h&gt;
#include &lt;IRremote.h&gt;  
#include &lt;DS3231.h&gt;
   DS3231 clock;RTCDateTime DateTime;
   PT2322 pt; PT2323 pt0; 
   LiquidCrystal_I2C lcd(0x27,20,4);  // Устанавливаем дисплей
   IRrecv irrecv(12); // указываем вывод модуля IR приемника
   Encoder myEnc(9, 8);// DT, CLK
   decode_results ir; 
        int menu,menu0,menu1,times1,temp0,in_time,par,year,date,mont,hour,minut,secon,korr,z_old,gain0;
        int brig0,brig1;
        int vol,vol_d,in,bass,bass_d,mid,mid_d,treb,treb_d,attfl,attfl_d,attcn,attcn_d,attsub,attsub_d,ddd,tembro,x,attfr,attfr_d,atttl,atttl_d,atttr,atttr_d;
        int g1,g2,inn; 
        String dn[]={&quot;   &quot;,&quot;DUWANBA&quot;,&quot;SEWANBA&quot;,&quot;CHORWANBA&quot;,&quot;PAYWANBA&quot;,&quot;JUMA&quot;,&quot;WANBA&quot;,&quot;YAKWANBA&quot;};
        byte wesk;
        
   
 
      byte w2[4],z,z0,z1,n,q,gr1,gr2,www,i,w,mute,power,in_x,save,i1;
      unsigned long time0,oldPosition  = -999,newPosition,times_in;
      byte mesto2[5]={0,11,6,0,11};
      byte mesto3[5]={0,0,1,3,3};


void setup() {
  irrecv.enableIRIn();lcd.init();lcd.backlight();clock.begin();Serial.begin(9600);
  pinMode(10,INPUT);  // МЕНЮ КНОПКА SW энкодера
  pinMode(2,INPUT_PULLUP);   // КНОПКА SET
  pinMode(3,INPUT_PULLUP);   // КНОПКА IN
  pinMode(4,INPUT_PULLUP);   // КНОПКА MUTE
  pinMode(5,INPUT_PULLUP);   // КНОПКА STANDBY
  pinMode(7,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ STANDBY
  pinMode(6,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ ПОДСВЕТКОЙ
  analogWrite(6, 200);// больше 200 не делать
  lcd.setCursor(1,1);lcd.print(&quot;Sound Processor&quot;);lcd.setCursor(1,2);lcd.print(&quot;PT2314&quot;); delay(2000);lcd.clear();
  MsTimer2::set(3, to_Timer);MsTimer2::start();
  //  clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
  if(EEPROM.read(100)!=0){for(int i=0;i&lt;101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении  
   vol = EEPROM.read(0)-79;in = EEPROM.read(1);bass = EEPROM.read(2)-7;mid = EEPROM.read(3)-7;treb = EEPROM.read(4)-7;
  attfl = EEPROM.read(5)-14;attcn = EEPROM.read(7)-14;attsub = EEPROM.read(8)-14;ddd = EEPROM.read(9);tembro = EEPROM.read(10);
  attfr = EEPROM.read(11)-14;atttl = EEPROM.read(12)-14;atttr = EEPROM.read(13)-14;brig0 = EEPROM.read(14);brig1 = EEPROM.read(15);
  audio();audio_in();
  analogWrite(6, 25*brig0);
}
void to_Timer(){newPosition = myEnc.read()/4;}  

void loop() {
   DateTime = clock.getDateTime();hour = DateTime.hour;minut = DateTime.minute;secon = DateTime.second;
 date = DateTime.day;mont = DateTime.month;year = DateTime.year;wesk = DateTime.dayOfWeek;

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

{ 
 if(digitalRead(10)==LOW&amp;&amp;menu0==0){menu++;delay(200);time0=millis();times1=millis();in_x=0;w=1;w2_arr();if(menu&gt;3){menu=0;}}// меню 0
  if(digitalRead(10)==LOW&amp;&amp;menu0==1){menu1++;delay(200);time0=millis();times1=millis();in_x=0;w=1;if(menu1&gt;4){menu1=0;}}// меню 1
 
  if(ir.value==IR_2&amp;&amp;menu0==0){menu++;gr1=0;gr2=0;cl1();time0=millis();times1=millis();in_x=0;w=1;w2_arr();if(menu&gt;3){menu=0;}}//меню 0
  if(ir.value==IR_1&amp;&amp;menu0==0){menu--;gr1=0;gr2=0;cl1();time0=millis();times1=millis();in_x=0;w=1;w2_arr();if(menu&lt;0){menu=3;}}//меню 0
 
  if(ir.value==IR_2&amp;&amp;menu0==1){menu1++;gr1=0;gr2=0;cl1();time0=millis();times1=millis();in_x=0;w=1;w2_arr();if(menu1&gt;4){menu1=0;}}//меню 1
  if(ir.value==IR_1&amp;&amp;menu0==1){menu1--;gr1=0;gr2=0;cl1();time0=millis();times1=millis();in_x=0;w=1;w2_arr();if(menu1&lt;0){menu1=4;}}//меню 1
    
  if(digitalRead(10)==LOW&amp;&amp;menu0==0){menu++;delay(200);time0=millis();w=1;w2_arr();if(menu&gt;2){menu=0;}}// меню 0
  if(digitalRead(10)==LOW&amp;&amp;menu0==1){menu1++;delay(200);time0=millis();w=1;if(menu1&gt;4){menu1=0;}}// меню 1

  if((ir.value==IR_6||digitalRead(2)==LOW)&amp;&amp;menu0==0){menu0=1 ;cl();time0=millis();w=1;lcd.setCursor(6,1);lcd.print(&quot;SETTING&quot;); delay(300);lcd.clear();}
  if((ir.value==IR_6||digitalRead(2)==LOW)&amp;&amp;menu0==1){menu0=0;menu=0;cl();w2_arr();time0=millis();w=1;lcd.setCursor(8,1);lcd.print(&quot;MENU&quot;); delay(300);lcd.clear();}
  if(ir.value==IR_5||digitalRead(3)==LOW||inn==1){in++;if(in&gt;4){in=0;}audio_in();cl1();lcd.setCursor(0,3);delay(500);time0=millis();w=1;inn=0;}// inIN
  }
  if((ir.value==IR_7||digitalRead(4)==LOW)&amp;&amp;mute==0&amp;&amp;power==0){mute=1; pt.setVol(31); pt.setVol(31);menu0=100;cl();w=1;w2_arr();lcd.setCursor(8,1);lcd.print(&quot;MUTE&quot;);delay(300);}// mute on
  if((ir.value==IR_7||digitalRead(4)==LOW)&amp;&amp;mute==1&amp;&amp;power==0){mute=0;cl();time0=millis();w=1;w2_arr();menu0=0;myEnc.write(0);audio();}// mute off

   if((ir.value==IR_8||digitalRead(5)==LOW)&amp;&amp;power==0){power=1;save=1; pt.setVol(31); pt.setVol(31);cl();lcd.setCursor(5,1);lcd.print(&quot;POWER  OFF&quot;);menu0=100;delay(3000);analogWrite(6, brig1*25);}// power off
  if((ir.value==IR_8||digitalRead(5)==LOW)&amp;&amp;power==1){power=0;analogWrite(6, brig0*25);lcd.clear();lcd.setCursor(5,1);lcd.print(&quot;POWER   ON &quot;);w=1;w2_arr();menu0=0;myEnc.write(0);audio();delay(3000);cl();}// power on

if(power==0){digitalWrite(7,HIGH);
   byte a1[8] = {0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
   byte a2[8] = {0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
   byte a3[8] = {0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000}; 
   byte a4[8] = {0b10000,0b11000,0b11100,0b11110,0b11100,0b11000,0b10000,0b00000}; //&gt;
   byte a5[8] = {0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000};
   lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);lcd.createChar(3,a4);lcd.createChar(4,a5);
  }
  if(power==1){digitalWrite(7,LOW);
      byte v1[8] = {7,7,7,7,7,7,7,7};
      byte v2[8] = {7,7,0, 0, 0, 0, 0, 0};      
      byte v3[8] = { 0, 0, 0, 0, 0,0,31,31};
      byte v4[8] = {31,31, 0, 0, 0, 0,31,31};
      byte v5[8] = { 28, 28, 0, 0, 0, 0, 28, 28};
      byte v6[8] = {28,28,28,28,28,28,28,28};
      byte v7[8] = { 0, 0, 0, 0, 0, 0,7,7};
      byte v8[8] = { 31, 31,0,0,0,0,0, 0};
   byte a[6];
   byte i0,d1,d2,d3,d4,d5,d6,e1,e2,e3;
  lcd.createChar(1, v1);lcd.createChar(2, v2);lcd.createChar(3, v3);lcd.createChar(4, v4);lcd.createChar(5, v5);lcd.createChar(6, v6);lcd.createChar(7, v7);lcd.createChar(8, v8);
  
     a[0]=DateTime.hour/10;
     a[1]=DateTime.hour%10;
     a[2]=DateTime.minute/10;
     a[3]=DateTime.minute%10;
     a[4]=DateTime.second/10;
     a[5]=DateTime.second%10;
    
 for(i=0;i&lt;6;i++){
      switch(i){
        case 0: e1=0,e2=1,e3=2;break;
        case 1: e1=3,e2=4,e3=5;break;
        case 2: e1=7,e2=8,e3=9;break;
        case 3: e1=10,e2=11,e3=12;break;
        case 4: e1=14,e2=15,e3=16;break;
        case 5: e1=17,e2=18,e3=19;break;
        }
      switch(a[i]){
        case 0: d1=1,d2=8,d3=6,d4=1,d5=3,d6=6;break;
        case 1: d1=32,d2=2,d3=6,d4=32,d5=32,d6=6;break;
        case 2: d1=2,d2=8,d3=6,d4=1,d5=4,d6=5;break;
        case 3: d1=2,d2=4,d3=6,d4=7,d5=3,d6=6;break;
        case 4: d1=1,d2=3,d3=6,d4=32,d5=32,d6=6;break;
        case 5: d1=1,d2=4,d3=5,d4=7,d5=3,d6=6;break;
        case 6: d1=1,d2=4,d3=5,d4=1,d5=3,d6=6;break;
        case 7: d1=1,d2=8,d3=6,d4=32,d5=32,d6=6;break;
        case 8: d1=1,d2=4,d3=6,d4=1,d5=3,d6=6;break;
        case 9: d1=1,d2=4,d3=6,d4=7,d5=3,d6=6;break;
    }
     
      lcd.setCursor(e1,0);lcd.write((uint8_t)d1);lcd.setCursor(e2,0);lcd.write((uint8_t)d2);lcd.setCursor(e3,0);lcd.write((uint8_t)d3);
      lcd.setCursor(e1,1);lcd.write((uint8_t)d4);lcd.setCursor(e2,1);lcd.write((uint8_t)d5);lcd.setCursor(e3,1);lcd.write((uint8_t)d6);
  }
   lcd.setCursor(6,0);lcd.print(&quot;.&quot;);lcd.setCursor(13,0);lcd.print(&quot;.&quot;);lcd.setCursor(6,1);lcd.print(&quot;.&quot;);lcd.setCursor(13,1);lcd.print(&quot;.&quot;);
  
  lcd.setCursor(0,3);lcd.print(date/10);lcd.print(date%10),lcd.print(&quot;.&quot;);lcd.print(mont/10);lcd.print(mont%10);lcd.print(&quot;.&quot;);lcd.print(year);lcd.print(&quot; &quot;);
  lcd.print(dn[wesk]);
  
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(2)==LOW){korr++;if(korr&gt;6){korr=0;}delay(100);} // SET
 
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==1){hour++;if(hour&gt;23){hour=23;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);} // IN
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==1){hour--;if(hour&lt;0){hour=0;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}  // MUTE

  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==2){minut++;if(minut&gt;59){minut=59;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==2){minut--;if(minut&lt;0){minut=0;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==3){secon=0;clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==3){secon=0;clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}

  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==4){date++;if(date&gt;31){date=31;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==4){date--;if(date&lt;1){date=1;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}

  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==5){mont++;if(mont&gt;12){mont=12;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==5){mont--;if(mont&lt;1){mont=1;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}

  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW&amp;&amp;korr==6){year++;if(year&gt;2050){year=2050;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW&amp;&amp;korr==6){year--;if(year&lt;2022){year=2022;} clock.setDateTime(year, mont, date, hour, minut, secon);delay(100);}
  
  lcd.setCursor(0,2);
  switch(korr){
    case 0 : lcd.print(&quot;                &quot;);lcd.print(&quot;    &quot;);break;
    case 1 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;HOUR&quot;);break;
    case 2 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;MIN &quot;);break;
    case 3 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;SEC &quot;);break;
    case 4 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;DATE&quot;);break;
    case 5 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;MON &quot;);break;
    case 6 : lcd.print(&quot;Time correction &quot;);lcd.print(&quot;YEAR&quot;);break;
    }
  } 

 /////////////////////////////// MENU0 = VOLUME TERBLE BASS BALANCE ///////////////////////////////////////////////////////////////////////
  if(menu0==0){
    switch(menu){
      case 0: temp0 = vol;q=0;break;
      case 1: temp0 = bass;q=1;break;
      case 2: temp0 = mid;q=1;break;
      case 3: temp0 = treb;q=2;break;}
 
     if(ir.value==IR_3){temp0++;gr1=1;gr2=0;cl1();time0=millis();w=1;w2[q]=1;www=1;}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){temp0++;gr2=0;cl1();time0=millis();;w=1;w2[q]=1;www=1;}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){temp0--;gr1=0;gr2=1;cl1();time0=millis();;w=1;w2[q]=1;www=1;}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){temp0--;gr1=0;cl1();time0=millis();w=1;w2[q]=1;www=1;}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;   
 
   if (newPosition != oldPosition){oldPosition = newPosition;
     temp0=temp0+newPosition;myEnc.write(0);newPosition=0;time0=millis();w=1;w2[q]=1;www=1;} 
 
     switch(menu){
      case 0: vol = temp0;vol_func();break;
      case 1: bass = temp0;bass_func();break;
      case 2: mid = temp0;mid_func();break;
      case 3: treb = temp0;treb_func();break;}
 
   au();
   for(i=0;i&lt;4;i++){if(menu==i){lcd.setCursor(0,i);lcd.write((uint8_t)3);}else{lcd.setCursor(0,i);lcd.print(&quot; &quot;);}}
     lcd.setCursor(1,0);lcd.print(&quot;VOL(&quot;);lcd.print(in+1);lcd.print(&quot;) &quot;);if(vol&gt;=0){lcd.print(&quot; &quot;);}lcd.print(vol);lcd.print(&quot;     &quot;);lcd.print(year);
   lcd.setCursor(1,1);lcd.print(&quot;BASS   &quot;);if(bass&gt;=0){lcd.print(&quot; &quot;);}lcd.print(bass);lcd.print(&quot;     &quot;);lcd.print(date/10);lcd.print(date%10),lcd.print(&quot;.&quot;);lcd.print(mont/10);lcd.print(mont%10);
    lcd.setCursor(1,2);lcd.print(&quot;MIDLE  &quot;);if(mid&gt;=0){lcd.print(&quot; &quot;);}lcd.print(mid);lcd.print(&quot;  &quot;);lcd.print(dn[wesk]); 
    lcd.setCursor(1,3);lcd.print(&quot;TREBLE &quot;);if(treb&gt;=0){lcd.print(&quot; &quot;);}lcd.print(treb);lcd.print(&quot;  &quot;); lcd.print(DateTime.hour/10);lcd.print(DateTime.hour%10);lcd.print(&quot;:&quot;);lcd.print(DateTime.minute/10);lcd.print(DateTime.minute%10);lcd.print(&quot;:&quot;);
    lcd.print(DateTime.second/10);lcd.print(DateTime.second%10);
  
   for(n=0;n&lt;4;n++){if(w2[n]==1){
   switch(n){
    case 0: par = vol_d;break;
    case 1: par = bass_d;break;
    case 2: par = mid_d;break;
    case 3: par = treb_d;break;} 
   
 for(z=0,z0=0,z1=0;z&lt;=par;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+12,n);lcd.write((uint8_t)0);lcd.setCursor(z0+1+12,n);Serial.println(z0);z_old=7-par/3;while(z_old&gt;0){z_old=z_old-1;lcd.write((uint8_t)4);}}}
   if(z1==3){lcd.setCursor(z0+12,n);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+12,n);lcd.write((uint8_t)2);}w2[n]=0;}
   }}// menu0 = 0
///////////////////////////////////////////////////////////////////////////////////////////////

 if(menu0==1){
     switch(menu1){
      case 0: temp0 = attfl;break;
      case 1: temp0 = attfr;break;
      case 2: temp0 = ddd;break;
      case 3: temp0 = brig0;break;
      case 4: temp0 = brig1;break;
      }
 
     if(ir.value==IR_3){temp0++;gr1=1;gr2=0;cl1();time0=millis();w=1;www=1;}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){temp0++;gr2=0;cl1();time0=millis();w=1;www=1;}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){temp0--;gr1=0;gr2=1;cl1();time0=millis();;w=1;www=1;}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){temp0--;gr1=0;cl1();time0=millis();w=1;www=1;}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;     
 
   if (newPosition != oldPosition){oldPosition = newPosition;
     temp0=temp0+newPosition;myEnc.write(0);newPosition=0;time0=millis();w=1;www=1;} 
 
     switch(menu1){
      case 0: attfl = temp0;attfl_func();break;
      case 1: attfr = temp0;attfr_func();break;
      case 2: ddd  = temp0;ddd_func();break;
      case 3: brig0  = temp0;brig0_func();break;
      case 4: brig1  = temp0;brig1_func();break;
      }
 
  au();analogWrite(6, brig0*25);
  for(i=0;i&lt;5;i++){if(menu1==i){lcd.setCursor(mesto2[i],mesto3[i]);lcd.write((uint8_t)3);}else{lcd.setCursor(mesto2[i],mesto3[i]);lcd.print(&quot; &quot;);}}
  
  lcd.setCursor(1,0);lcd.print(&quot;ATTFL &quot;);lcd.print(attfl);lcd.print(&quot; &quot;);lcd.setCursor(12,0);lcd.print(&quot;ATTFR &quot;);lcd.print(attfr);lcd.print(&quot; &quot;);
  lcd.setCursor(7,1);lcd.print(&quot;3D   &quot;);if(ddd==0){lcd.print(&quot;ON &quot;);}else{lcd.print(&quot;OFF&quot;);}
  lcd.setCursor(0,2);lcd.print(&quot;-------------------&quot;);
  lcd.setCursor(1,3);lcd.print(&quot;BRIG_1 &quot;);lcd.print(brig0);lcd.print(&quot; &quot;);lcd.setCursor(12,3);lcd.print(&quot;BRIG_2 &quot;);lcd.print(brig1);
  
 } // menu0 = 1


////////////////////////// GAIN IN /////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////   

if(millis()-time0&gt;10000&amp;&amp;w==1&amp;&amp;mute==0&amp;&amp;power==0){if(menu0==1){cl();}w=0;menu0=0;menu=0;w2_arr();}
if(millis()-times_in&gt;3000&amp;&amp;w==1&amp;&amp;in_x==1&amp;&amp;mute==0&amp;&amp;power==0){cl();w=0;in_x=0;menu0=0;menu=0;w2_arr();}

if(save==1){save=0;
           EEPROM.update(0,vol+79);EEPROM.update(1,in);EEPROM.update(2,bass+7);EEPROM.update(3,mid+7);EEPROM.update(4,treb+7);
     EEPROM.update(5,attfl+14);EEPROM.update(7,attcn+14);EEPROM.update(8,attsub+14);EEPROM.update(9,ddd);EEPROM.update(10,tembro);
     EEPROM.update(11,attfr+14);EEPROM.update(12,atttl+14);EEPROM.update(13,atttr+14);EEPROM.update(14,brig0);EEPROM.update(15,brig1);}

             
}// loop

void brig1_func(){if(brig1&gt;8){brig1=8;}if(brig1&lt;0){brig1=0;}}
void brig0_func(){if(brig0&gt;8){brig0=8;}if(brig0&lt;0){brig0=0;}}
void w2_arr(){w2[0]=1;w2[1]=1;w2[2]=1;w2[3]=1;}
void au(){if(www==1){audio();www=0;}}
//void inn_func(){if(in&gt;3){in=3;}if(in&lt;0){in=0;}}
void ddd_func(){if(ddd&lt;0){ddd=0;}if(ddd&gt;1){ddd=1;}}
void gain_func(){if(gain0&lt;0){gain0=0;}if(gain0&gt;3){gain0=3;}}
void attfr_func(){if(attfr&lt;0){attfr=0;}if(attfr&gt;14){attfr=14;}}
void attfl_func(){if(attfl&lt;0){attfl=0;}if(attfl&gt;14){attfl=14;}}
void treb_func(){if(treb&lt;-7){treb=-7;}if(treb&gt;7){treb=7;}}
void bass_func(){if(bass&lt;-7){bass=-7;}if(bass&gt;7){bass=7;}}
void mid_func(){if(mid&lt;-7){mid=-7;}if(mid&gt;7){mid=7;}}
void vol_func(){if(vol&lt;-0){vol=-0;}if(vol&gt;79){vol=79;}}
void cl(){ir.value=0;delay(300);lcd.clear();}
void cl1(){ir.value=0;delay(200);}  
 void audio_in(){
  pt0.setInput(in); 
  pt0.setMute(0,0,0,0,0,0,0); 
  pt0.setFeature(1,1); 
}
 void audio(){
  
  pt.setFront_lk_att(abs(attfl));// att front L
  pt.setFront_rk_att(abs(attfr));// att front R
  pt.setCenter_att(abs(attcn));  // att center
  pt.setRear_lk_att(abs(atttl)); // att rear L
  pt.setRear_rk_att(abs(atttr)); // att rear R
  pt.setSub_att(abs(attsub));     // att sub
  pt.setFunc(mute,ddd,0); // mute,3d,тембр on/off
  pt.setBass(bass);            // BASS    -14...0...14 dB (int -7...0...7)
  pt.setMiddle(mid);          // MIDDLE  -14...0...14 dB (int -7...0...7)
  pt.setTreble(treb);          // TREBLE  -14...0...14 dB (int -7...0...7)
  pt.setVol(abs(vol)); // -79...0
  }</code></pre></div>]]></content>
			<author>
				<name><![CDATA[shuhrat.ps]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1841</uri>
			</author>
			<updated>2023-12-12T15:49:50Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8998#p8998</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: pt2322 pt2323]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8970#p8970" />
			<content type="html"><![CDATA[<p>брат помогите создать на дисплей 2004 скетч</p><div class="codebox"><pre><code>#define IR_1 0x2FDD02F // Кнопка вверх
#define IR_2 0x2FD32CD // Кнопка вниз
#define IR_3 0x2FD906F // Кнопка &gt;
#define IR_4 0x2FDF20D // Кнопка &lt;
#define IR_5 0x2FD708F // Кнопка IN
#define IR_6 0x2FD6A95 // Кнопка SET
#define IR_7 0x2FD00FF // Кнопка MUTE
#define IR_8 0x2FDB24D // Кнопка STANDBY (POWER)

#include &lt;Wire.h&gt; 
#include &lt;PT2322.h&gt;
#include &lt;PT2323.h&gt;
#include &lt;Wire.h&gt; 
#include &lt;LiquidCrystal_I2C.h&gt; 
#include &lt;Encoder.h&gt;            
#include &lt;EEPROM.h&gt;
#include &lt;MsTimer2.h&gt;           
#include &lt;boarddefs.h&gt;
#include &lt;IRremote.h&gt;  
#include &lt;DS3231.h&gt;
   DS3231 clock;RTCDateTime DateTime;
   PT2322 pt; PT2323 pt0; 
   LiquidCrystal_I2C lcd(0x27,20,4);  // Устанавливаем дисплей
   IRrecv irrecv(12); // указываем вывод модуля IR приемника
   Encoder myEnc(9, 8);// DT, CLK
   decode_results ir; 
      int menu,menu0,menu1,temp0,par,hour,minut,secon,z_old,gain0;
      int brig0,brig1;
       int vol,vol_d,in,bass,bass_d,mid,mid_d,treb,treb_d,attfl,attfl_d,attcn,attcn_d,attsub,attsub_d,ddd,tembro,x,attfr,attfr_d,atttl,atttl_d,atttr,atttr_d;
   int g1,g2,inn; 

 
      byte w2[4],z,z0,z1,n,q,gr1,gr2,www,i,w,mute,power,in_x,save,i1;
      unsigned long time0,oldPosition  = -999,newPosition,times_in;
      byte mesto2[5]={0,11,6,0,11};
      byte mesto3[5]={0,0,1,3,3};


void setup() {
  irrecv.enableIRIn();lcd.init();lcd.backlight();clock.begin();Serial.begin(9600);
  pinMode(10,INPUT);  // МЕНЮ КНОПКА SW энкодера
  pinMode(2,INPUT_PULLUP);   // КНОПКА SET
  pinMode(3,INPUT_PULLUP);   // КНОПКА IN
  pinMode(4,INPUT_PULLUP);   // КНОПКА MUTE
  pinMode(5,INPUT_PULLUP);   // КНОПКА STANDBY
  pinMode(7,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ STANDBY
  pinMode(6,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ ПОДСВЕТКОЙ
  analogWrite(6, 200);// больше 200 не делать
  lcd.setCursor(1,1);lcd.print(&quot;Sound Processor&quot;);lcd.setCursor(1,2);lcd.print(&quot;PT2314&quot;); delay(2000);lcd.clear();
  MsTimer2::set(3, to_Timer);MsTimer2::start();
  //  clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
  if(EEPROM.read(100)!=0){for(int i=0;i&lt;101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении  
   vol = EEPROM.read(0)-79;in = EEPROM.read(1);bass = EEPROM.read(2)-7;mid = EEPROM.read(3)-7;treb = EEPROM.read(4)-7;
  attfl = EEPROM.read(5)-14;attcn = EEPROM.read(7)-14;attsub = EEPROM.read(8)-14;ddd = EEPROM.read(9);tembro = EEPROM.read(10);
  attfr = EEPROM.read(11)-14;atttl = EEPROM.read(12)-14;atttr = EEPROM.read(13)-14;brig0 = EEPROM.read(14);brig1 = EEPROM.read(15);
  w2_arr();audio();cl();
  analogWrite(6, 25*brig0);
}
void to_Timer(){newPosition = myEnc.read()/4;}  

void loop() {
  DateTime = clock.getDateTime();hour = DateTime.hour;minut = DateTime.minute;secon = DateTime.second;

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

  if(mute==0&amp;&amp;power==0){ 
  if(ir.value==IR_2&amp;&amp;menu0==0){menu++;gr1=0;gr2=0;cl1();time0=millis();w=1;w2_arr();if(menu&gt;2){menu=0;}}//меню 1
  if(ir.value==IR_1&amp;&amp;menu0==0){menu--;gr1=0;gr2=0;cl1();time0=millis();w=1;w2_arr();if(menu&lt;0){menu=2;}}//меню 1
 
  if(ir.value==IR_2&amp;&amp;menu0==1){menu1++;gr1=0;gr2=0;cl1();time0=millis();w=1;if(menu1&gt;4){menu1=0;}}//меню 2
  if(ir.value==IR_1&amp;&amp;menu0==1){menu1--;gr1=0;gr2=0;cl1();time0=millis();w=1;if(menu1&lt;0){menu1=4;}}//меню 2
    
  if(digitalRead(10)==LOW&amp;&amp;menu0==0){menu++;delay(200);time0=millis();w=1;w2_arr();if(menu&gt;2){menu=0;}}// меню 0
  if(digitalRead(10)==LOW&amp;&amp;menu0==1){menu1++;delay(200);time0=millis();w=1;if(menu1&gt;4){menu1=0;}}// меню 1
  
  if((ir.value==IR_6||digitalRead(2)==LOW)&amp;&amp;menu0==0){menu0=1;cl();time0=millis();w=1;lcd.setCursor(6,1);lcd.print(&quot;SETTING&quot;); delay(300);lcd.clear();}
  if((ir.value==IR_6||digitalRead(2)==LOW)&amp;&amp;menu0==1){menu0=0;menu=0;cl();w2_arr();time0=millis();w=1;lcd.setCursor(8,1);lcd.print(&quot;MENU&quot;); delay(300);lcd.clear();}
  if(ir.value==IR_5||digitalRead(3)==LOW||inn==1){inn++;cl();times_in=millis();in_x=1;www=1;menu0=100;if(in&gt;4){in=0;}}// IN
  }
  if((ir.value==IR_7||digitalRead(4)==LOW)&amp;&amp;mute==0&amp;&amp;power==0){mute=1; pt.setVol(31); pt.setVol(31);menu0=100;cl();w=1;w2_arr();lcd.setCursor(8,1);lcd.print(&quot;MUTE&quot;);delay(300);}// mute on
  if((ir.value==IR_7||digitalRead(4)==LOW)&amp;&amp;mute==1&amp;&amp;power==0){mute=0;cl();time0=millis();w=1;w2_arr();menu0=0;myEnc.write(0);audio();}// mute off

   if((ir.value==IR_8||digitalRead(5)==LOW)&amp;&amp;power==0){power=1;save=1; pt.setVol(31); pt.setVol(31);cl();lcd.setCursor(5,1);lcd.print(&quot;POWER  OFF&quot;);menu0=100;delay(3000);analogWrite(6, brig1*25);}// power off
  if((ir.value==IR_8||digitalRead(5)==LOW)&amp;&amp;power==1){power=0;analogWrite(6, brig0*25);lcd.clear();lcd.setCursor(5,1);lcd.print(&quot;POWER   ON &quot;);w=1;w2_arr();menu0=0;myEnc.write(0);audio();delay(3000);cl();}// power on

if(power==0){digitalWrite(7,HIGH);
   byte a1[8] = {0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
   byte a2[8] = {0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
   byte a3[8] = {0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000}; 
   byte a4[8] = {0b10000,0b11000,0b11100,0b11110,0b11100,0b11000,0b10000,0b00000}; //&gt;
   byte a5[8] = {0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000};
   lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);lcd.createChar(3,a4);lcd.createChar(4,a5);
  }
  if(power==1){digitalWrite(7,LOW);
      byte v1[8] = {7,7,7,7,7,7,7,7};
      byte v2[8] = {7,7,0, 0, 0, 0, 0, 0};      
      byte v3[8] = { 0, 0, 0, 0, 0,0,31,31};
      byte v4[8] = {31,31, 0, 0, 0, 0,31,31};
      byte v5[8] = { 28, 28, 0, 0, 0, 0, 28, 28};
      byte v6[8] = {28,28,28,28,28,28,28,28};
      byte v7[8] = { 0, 0, 0, 0, 0, 0,7,7};
      byte v8[8] = { 31, 31,0,0,0,0,0, 0};
   byte a[6];
   byte i0,d1,d2,d3,d4,d5,d6,e1,e2,e3;
  lcd.createChar(1, v1);lcd.createChar(2, v2);lcd.createChar(3, v3);lcd.createChar(4, v4);lcd.createChar(5, v5);lcd.createChar(6, v6);lcd.createChar(7, v7);lcd.createChar(8, v8);
  
     a[0]=DateTime.hour/10;
     a[1]=DateTime.hour%10;
     a[2]=DateTime.minute/10;
     a[3]=DateTime.minute%10;
     a[4]=DateTime.second/10;
     a[5]=DateTime.second%10;
    
 for(i=0;i&lt;6;i++){
      switch(i){
        case 0: e1=0,e2=1,e3=2;break;
        case 1: e1=3,e2=4,e3=5;break;
        case 2: e1=7,e2=8,e3=9;break;
        case 3: e1=10,e2=11,e3=12;break;
        case 4: e1=14,e2=15,e3=16;break;
        case 5: e1=17,e2=18,e3=19;break;
        }
      switch(a[i]){
        case 0: d1=1,d2=8,d3=6,d4=1,d5=3,d6=6;break;
        case 1: d1=32,d2=2,d3=6,d4=32,d5=32,d6=6;break;
        case 2: d1=2,d2=8,d3=6,d4=1,d5=4,d6=5;break;
        case 3: d1=2,d2=4,d3=6,d4=7,d5=3,d6=6;break;
        case 4: d1=1,d2=3,d3=6,d4=32,d5=32,d6=6;break;
        case 5: d1=1,d2=4,d3=5,d4=7,d5=3,d6=6;break;
        case 6: d1=1,d2=4,d3=5,d4=1,d5=3,d6=6;break;
        case 7: d1=1,d2=8,d3=6,d4=32,d5=32,d6=6;break;
        case 8: d1=1,d2=4,d3=6,d4=1,d5=3,d6=6;break;
        case 9: d1=1,d2=4,d3=6,d4=7,d5=3,d6=6;break;
    }
     
      lcd.setCursor(e1,0);lcd.write((uint8_t)d1);lcd.setCursor(e2,0);lcd.write((uint8_t)d2);lcd.setCursor(e3,0);lcd.write((uint8_t)d3);
      lcd.setCursor(e1,1);lcd.write((uint8_t)d4);lcd.setCursor(e2,1);lcd.write((uint8_t)d5);lcd.setCursor(e3,1);lcd.write((uint8_t)d6);
  }
  lcd.setCursor(6,0);lcd.print(&quot;.&quot;);lcd.setCursor(13,0);lcd.print(&quot;.&quot;);lcd.setCursor(6,1);lcd.print(&quot;.&quot;);lcd.setCursor(13,1);lcd.print(&quot;.&quot;);
  lcd.setCursor(5,3);lcd.print(&quot;POWER  OFF&quot;);
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(2)==LOW){hour++;if(hour&gt;23){hour=0;} clock.setDateTime(2020, 9, 15, hour, minut, secon);delay(100);}
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(3)==LOW){minut++;if(minut&gt;59){minut=0;} clock.setDateTime(2020, 9, 15, hour, minut, secon);delay(100); }
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(4)==LOW){secon=0; clock.setDateTime(2020, 9, 15, hour, minut, secon);delay(100); }
  } 

 /////////////////////////////// MENU0 = VOLUME TERBLE BASS BALANCE ///////////////////////////////////////////////////////////////////////
  if(menu0==0){
    switch(menu){
      case 0: temp0 = vol;q=0;break;
      case 1: temp0 = bass;q=1;break;
      case 2: temp0 = treb;q=2;break;}
 
     if(ir.value==IR_3){temp0++;gr1=1;gr2=0;cl1();time0=millis();w=1;w2[q]=1;www=1;}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){temp0++;gr2=0;cl1();time0=millis();;w=1;w2[q]=1;www=1;}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){temp0--;gr1=0;gr2=1;cl1();time0=millis();;w=1;w2[q]=1;www=1;}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){temp0--;gr1=0;cl1();time0=millis();w=1;w2[q]=1;www=1;}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;   
 
   if (newPosition != oldPosition){oldPosition = newPosition;
     temp0=temp0+newPosition;myEnc.write(0);newPosition=0;time0=millis();w=1;w2[q]=1;www=1;} 
 
     switch(menu){
      case 0: vol = temp0;vol_func();break;
      case 1: bass = temp0;bass_func();break;
      case 2: treb = temp0;treb_func();break;}
 
   au();
   for(i=0;i&lt;3;i++){if(menu==i){lcd.setCursor(0,i);lcd.write((uint8_t)3);}else{lcd.setCursor(0,i);lcd.print(&quot; &quot;);}}
   lcd.setCursor(1,0);lcd.print(&quot;VOLUME &quot;);if(vol&gt;=0){lcd.print(&quot; &quot;);}lcd.print(vol);lcd.print(&quot; &quot;);vol_d=map(vol,0,79,1,24);
   lcd.setCursor(1,1);lcd.print(&quot;BASS   &quot;);if(bass&gt;=0){lcd.print(&quot; &quot;);}lcd.print(bass);lcd.print(&quot; &quot;);bass_d=map(bass,-14,14,1,1);
   lcd.setCursor(1,2);lcd.print(&quot;TREBLE &quot;);if(treb&gt;=0){lcd.print(&quot; &quot;);}lcd.print(treb);lcd.print(&quot; &quot;);treb_d=map(treb,-14,14,1,1);
   lcd.setCursor(1,3);lcd.print(&quot;INPUT   &quot;);lcd.print(in+1);lcd.print(&quot;  &quot;);
   lcd.print(DateTime.hour/10);lcd.print(DateTime.hour%10);lcd.print(&quot;:&quot;);lcd.print(DateTime.minute/10);lcd.print(DateTime.minute%10);lcd.print(&quot;:&quot;);
   lcd.print(DateTime.second/10);lcd.print(DateTime.second%10);

   for(n=0;n&lt;3;n++){if(w2[n]==1){
   switch(n){
    case 0: par = vol_d;break;
    case 1: par = bass_d;break;
    case 2: par = treb_d;break;} 
   
   for(z=0,z0=0,z1=0;z&lt;=par;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+12,n);lcd.write((uint8_t)0);lcd.setCursor(z0+1+12,n);Serial.println(z0);z_old=7-par/3;while(z_old&gt;0){z_old=z_old-1;lcd.write((uint8_t)4);}}}
   if(z1==3){lcd.setCursor(z0+12,n);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+12,n);lcd.write((uint8_t)2);}w2[n]=0;}
   }}// menu0 = 0
///////////////////////////////////////////////////////////////////////////////////////////////

 if(menu0==1){
     switch(menu1){
      case 0: temp0 = attfl;break;
      case 1: temp0 = attfr;break;
      case 2: temp0 = ddd;break;
      case 3: temp0 = brig0;break;
      case 4: temp0 = brig1;break;
      }
 
     if(ir.value==IR_3){temp0++;gr1=1;gr2=0;cl1();time0=millis();w=1;www=1;}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){temp0++;gr2=0;cl1();time0=millis();w=1;www=1;}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){temp0--;gr1=0;gr2=1;cl1();time0=millis();;w=1;www=1;}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){temp0--;gr1=0;cl1();time0=millis();w=1;www=1;}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;     
 
   if (newPosition != oldPosition){oldPosition = newPosition;
     temp0=temp0+newPosition;myEnc.write(0);newPosition=0;time0=millis();w=1;www=1;} 
 
     switch(menu1){
      case 0: attfl = temp0;attfl_func();break;
      case 1: attfr = temp0;attfr_func();break;
      case 2: ddd  = temp0;ddd_func();break;
      case 3: brig0  = temp0;brig0_func();break;
      case 4: brig1  = temp0;brig1_func();break;
      }
 
  au();analogWrite(6, brig0*25);
  for(i=0;i&lt;5;i++){if(menu1==i){lcd.setCursor(mesto2[i],mesto3[i]);lcd.write((uint8_t)3);}else{lcd.setCursor(mesto2[i],mesto3[i]);lcd.print(&quot; &quot;);}}
  
  lcd.setCursor(1,0);lcd.print(&quot;ATTFL &quot;);lcd.print(attfl);lcd.print(&quot; &quot;);lcd.setCursor(12,0);lcd.print(&quot;ATTFR &quot;);lcd.print(attfr);lcd.print(&quot; &quot;);
  lcd.setCursor(7,1);lcd.print(&quot;3D   &quot;);if(ddd==0){lcd.print(&quot;ON &quot;);}else{lcd.print(&quot;OFF&quot;);}
  lcd.setCursor(0,2);lcd.print(&quot;-------------------&quot;);
  lcd.setCursor(1,3);lcd.print(&quot;BRIG_1 &quot;);lcd.print(brig0);lcd.print(&quot; &quot;);lcd.setCursor(12,3);lcd.print(&quot;BRIG_2 &quot;);lcd.print(brig1);
  
 } // menu0 = 1


////////////////////////// GAIN IN /////////////////////////////////////////////////////////////////////////////////////
if(in_x==1){ menu0=100;
 // switch(in){
    // case 0: gain0 = gain1;break;
   //  case 1: gain0 = gain2;break;
   //  case 2: gain0 = gain3;break;
   //  case 3: gain0 = gain4;break;}
 
    if(ir.value==IR_3){gain0++;gr1=1;gr2=0;cl1();time0=millis();times_in=millis();www=1;w=1;gain_func();}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){gain0++;gr2=0;cl1();time0=millis();times_in=millis();www=1;w=1;gain_func();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
    if(ir.value==IR_4){gain0--;gr1=0;gr2=1;cl1();time0=millis();times_in=millis();www=1;w=1;gain_func();}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){gain0--;gr1=0;cl1();time0=millis();times_in=millis();www=1;w=1;gain_func();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;  
 
    if (newPosition != oldPosition) {oldPosition = newPosition;
   gain0=gain0+newPosition;myEnc.write(0);newPosition=0;time0=millis();times_in=millis();www=1;w=1;gain_func();} 
 
  // switch(in){
   //  case 0: gain1 = gain0;break;
    // case 1: gain2 = gain0;break;
    // case 2: gain3 = gain0;break;
    // case 3: gain4 = gain0;break;}
 
  au();
  lcd.setCursor(5,1);lcd.print(&quot;Gain IN &quot;);lcd.print(in+1);lcd.setCursor(6,2);//lcd.print(float(gain0*3.75));lcd.print(&quot; &quot;);lcd.print(&quot;dB &quot;);
   }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////   

if(millis()-time0&gt;10000&amp;&amp;w==1&amp;&amp;mute==0&amp;&amp;power==0){if(menu0==1){cl();}w=0;menu0=0;menu=0;w2_arr();}
if(millis()-times_in&gt;3000&amp;&amp;w==1&amp;&amp;in_x==1&amp;&amp;mute==0&amp;&amp;power==0){cl();w=0;in_x=0;menu0=0;menu=0;w2_arr();}

if(save==1){save=0;
           EEPROM.update(0,vol+79);EEPROM.update(1,in);EEPROM.update(2,bass+7);EEPROM.update(3,mid+7);EEPROM.update(4,treb+7);
     EEPROM.update(5,attfl+14);EEPROM.update(7,attcn+14);EEPROM.update(8,attsub+14);EEPROM.update(9,ddd);EEPROM.update(10,tembro);
     EEPROM.update(11,attfr+14);EEPROM.update(12,atttl+14);EEPROM.update(13,atttr+14);EEPROM.update(14,brig0);EEPROM.update(15,brig1);}
            
}// loop

void brig1_func(){if(brig1&gt;8){brig1=8;}if(brig1&lt;0){brig1=0;}}
void brig0_func(){if(brig0&gt;8){brig0=8;}if(brig0&lt;0){brig0=0;}}
void w2_arr(){w2[0]=1;w2[1]=1;w2[2]=1;w2[3]=1;}
void au(){if(www==1){audio();www=0;}}
void inn_func(){if(in&gt;3){in=3;}if(in&lt;0){in=0;}}
void ddd_func(){if(ddd&lt;0){ddd=0;}if(ddd&gt;1){ddd=1;}}
void gain_func(){if(gain0&lt;0){gain0=0;}if(gain0&gt;3){gain0=3;}}
void attfr_func(){if(attfr&lt;0){attfr=0;}if(attfr&gt;14){attfr=14;}}
void attfl_func(){if(attfl&lt;0){attfl=0;}if(attfl&gt;14){attfl=14;}}
void treb_func(){if(treb&lt;-14){treb=-14;}if(treb&gt;14){treb=14;}}
void bass_func(){if(bass&lt;-14){bass=-14;}if(bass&gt;14){bass=14;}}
void vol_func(){if(vol&lt;0){vol=0;}if(vol&gt;79){vol=79;}}
void cl(){ir.value=0;delay(300);lcd.clear();}
void cl1(){ir.value=0;delay(200);}  
 void audio_in(){
  pt0.setInput(in); 
  pt0.setMute(0,0,0,0,0,0,0); 
  pt0.setFeature(1,1); 
}
 void audio(){
  
  pt.setFront_lk_att(abs(attfl));// att front L
  pt.setFront_rk_att(abs(attfr));// att front R
  pt.setCenter_att(abs(attcn));  // att center
  pt.setRear_lk_att(abs(atttl)); // att rear L
  pt.setRear_rk_att(abs(atttr)); // att rear R
  pt.setSub_att(abs(attsub));     // att sub
  pt.setFunc(mute,ddd,0); // mute,3d,тембр on/off
  pt.setBass(bass);            // BASS    -14...0...14 dB (int -7...0...7)
  pt.setMiddle(mid);          // MIDDLE  -14...0...14 dB (int -7...0...7)
  pt.setTreble(treb);          // TREBLE  -14...0...14 dB (int -7...0...7)
  pt.setVol(abs(vol)); // -79...0
  }</code></pre></div>]]></content>
			<author>
				<name><![CDATA[shuhrat.ps]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1841</uri>
			</author>
			<updated>2023-12-04T01:59:31Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8970#p8970</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: pt2322 pt2323]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8926#p8926" />
			<content type="html"><![CDATA[<p>Нет не помогло&nbsp; а можно сделать такой функционал </p><div class="codebox"><pre><code>#include &lt;Wire.h&gt; 
#include &lt;LiquidCrystal_I2C.h&gt; // http://forum.rcl-radio.ru/misc.php?action=pan_download&amp;item=45&amp;download=1
#include &lt;Encoder.h&gt;           // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip       
#include &lt;EEPROM.h&gt;
#include &lt;MsTimer2.h&gt;          // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip 
#include &lt;boarddefs.h&gt;         // входит в состав библиотеки IRremote
#include &lt;IRremote.h&gt;          // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip
#include &lt;PT2258.h&gt; // https://github.com/liman324/PT2258.git
#include &lt;DS3231.h&gt;

 PT2258 pt;
 LiquidCrystal_I2C lcd(0x27,20,4);  // Устанавливаем дисплей
 Encoder myEnc(9, 8);// DT, CLK
 IRrecv irrecv(12); // указываем вывод модуля IR приемника
 decode_results ir; 
 DS3231 clock;RTCDateTime DateTime;

 
byte v1[8] = {0b00111,0b00111,0b00111,0b00111,0b00111,0b00111,0b00111,0b00111};
byte v2[8] = {0b00111,0b00111,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000};      
byte v3[8] = {0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b11111,0b11111};
byte v4[8] = {0b11111,0b11111,0b00000,0b00000,0b00000,0b00000,0b11111,0b11111};
byte v5[8] = {0b11100,0b11100,0b00000,0b00000,0b00000,0b00000,0b11100,0b11100};
byte v6[8] = {0b11100,0b11100,0b11100,0b11100,0b11100,0b11100,0b11100,0b11100};
byte v7[8] = {0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b00111,0b00111};
byte v8[8] = {0b11111,0b11111,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000}; 
unsigned long times,oldPosition  = -999,newPosition; 
int vol,ch1,ch2,ch3,ch4,ch5,ch6,menu,brig=250;
bool mute,power,w,w1,gr1,gr2;
byte a[6],d1,d2,d3,d4,d5,d6,e1,e2,e3,x;
int hour,minut,secon,data,mon,year;


void setup(){
  irrecv.enableIRIn();lcd.init();lcd.backlight();Wire.begin();clock.begin();Serial.begin(9600);
  MsTimer2::set(1, to_Timer);MsTimer2::start();
  lcd.createChar(1, v1);lcd.createChar(2, v2);lcd.createChar(3, v3);lcd.createChar(4, v4);
  lcd.createChar(5, v5);lcd.createChar(6, v6);lcd.createChar(7, v7);lcd.createChar(8, v8);
  if(EEPROM.read(100)!=0){for(int i=0;i&lt;101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении  
  pinMode(10,INPUT);        // encoder SW
  pinMode(6,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ ПОДСВЕТКОЙ
  analogWrite(6, brig);
   //  clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча

  delay(500);
  audio();
  
  }

void loop(){
/// READ TIME /////////////////////////////////
DateTime = clock.getDateTime();hour = DateTime.hour;minut = DateTime.minute;secon = DateTime.second;
  data = DateTime.day;mon = DateTime.month;year = DateTime.year;
/// IR ////////////////////////////////////////
  if ( irrecv.decode( &amp;ir )) {Serial.print(&quot;0x&quot;);Serial.println( ir.value,HEX);irrecv.resume();times=millis();w=1;w1=1;}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
  if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта  

////////////// VOLUME ///////////////////////////////////////////////////////////////////
 if(menu==0){
 
   if (newPosition != oldPosition){oldPosition = newPosition;vol=vol+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;vol_func();audio();}
   a[0]= (64-vol)/10;a[1]=(64-vol)%10;
   for(x=0;x&lt;2;x++){switch(x){case 0: e1=11,e2=12,e3=13;break;case 1: e1=14,e2=15,e3=16;break;}digit();}
   lcd.setCursor(0,0);lcd.print(&quot;VOLUME&quot;);
   lcd.setCursor(0,1);lcd.print(&quot;CONTROL&quot;);
   lcd.setCursor(0,2);lcd.print(&quot;--------------------&quot;);
   lcd.setCursor(0,3);
     lcd.print(hour/10);lcd.print(hour%10);lcd.print(&quot;:&quot;);
     lcd.print(minut/10);lcd.print(minut%10);lcd.print(&quot;:&quot;);
     lcd.print(secon/10);lcd.print(secon%10);lcd.print(&quot; &quot;);

     lcd.print(data/10);lcd.print(data%10);lcd.print(&quot;-&quot;);
     lcd.print(mon/10);lcd.print(mon%10);lcd.print(&quot;-&quot;);
     lcd.print(year);
     
  }  
  
  }  

void audio(){
        pt.clear(); 
      //  pt.setVolume(75); //  int 0...79     
        pt.setVol1(vol+ch1); //  int 0...79       
        pt.setVol2(vol+ch2); //  int 0...79 
        pt.setVol3(vol+ch3); //  int 0...79 
        pt.setVol4(vol+ch4); //  int 0...79 
        pt.setVol5(vol+ch5); //  int 0...79 
        pt.setVol6(vol+ch6); //  int 0...79 
        pt.setMute(mute); // mute 0 - off / 1 - on
  }

void to_Timer(){newPosition = myEnc.read()/4;} 
void vol_func(){if(vol&lt;0){vol=0;}if(vol&gt;64){vol=64;}}

void digit(){switch(a[x]){
case 0: d1=1,d2=8,d3=6,d4=1,d5=3,d6=6;break;case 1: d1=32,d2=2,d3=6,d4=32,d5=32,d6=6;break;
case 2: d1=2,d2=8,d3=6,d4=1,d5=4,d6=5;break;case 3: d1=2,d2=4,d3=6,d4=7,d5=3,d6=6;break;
case 4: d1=1,d2=3,d3=6,d4=32,d5=32,d6=6;break;case 5: d1=1,d2=4,d3=5,d4=7,d5=3,d6=6;break;
case 6: d1=1,d2=4,d3=5,d4=1,d5=3,d6=6;break;case 7: d1=1,d2=8,d3=6,d4=32,d5=32,d6=6;break;
case 8: d1=1,d2=4,d3=6,d4=1,d5=3,d6=6;break;case 9: d1=1,d2=4,d3=6,d4=7,d5=3,d6=6;break;}
lcd.setCursor(e1,0);lcd.write((uint8_t)d1);lcd.setCursor(e2,0);lcd.write((uint8_t)d2);lcd.setCursor(e3,0);lcd.write((uint8_t)d3);
lcd.setCursor(e1,1);lcd.write((uint8_t)d4);lcd.setCursor(e2,1);lcd.write((uint8_t)d5);lcd.setCursor(e3,1);lcd.write((uint8_t)d6);}
 </code></pre></div>]]></content>
			<author>
				<name><![CDATA[shuhrat.ps]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1841</uri>
			</author>
			<updated>2023-11-25T00:50:05Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8926#p8926</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: pt2322 pt2323]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8915#p8915" />
			<content type="html"><![CDATA[<p>Можно сделать так(на примере громкости):</p><div class="codebox"><pre><code> //////////////////////////////////////// Громкость -79...0 дБ //////////////////////////////////////
 if(menu==0){   
     if(ir.value==VOL_UP){vol++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+  0xFFA857
     if(ir.value==0xFFFFFFFF and g1==1){vol++;g2=0;cl();time=millis();w=1;audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==VOL_DW){vol--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){vol--;g1=0;cl();time=millis();w=1;audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
     if(vol&gt;79){vol=79;}if(vol&lt;0){vol=0;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(vol&gt;79){vol=79;}if(vol&lt;0){vol=0;}audio();}
if(w==1){  
lcd.setCursor(0,0);lcd.print(&quot;Volume  &quot;);
  lcd.print(&quot; &quot;);lcd.print(-79+vol);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);vol_d=vol-32;
   for(z=0,z0=0,z1=0;z&lt;=vol_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print(&quot;    &quot;);}}
   if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}}}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2023-11-24T11:26:26Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8915#p8915</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: pt2322 pt2323]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8906#p8906" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>#define  CH_UP  0x2FDF20D
#define  CH_DW  0x2FDF30D
#define  CH     0x2FDF50D
#define  IN     0x2FDF70D
#define  VOL_UP 0x2FDF40D
#define  VOL_DW 0x2FDF80D


#include &lt;Wire.h&gt;
#include &lt;PT2322.h&gt;
#include &lt;PT2323.h&gt;
#include &lt;LiquidCrystal_I2C.h&gt; 
#include &lt;EEPROM.h&gt;
#include &lt;Encoder.h&gt;
#include &lt;MsTimer2.h&gt;
#include &lt;boarddefs.h&gt;
#include &lt;IRremote.h&gt;
 PT2322 pt; PT2323 pt0; 
  Encoder myEnc(9, 8);//CLK, DT подключение энкодера
  IRrecv irrecv(13); // указываем вывод модуля IR приемника
   decode_results ir;
 LiquidCrystal_I2C lcd(0x27,20,4);  // Устанавливаем дисплей
 
    unsigned long newPosition,time,oldPosition  = -999;
   int menu,menu2,w,vol,vol_d,z,z0,z1,in,bass,bass_d,mid,mid_d,treb,treb_d,attfl,attfl_d,attcn,attcn_d,attsub,attsub_d,ddd,tembro,x,attfr,attfr_d,atttl,atttl_d,atttr,atttr_d,mute;
   int g1,g2,inn;
   
void setup() {
   irrecv.enableIRIn();lcd.init();lcd.backlight();Serial.begin(9600);
  //lcd.begin(16, 2);lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
  pinMode(A0,INPUT); // menu кнопка энкодера 
  pinMode(12,INPUT_PULLUP);   // КНОПКА IN); // MUTE
  pinMode(11,INPUT_PULLUP); // IN
  MsTimer2::set(2, to_Timer);MsTimer2::start();
   vol = EEPROM.read(0)-79;in = EEPROM.read(1);bass = EEPROM.read(2)-7;mid = EEPROM.read(3)-7;treb = EEPROM.read(4)-7;
  attfl = EEPROM.read(5)-14;attcn = EEPROM.read(7)-14;attsub = EEPROM.read(8)-14;ddd = EEPROM.read(9);tembro = EEPROM.read(10);
  attfr = EEPROM.read(11)-14;atttl = EEPROM.read(12)-14;atttr = EEPROM.read(13)-14;
  delay(500);
  audio();audio_in();
}
 void to_Timer(){newPosition = myEnc.read()/4;}
 
 void loop(){delay(10);
  if(analogRead(A0)&lt;900){menu++;cl1();myEnc.write(0);time=millis();w=1;if(menu&gt;11){menu=0;}}// меню
  if ( irrecv.decode( &amp;ir )) {Serial.print(&quot;0x&quot;);Serial.println( ir.value,HEX);time=millis();w=1;irrecv.resume();}// IR приемник  
  
   if(ir.value==CH_UP){menu++;g1=0;g2=0;cl1();time=millis();w=1;if(menu&gt;11){menu=0;}}// меню кнопка CH+
   if(ir.value==CH_DW){menu--;g1=0;g2=0;cl1();time=millis();w=1;if(menu&lt;0){menu=11;}}// меню кнопка CH-
   if(ir.value==CH){menu=0;g1=0;g2=0;cl1();time=millis();w=1;}// меню кнопка CH (menu===0)
   if(ir.value==IN){inn=1;g1=0;g2=0;time=millis();w=1;audio();}//  кнопка IN 
 //////////////////////////////////////// Громкость -79...0 дБ //////////////////////////////////////
 if(menu==0){   
     if(ir.value==VOL_UP){vol++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+  0xFFA857
     if(ir.value==0xFFFFFFFF and g1==1){vol++;g2=0;cl();time=millis();w=1;audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==VOL_DW){vol--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){vol--;g1=0;cl();time=millis();w=1;audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
     if(vol&gt;79){vol=79;}if(vol&lt;0){vol=0;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(vol&gt;79){vol=79;}if(vol&lt;0){vol=0;}audio();}
  lcd.setCursor(0,0);lcd.print(&quot;Volume  &quot;);
  lcd.print(&quot; &quot;);lcd.print(-79+vol);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);vol_d=vol-32;
   for(z=0,z0=0,z1=0;z&lt;=vol_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print(&quot;    &quot;);}}
   if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}}
 //////////////////////////////////////// Тембр НЧ +-14 дБ //////////////////////////////////////
 if(menu==1){
     if(ir.value==VOL_UP){bass++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){bass++;g2=0;cl();time=millis();w=1;audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==VOL_DW){bass--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){bass--;g1=0;cl();time=millis();w=1;audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
   if(bass&lt;-7){bass=-7;}if(bass&gt;7){bass=7;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    bass=bass+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(bass&lt;-7){bass=-7;}if(bass&gt;7){bass=7;}audio();}
  lcd.setCursor(0,0);lcd.print(&quot;Bass    &quot;);
  lcd.print(&quot; &quot;);lcd.print(bass*2);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);bass_d=(bass+7)*2;
   for(z=0,z0=0,z1=0;z&lt;=bass_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(&quot;    &quot;);}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}   
 //////////////////////////////////////// Тембр CЧ +-14 дБ //////////////////////////////////////
 if(menu==2){
     if(ir.value==VOL_UP){mid++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){mid++;g2=0;cl();time=millis();w=1;audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==VOL_DW){mid--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){mid--;g1=0;cl();time=millis();w=1;audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
   if(mid&lt;-7){mid=-7;}if(mid&gt;7){mid=7;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    mid=mid+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(mid&lt;-7){mid=-7;}if(mid&gt;7){mid=7;}audio();}
  lcd.setCursor(0,0);lcd.print(&quot;Middle  &quot;);
  lcd.print(&quot; &quot;);lcd.print(mid*2);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);mid_d=(mid+7)*2;
   for(z=0,z0=0,z1=0;z&lt;=mid_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(&quot;   &quot;);}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}} 
 //////////////////////////////////////// Тембр BЧ +-14 дБ //////////////////////////////////////
 if(menu==3){
     if(ir.value==VOL_UP){treb++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){treb++;g2=0;cl();time=millis();w=1;audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==VOL_DW){treb--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){treb--;g1=0;cl();time=millis();w=1;audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
   if(treb&lt;-7){treb=-7;}if(treb&gt;7){treb=7;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    treb=treb+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(treb&lt;-7){treb=-7;}if(treb&gt;7){treb=7;}audio();}
  lcd.setCursor(0,0);lcd.print(&quot;Treble  &quot;);
  lcd.print(&quot; &quot;);lcd.print(treb*2);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);treb_d=(treb+7)*2;
   for(z=0,z0=0,z1=0;z&lt;=treb_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(&quot;    &quot;);}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}    
   //////////////////////////////////// rock pop classic //////////////////////      
  if(menu==4){
     if(ir.value==VOL_UP){tembro++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){tembro++;g2=0;cl();time=millis();w=1;audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==VOL_DW){tembro--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){tembro--;g1=0;cl();time=millis();w=1;audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
      if(tembro&gt;4){tembro=0;}if(tembro&lt;0){tembro=4;}
     if (newPosition != oldPosition) {
    oldPosition = newPosition;
    tembro=tembro+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(tembro&gt;4){tembro=0;}if(tembro&lt;0){tembro=4;}}
    lcd.setCursor(0,0);lcd.print(&quot; Preset timbre  &quot;);
    if(tembro==0){lcd.setCursor(0,1);lcd.print(&quot;  manual mode  &quot;);}
    if(tembro==1){lcd.setCursor(0,1);lcd.print(&quot;      ROCK     &quot;);bass=4,mid=-2;treb=5;x=1;}
    if(tembro==2){lcd.setCursor(0,1);lcd.print(&quot;      POP      &quot;);bass=-3,mid=3;treb=-2;x=1;}
    if(tembro==3){lcd.setCursor(0,1);lcd.print(&quot;    CLASSIC    &quot;);bass=0,mid=0;treb=-2;x=1;}
    if(tembro==4){lcd.setCursor(0,1);lcd.print(&quot;    default    &quot;);bass=0,mid=0;treb=0;x=1;}
    if(x==1){audio();x=0;}
  }
   
  /////////////////////// ATT FL ///////////////////
   if(menu==5){
     if(ir.value==VOL_UP){attfl++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attfl++;g2=0;cl();time=millis();w=1;audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==VOL_DW){attfl--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attfl--;g1=0;cl();time=millis();w=1;audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
   if(attfl&lt;-14){attfl=-14;}if(attfl&gt;0){attfl=0;}
     
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attfl=attfl+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(attfl&lt;-14){attfl=-14;}if(attfl&gt;0){attfl=0;}audio();}
  lcd.setCursor(0,0);lcd.print(&quot;ATT FL   &quot;);
  lcd.print(&quot; &quot;);lcd.print(attfl);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);attfl_d=(attfl+14)*2;
   for(z=0,z0=0,z1=0;z&lt;=attfl_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(&quot;    &quot;);}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}  
  /////////////////////// ATT FR ///////////////////
   if(menu==6){
     if(ir.value==VOL_UP){attfr++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attfr++;g2=0;cl();time=millis();w=1;audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==VOL_DW){attfr--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attfr--;g1=0;cl();time=millis();w=1;audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
   if(attfr&lt;-14){attfr=-14;}if(attfr&gt;0){attfr=0;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attfr=attfr+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(attfr&lt;-14){attfr=-14;}if(attfr&gt;0){attfr=0;}audio();}
  lcd.setCursor(0,0);lcd.print(&quot;ATT FR   &quot;);
  lcd.print(&quot; &quot;);lcd.print(attfr);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);attfr_d=(attfr+14)*2;
   for(z=0,z0=0,z1=0;z&lt;=attfr_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(&quot;    &quot;);}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}  
  /////////////////////// ATT TL ///////////////////
  if(menu==7){
     if(ir.value==VOL_UP){atttl++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){atttl++;g2=0;cl();time=millis();w=1;audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==VOL_DW){atttl--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){atttl--;g1=0;cl();time=millis();w=1;audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
   if(atttl&lt;-14){atttl=-14;}if(atttl&gt;0){atttl=0;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    atttl=atttl+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(atttl&lt;-14){atttl=-14;}if(atttl&gt;0){atttl=0;}audio();}
  lcd.setCursor(0,0);lcd.print(&quot;ATT TL   &quot;);
  lcd.print(&quot; &quot;);lcd.print(atttl);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);atttl_d=(atttl+14)*2;
   for(z=0,z0=0,z1=0;z&lt;=atttl_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(&quot;    &quot;);}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}} 
 /////////////////////// ATT TR ///////////////////
  if(menu==8){
     if(ir.value==VOL_UP){atttr++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){atttr++;g2=0;cl();time=millis();w=1;audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==VOL_DW){atttr--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){atttr--;g1=0;cl();time=millis();w=1;audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
   if(atttr&lt;-14){atttr=-14;}if(atttr&gt;0){atttr=0;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    atttr=atttr+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(atttr&lt;-14){atttr=-14;}if(atttr&gt;0){atttr=0;}audio();}
  lcd.setCursor(0,0);lcd.print(&quot;ATT TR   &quot;);
  lcd.print(&quot; &quot;);lcd.print(atttr);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);atttr_d=(atttr+14)*2;
   for(z=0,z0=0,z1=0;z&lt;=atttr_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(&quot;    &quot;);}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}} 
 /////////////////////// ATT CN ///////////////////
    if(menu==9){
     if(ir.value==VOL_UP){attcn++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attcn++;g2=0;cl();time=millis();w=1;audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==VOL_DW){attcn--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attcn--;g1=0;cl();time=millis();w=1;audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
      if(attcn&lt;-14){attcn=-14;}if(attcn&gt;0){attcn=0;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attcn=attcn+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(attcn&lt;-14){attcn=-14;}if(attcn&gt;0){attcn=0;}audio();}
  lcd.setCursor(0,0);lcd.print(&quot;ATT CN   &quot;);
  lcd.print(&quot; &quot;);lcd.print(attcn);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);attcn_d=(attcn+14)*2;
   for(z=0,z0=0,z1=0;z&lt;=attcn_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(&quot;    &quot;);}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}  
  /////////////////////// ATT SUB ///////////////////
     if(menu==10){
     if(ir.value==VOL_UP){attsub++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attsub++;g2=0;cl();time=millis();w=1;audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==VOL_DW){attsub--;g1=0;g2=1;cl();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attsub--;g1=0;cl();time=millis();w=1;audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
       if(attsub&lt;-14){attsub=-14;}if(attsub&gt;0){attsub=0;time=millis();}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attsub=attsub+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(attsub&lt;-14){attsub=-14;}if(attsub&gt;0){attsub=0;}audio();}
  lcd.setCursor(0,0);lcd.print(&quot;ATT SUB  &quot;);
  lcd.print(&quot; &quot;);lcd.print(attsub);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);attsub_d=(attsub+14)*2;
   for(z=0,z0=0,z1=0;z&lt;=attsub_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(&quot;    &quot;);}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}  
   
  //////////////////////////// 3d ///////////////////////////////////////////////
 if(menu==11){
     if(ir.value==VOL_UP){ddd++;g1=1;g2=0;cl1();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){ddd++;g2=0;cl1();time=millis();w=1;audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==VOL_DW){ddd--;g1=0;g2=1;cl1();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){ddd--;g1=0;cl1();time=millis();w=1;audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
   if(ddd&lt;0){ddd=1;}if(ddd&gt;1){ddd=0;}
   if (newPosition != oldPosition) {
    oldPosition = newPosition;
    ddd=ddd+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(ddd&lt;0){ddd=1;}if(ddd&gt;1){ddd=0;}audio();}
   lcd.setCursor(0,0); if(ddd==0){lcd.print(&quot;       3D  ON  &quot;);}else{lcd.print(&quot;       3D  OFF  &quot;);} }  
 //////////// mute ////////////////////////
  if(mute==1&amp;&amp;(digitalRead(12)==LOW)){mute=0;menu=0;audio();cl1();}  
  if(digitalRead(12)==LOW){mute=1;menu=100;audio();cl1();}
  if(mute==1){lcd.setCursor(0,0);lcd.print(&quot;      MUTE      &quot;);delay(300);}
   
   ////////////////////////////////////////////////////////////////////////////////
  if(digitalRead(11)==LOW||inn==1){in++;if(in&gt;4){in=0;}audio_in();cl1();lcd.setCursor(0,0);lcd.print(&quot;    INPUT  &quot;);lcd.print(in+1);delay(2000);time=millis();w=1;inn=0;}// in
   
   if(millis()-time&gt;10000&amp;&amp; w==1&amp;&amp;mute==0){
     EEPROM.update(0,vol+79);EEPROM.update(1,in);EEPROM.update(2,bass+7);EEPROM.update(3,mid+7);EEPROM.update(4,treb+7);
     EEPROM.update(5,attfl+14);EEPROM.update(7,attcn+14);EEPROM.update(8,attsub+14);EEPROM.update(9,ddd);EEPROM.update(10,tembro);
     EEPROM.update(11,attfr+14);EEPROM.update(12,atttl+14);EEPROM.update(13,atttr+14);
     menu=0;w=0;cl();}
 
   
 }//loop
 
 void cl(){ir.value=0;delay(100);}
 void cl1(){ir.value=0;delay(300);lcd.clear();}
 void audio_in(){
  pt0.setInput(in); 
  pt0.setMute(0,0,0,0,0,0,0); 
  pt0.setFeature(1,1); 
}
 void audio(){
  pt.setFront_lk_att(abs(attfl));// att front L
  pt.setFront_rk_att(abs(attfr));// att front R
  pt.setCenter_att(abs(attcn));  // att center
  pt.setRear_lk_att(abs(atttl)); // att rear L
  pt.setRear_rk_att(abs(atttr)); // att rear R
  pt.setSub_att(abs(attsub));     // att sub
  pt.setFunc(mute,ddd,0); // mute,3d,тембр on/off
  pt.setBass(bass);            // BASS    -14...0...14 dB (int -7...0...7)
  pt.setMiddle(mid);          // MIDDLE  -14...0...14 dB (int -7...0...7)
  pt.setTreble(treb);          // TREBLE  -14...0...14 dB (int -7...0...7)
  pt.setVol(abs(vol)); // -79...0
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[shuhrat.ps]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1841</uri>
			</author>
			<updated>2023-11-24T01:42:10Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8906#p8906</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: pt2322 pt2323]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8905#p8905" />
			<content type="html"><![CDATA[<p>как исправит это мерцание <div class="fancy_video_tag_player"><iframe class="youtube-player" type="text/html" width="640" height="385" src="https://www.youtube.com/embed/ekEEzqY6qKo" frameborder="0"></iframe></div></p>]]></content>
			<author>
				<name><![CDATA[shuhrat.ps]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1841</uri>
			</author>
			<updated>2023-11-24T01:32:16Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8905#p8905</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: pt2322 pt2323]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8899#p8899" />
			<content type="html"><![CDATA[<p><a href="http://rcl-radio.ru/?p=66506">http://rcl-radio.ru/?p=66506</a></p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2023-11-22T12:15:37Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8899#p8899</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[pt2322 pt2323]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8896#p8896" />
			<content type="html"><![CDATA[<p>Какие команды надо изменять для lcd 2004 i2c </p><div class="codebox"><pre><code>#define  CH_UP  0x2FDF20D
#define  CH_DW  0x2FDF30D
#define  CH     0x2FDF50D
#define  IN     0x2FDF70D
#define  VOL_UP 0x2FDF40D
#define  VOL_DW 0x2FDF80D


#include &lt;Wire.h&gt;
#include &lt;PT2322.h&gt;
#include &lt;PT2323.h&gt;
#include &lt;LiquidCrystal.h&gt;
#include &lt;EEPROM.h&gt;
#include &lt;Encoder.h&gt;
#include &lt;MsTimer2.h&gt;
#include &lt;boarddefs.h&gt;
#include &lt;IRremote.h&gt;
 PT2322 pt; PT2323 pt0; 
  Encoder myEnc(9, 8);//CLK, DT подключение энкодера
  IRrecv irrecv(13); // указываем вывод модуля IR приемника
   decode_results ir;
 LiquidCrystal lcd(7, 6, 2, 3, 4, 5);// RS,E,D4,D5,D6,D7 подключение LCD
   byte a1[8]={0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
   byte a2[8]={0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
   byte a3[8]={0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000};
    unsigned long newPosition,time,oldPosition  = -999;
   int menu,menu2,w,vol,vol_d,z,z0,z1,in,bass,bass_d,mid,mid_d,treb,treb_d,attfl,attfl_d,attcn,attcn_d,attsub,attsub_d,ddd,tembro,x,attfr,attfr_d,atttl,atttl_d,atttr,atttr_d,mute;
   int g1,g2,inn;
   
void setup() {
  Wire.begin();Serial.begin(9600);irrecv.enableIRIn(); // запускаем модуль IR
  lcd.begin(16, 2);lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
  pinMode(A0,INPUT); // menu кнопка энкодера 
  pinMode(12,INPUT); // MUTE
  pinMode(11,INPUT); // IN
  MsTimer2::set(2, to_Timer);MsTimer2::start();
   vol = EEPROM.read(0)-79;in = EEPROM.read(1);bass = EEPROM.read(2)-7;mid = EEPROM.read(3)-7;treb = EEPROM.read(4)-7;
  attfl = EEPROM.read(5)-14;attcn = EEPROM.read(7)-14;attsub = EEPROM.read(8)-14;ddd = EEPROM.read(9);tembro = EEPROM.read(10);
  attfr = EEPROM.read(11)-14;atttl = EEPROM.read(12)-14;atttr = EEPROM.read(13)-14;
  delay(500);
  audio();audio_in();
}
 void to_Timer(){newPosition = myEnc.read()/4;}
 
 void loop(){delay(10);
  if(analogRead(A0)&lt;900){menu++;cl1();myEnc.write(0);time=millis();w=1;if(menu&gt;11){menu=0;}}// меню
  if ( irrecv.decode( &amp;ir )) {Serial.print(&quot;0x&quot;);Serial.println( ir.value,HEX);time=millis();w=1;irrecv.resume();}// IR приемник  
  
   if(ir.value==CH_UP){menu++;g1=0;g2=0;cl1();time=millis();w=1;if(menu&gt;11){menu=0;}}// меню кнопка CH+
   if(ir.value==CH_DW){menu--;g1=0;g2=0;cl1();time=millis();w=1;if(menu&lt;0){menu=11;}}// меню кнопка CH-
   if(ir.value==CH){menu=0;g1=0;g2=0;cl1();time=millis();w=1;}// меню кнопка CH (menu===0)
   if(ir.value==IN){inn=1;g1=0;g2=0;time=millis();w=1;audio();}//  кнопка IN 
 //////////////////////////////////////// Громкость -79...0 дБ //////////////////////////////////////
 if(menu==0){   
     if(ir.value==VOL_UP){vol++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+  0xFFA857
     if(ir.value==0xFFFFFFFF and g1==1){vol++;g2=0;cl();time=millis();w=1;audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==VOL_DW){vol--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){vol--;g1=0;cl();time=millis();w=1;audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
     if(vol&gt;79){vol=79;}if(vol&lt;0){vol=0;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(vol&gt;79){vol=79;}if(vol&lt;0){vol=0;}audio();}
  lcd.setCursor(0,0);lcd.print(&quot;Volume  &quot;);
  lcd.print(&quot; &quot;);lcd.print(-79+vol);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);vol_d=vol-32;
   for(z=0,z0=0,z1=0;z&lt;=vol_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print(&quot;    &quot;);}}
   if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}}
 //////////////////////////////////////// Тембр НЧ +-14 дБ //////////////////////////////////////
 if(menu==1){
     if(ir.value==VOL_UP){bass++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){bass++;g2=0;cl();time=millis();w=1;audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==VOL_DW){bass--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){bass--;g1=0;cl();time=millis();w=1;audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
   if(bass&lt;-7){bass=-7;}if(bass&gt;7){bass=7;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    bass=bass+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(bass&lt;-7){bass=-7;}if(bass&gt;7){bass=7;}audio();}
  lcd.setCursor(0,0);lcd.print(&quot;Bass    &quot;);
  lcd.print(&quot; &quot;);lcd.print(bass*2);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);bass_d=(bass+7)*2;
   for(z=0,z0=0,z1=0;z&lt;=bass_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(&quot;    &quot;);}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}   
 //////////////////////////////////////// Тембр CЧ +-14 дБ //////////////////////////////////////
 if(menu==2){
     if(ir.value==VOL_UP){mid++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){mid++;g2=0;cl();time=millis();w=1;audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==VOL_DW){mid--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){mid--;g1=0;cl();time=millis();w=1;audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
   if(mid&lt;-7){mid=-7;}if(mid&gt;7){mid=7;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    mid=mid+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(mid&lt;-7){mid=-7;}if(mid&gt;7){mid=7;}audio();}
  lcd.setCursor(0,0);lcd.print(&quot;Middle  &quot;);
  lcd.print(&quot; &quot;);lcd.print(mid*2);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);mid_d=(mid+7)*2;
   for(z=0,z0=0,z1=0;z&lt;=mid_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(&quot;   &quot;);}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}} 
 //////////////////////////////////////// Тембр BЧ +-14 дБ //////////////////////////////////////
 if(menu==3){
     if(ir.value==VOL_UP){treb++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){treb++;g2=0;cl();time=millis();w=1;audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==VOL_DW){treb--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){treb--;g1=0;cl();time=millis();w=1;audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
   if(treb&lt;-7){treb=-7;}if(treb&gt;7){treb=7;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    treb=treb+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(treb&lt;-7){treb=-7;}if(treb&gt;7){treb=7;}audio();}
  lcd.setCursor(0,0);lcd.print(&quot;Treble  &quot;);
  lcd.print(&quot; &quot;);lcd.print(treb*2);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);treb_d=(treb+7)*2;
   for(z=0,z0=0,z1=0;z&lt;=treb_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(&quot;    &quot;);}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}    
   //////////////////////////////////// rock pop classic //////////////////////      
  if(menu==4){
     if(ir.value==VOL_UP){tembro++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){tembro++;g2=0;cl();time=millis();w=1;audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==VOL_DW){tembro--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){tembro--;g1=0;cl();time=millis();w=1;audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
      if(tembro&gt;4){tembro=0;}if(tembro&lt;0){tembro=4;}
     if (newPosition != oldPosition) {
    oldPosition = newPosition;
    tembro=tembro+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(tembro&gt;4){tembro=0;}if(tembro&lt;0){tembro=4;}}
    lcd.setCursor(0,0);lcd.print(&quot; Preset timbre  &quot;);
    if(tembro==0){lcd.setCursor(0,1);lcd.print(&quot;  manual mode  &quot;);}
    if(tembro==1){lcd.setCursor(0,1);lcd.print(&quot;      ROCK     &quot;);bass=4,mid=-2;treb=5;x=1;}
    if(tembro==2){lcd.setCursor(0,1);lcd.print(&quot;      POP      &quot;);bass=-3,mid=3;treb=-2;x=1;}
    if(tembro==3){lcd.setCursor(0,1);lcd.print(&quot;    CLASSIC    &quot;);bass=0,mid=0;treb=-2;x=1;}
    if(tembro==4){lcd.setCursor(0,1);lcd.print(&quot;    default    &quot;);bass=0,mid=0;treb=0;x=1;}
    if(x==1){audio();x=0;}
  }
   
  /////////////////////// ATT FL ///////////////////
   if(menu==5){
     if(ir.value==VOL_UP){attfl++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attfl++;g2=0;cl();time=millis();w=1;audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==VOL_DW){attfl--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attfl--;g1=0;cl();time=millis();w=1;audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
   if(attfl&lt;-14){attfl=-14;}if(attfl&gt;0){attfl=0;}
     
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attfl=attfl+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(attfl&lt;-14){attfl=-14;}if(attfl&gt;0){attfl=0;}audio();}
  lcd.setCursor(0,0);lcd.print(&quot;ATT FL   &quot;);
  lcd.print(&quot; &quot;);lcd.print(attfl);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);attfl_d=(attfl+14)*2;
   for(z=0,z0=0,z1=0;z&lt;=attfl_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(&quot;    &quot;);}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}  
  /////////////////////// ATT FR ///////////////////
   if(menu==6){
     if(ir.value==VOL_UP){attfr++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attfr++;g2=0;cl();time=millis();w=1;audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==VOL_DW){attfr--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attfr--;g1=0;cl();time=millis();w=1;audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
   if(attfr&lt;-14){attfr=-14;}if(attfr&gt;0){attfr=0;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attfr=attfr+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(attfr&lt;-14){attfr=-14;}if(attfr&gt;0){attfr=0;}audio();}
  lcd.setCursor(0,0);lcd.print(&quot;ATT FR   &quot;);
  lcd.print(&quot; &quot;);lcd.print(attfr);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);attfr_d=(attfr+14)*2;
   for(z=0,z0=0,z1=0;z&lt;=attfr_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(&quot;    &quot;);}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}  
  /////////////////////// ATT TL ///////////////////
  if(menu==7){
     if(ir.value==VOL_UP){atttl++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){atttl++;g2=0;cl();time=millis();w=1;audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==VOL_DW){atttl--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){atttl--;g1=0;cl();time=millis();w=1;audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
   if(atttl&lt;-14){atttl=-14;}if(atttl&gt;0){atttl=0;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    atttl=atttl+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(atttl&lt;-14){atttl=-14;}if(atttl&gt;0){atttl=0;}audio();}
  lcd.setCursor(0,0);lcd.print(&quot;ATT TL   &quot;);
  lcd.print(&quot; &quot;);lcd.print(atttl);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);atttl_d=(atttl+14)*2;
   for(z=0,z0=0,z1=0;z&lt;=atttl_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(&quot;    &quot;);}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}} 
 /////////////////////// ATT TR ///////////////////
  if(menu==8){
     if(ir.value==VOL_UP){atttr++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){atttr++;g2=0;cl();time=millis();w=1;audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==VOL_DW){atttr--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){atttr--;g1=0;cl();time=millis();w=1;audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
   if(atttr&lt;-14){atttr=-14;}if(atttr&gt;0){atttr=0;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    atttr=atttr+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(atttr&lt;-14){atttr=-14;}if(atttr&gt;0){atttr=0;}audio();}
  lcd.setCursor(0,0);lcd.print(&quot;ATT TR   &quot;);
  lcd.print(&quot; &quot;);lcd.print(atttr);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);atttr_d=(atttr+14)*2;
   for(z=0,z0=0,z1=0;z&lt;=atttr_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(&quot;    &quot;);}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}} 
 /////////////////////// ATT CN ///////////////////
    if(menu==9){
     if(ir.value==VOL_UP){attcn++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attcn++;g2=0;cl();time=millis();w=1;audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==VOL_DW){attcn--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attcn--;g1=0;cl();time=millis();w=1;audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
      if(attcn&lt;-14){attcn=-14;}if(attcn&gt;0){attcn=0;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attcn=attcn+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(attcn&lt;-14){attcn=-14;}if(attcn&gt;0){attcn=0;}audio();}
  lcd.setCursor(0,0);lcd.print(&quot;ATT CN   &quot;);
  lcd.print(&quot; &quot;);lcd.print(attcn);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);attcn_d=(attcn+14)*2;
   for(z=0,z0=0,z1=0;z&lt;=attcn_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(&quot;    &quot;);}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}  
  /////////////////////// ATT SUB ///////////////////
     if(menu==10){
     if(ir.value==VOL_UP){attsub++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attsub++;g2=0;cl();time=millis();w=1;audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==VOL_DW){attsub--;g1=0;g2=1;cl();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attsub--;g1=0;cl();time=millis();w=1;audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
       if(attsub&lt;-14){attsub=-14;}if(attsub&gt;0){attsub=0;time=millis();}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attsub=attsub+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(attsub&lt;-14){attsub=-14;}if(attsub&gt;0){attsub=0;}audio();}
  lcd.setCursor(0,0);lcd.print(&quot;ATT SUB  &quot;);
  lcd.print(&quot; &quot;);lcd.print(attsub);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);attsub_d=(attsub+14)*2;
   for(z=0,z0=0,z1=0;z&lt;=attsub_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(&quot;    &quot;);}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}  
   
  //////////////////////////// 3d ///////////////////////////////////////////////
 if(menu==11){
     if(ir.value==VOL_UP){ddd++;g1=1;g2=0;cl1();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){ddd++;g2=0;cl1();time=millis();w=1;audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==VOL_DW){ddd--;g1=0;g2=1;cl1();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){ddd--;g1=0;cl1();time=millis();w=1;audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
   if(ddd&lt;0){ddd=1;}if(ddd&gt;1){ddd=0;}
   if (newPosition != oldPosition) {
    oldPosition = newPosition;
    ddd=ddd+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(ddd&lt;0){ddd=1;}if(ddd&gt;1){ddd=0;}audio();}
   lcd.setCursor(0,0); if(ddd==0){lcd.print(&quot;     3D  ON  &quot;);}else{lcd.print(&quot;     3D  OFF  &quot;);} }  
 //////////// mute ////////////////////////
  if(mute==1&amp;&amp;(digitalRead(12)==HIGH)){mute=0;menu=0;audio();cl1();}  
  if(digitalRead(12)==HIGH){mute=1;menu=100;audio();cl1();}
  if(mute==1){lcd.setCursor(0,0);lcd.print(&quot;      MUTE      &quot;);delay(300);}
   
   ////////////////////////////////////////////////////////////////////////////////
  if(digitalRead(11)==HIGH||inn==1){in++;if(in&gt;4){in=0;}audio_in();cl1();lcd.setCursor(0,0);lcd.print(&quot;    INPUT  &quot;);lcd.print(in+1);delay(2000);time=millis();w=1;inn=0;}// in
   
   if(millis()-time&gt;10000&amp;&amp; w==1&amp;&amp;mute==0){
     EEPROM.update(0,vol+79);EEPROM.update(1,in);EEPROM.update(2,bass+7);EEPROM.update(3,mid+7);EEPROM.update(4,treb+7);
     EEPROM.update(5,attfl+14);EEPROM.update(7,attcn+14);EEPROM.update(8,attsub+14);EEPROM.update(9,ddd);EEPROM.update(10,tembro);
     EEPROM.update(11,attfr+14);EEPROM.update(12,atttl+14);EEPROM.update(13,atttr+14);
     menu=0;w=0;cl();}
 
   
 }//loop
 
 void cl(){ir.value=0;delay(100);}
 void cl1(){ir.value=0;delay(300);lcd.clear();}
 void audio_in(){
  pt0.setInput(in); 
  pt0.setMute(0,0,0,0,0,0,0); 
  pt0.setFeature(1,1); 
}
 void audio(){
  pt.setFront_lk_att(abs(attfl));// att front L
  pt.setFront_rk_att(abs(attfr));// att front R
  pt.setCenter_att(abs(attcn));  // att center
  pt.setRear_lk_att(abs(atttl)); // att rear L
  pt.setRear_rk_att(abs(atttr)); // att rear R
  pt.setSub_att(abs(attsub));     // att sub
  pt.setFunc(mute,ddd,0); // mute,3d,тембр on/off
  pt.setBass(bass);            // BASS    -14...0...14 dB (int -7...0...7)
  pt.setMiddle(mid);          // MIDDLE  -14...0...14 dB (int -7...0...7)
  pt.setTreble(treb);          // TREBLE  -14...0...14 dB (int -7...0...7)
  pt.setVol(abs(vol)); // -79...0
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[shuhrat.ps]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1841</uri>
			</author>
			<updated>2023-11-22T01:42:35Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8896#p8896</id>
		</entry>
</feed>
