<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[forum.rcl-radio.ru &mdash; PT2314]]></title>
	<link rel="self" href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=135&amp;type=atom" />
	<updated>2024-05-08T14:29:46Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.rcl-radio.ru/viewtopic.php?id=135</id>
		<entry>
			<title type="html"><![CDATA[Re: PT2314]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=10366#p10366" />
			<content type="html"><![CDATA[<p>Уважаемый liman324. Подскажите пожалуйста, как изменить название входов в скетче. Что бы на дисплее было название устройства. Вместо Input 1 - DAC , ну и так далее. Заранее благодарен.</p>]]></content>
			<author>
				<name><![CDATA[alex1961]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2084</uri>
			</author>
			<updated>2024-05-08T14:29:46Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=10366#p10366</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PT2314]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=9420#p9420" />
			<content type="html"><![CDATA[<p>if(ir.value==IR_5){in++;gr1=0;gr2=0;cl();times=millis()-8000;w=1;w2=1;if(in&gt;3){in=0;}lcd.setCursor(4,0);lcd.print(&quot;INPUT &quot;);lcd.print(in+1);audio();delay(200);}// IN</p><p>заменить на </p><p>if(ir.value==IR_5){in++;cl();menu=100;times=millis()-8000;w=1;w2=1;if(in&gt;3){in=0;}lcd.setCursor(4,0);lcd.print(&quot;INPUT &quot;);lcd.print(in+1);audio();delay(200);}// IN</p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2024-02-12T15:09:37Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=9420#p9420</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PT2314]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=9416#p9416" />
			<content type="html"><![CDATA[<p>Я прошу прощения, выяснил в чём косяк, в arduino ide почему то была установлена lgt8f328p, как это произошло до сих пор загадка. Теперь ещё косяк))) (небольшой))) при переключении входов с пульта входы переключаются но на дисплее это происходит не так как с кнопки, нет задержки, что ли???</p>]]></content>
			<author>
				<name><![CDATA[yuraword]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=780</uri>
			</author>
			<updated>2024-02-11T20:26:56Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=9416#p9416</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PT2314]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=9402#p9402" />
			<content type="html"><![CDATA[<p>проверьте скорость тактовой частоты, мигание светодиода на D13.<br />Такт мигания 1с</p><div class="codebox"><pre><code>void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(500);                       // wait for a second
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2024-02-10T22:05:27Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=9402#p9402</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PT2314]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=9401#p9401" />
			<content type="html"><![CDATA[<p>Очень интересно)) У меня SETINGS - 4сек; POWER - 5сек. Может дело в левой PT2314?</p>]]></content>
			<author>
				<name><![CDATA[yuraword]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=780</uri>
			</author>
			<updated>2024-02-10T18:59:08Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=9401#p9401</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PT2314]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=9398#p9398" />
			<content type="html"><![CDATA[<p>Я проверял в скетч в железе, у меня таких проблем не было.</p><div class="quotebox"><blockquote><p>у и к примеру нажимаю кнопку&quot;SET&quot; и надпись &quot;SETINGS&quot; висит очень долго, тоже самое и с &quot;POWER ON, OFF&quot;.</p></blockquote></div><p>SETINGS - 2 секунды</p><p>POWER - 3 секунды</p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2024-02-10T12:53:15Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=9398#p9398</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PT2314]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=9397#p9397" />
			<content type="html"><![CDATA[<p>Вот теперь входы переключаются адекватно!!! Не знаю что Вы сделали с энкодером, но стало намного хуже, приходится делать ОООочень много оборотов, может надо убрать подтягивающие резисторы на 10К? Но раньше работал как надо! Ну и к примеру нажимаю кнопку&quot;SET&quot; и надпись &quot;SETINGS&quot; висит очень долго, тоже самое и с &quot;POWER ON, OFF&quot;. Можно ли сократить раза в 3 это время? Ну и последний момент, выставляю в скетче яркость дисплея &quot;10&quot;, заливаю, а яркость остаётся всё равно &quot;50&quot;, да и почему то при сбосе питания сбиваются все настройки</p>]]></content>
			<author>
				<name><![CDATA[yuraword]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=780</uri>
			</author>
			<updated>2024-02-10T10:41:31Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=9397#p9397</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PT2314]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=9368#p9368" />
			<content type="html"><![CDATA[<p>Основной скетч - <a href="http://rcl-radio.ru/?p=76005">http://rcl-radio.ru/?p=76005</a></p><p>Кнопки с резисторами, кнопка нажатие === +5V, кнопка не нажата === подтягивающий резистор 10 К на GND</p><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)
#define BRIG 50        // Яркость подсветки экрана в режиме POWER OFF (0...255)
#include &lt;Wire.h&gt; 
#include &lt;PT2314.h&gt;            // http://forum.rcl-radio.ru/misc.php?action=pan_download&amp;item=434&amp;download=1
#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;
#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/08/DS3231.zip
   DS3231 clock;RTCDateTime DateTime;
   PT2314 pt;
   LiquidCrystal_I2C lcd(0x27,16,2);  // Устанавливаем дисплей
   IRrecv irrecv(12); // указываем вывод модуля IR приемника
   Encoder myEnc(8, 9);// DT, CLK
   decode_results ir; 
      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};
      byte a[6],d1,d2,d3,d4,d5,d6,e1,e2,e3,w,w2,i,www,power,save,gr1,gr2;
      int menu,menu0,menu1=1,menu2=0,vol,bass,treb,att_l,att_r,in,loud_on,gain0,gain1,gain2,gain3,gain4,mute,mute1,mute2,brig,hour,minut,secon;
      long times,oldPosition  = -999,newPosition;
 
 
void setup() {
  delay(200);
  irrecv.enableIRIn();lcd.init();lcd.backlight();clock.begin();Serial.begin(9600);
  pinMode(10,INPUT);  // МЕНЮ КНОПКА SW энкодера
  pinMode(2,INPUT);   // КНОПКА SET
  pinMode(3,INPUT);   // КНОПКА IN
  pinMode(4,INPUT);   // КНОПКА MUTE
  pinMode(5,INPUT);   // КНОПКА STANDBY
  pinMode(7,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ STANDBY
  pinMode(6,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ ПОДСВЕТКОЙ
  analogWrite(6, 255);
  lcd.setCursor(0,0);lcd.print(&quot;Sound Processor&quot;);lcd.setCursor(0,1);lcd.print(&quot;PT2314&quot;); delay(2000);lcd.clear();
  MsTimer2::set(1, to_Timer);MsTimer2::start();
  //  clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
  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);}}// очистка памяти при первом включении  
  vol = EEPROM.read(0);treb = EEPROM.read(1)-7;bass = EEPROM.read(2)-7;in = EEPROM.read(3);
  att_l = EEPROM.read(4);att_r = EEPROM.read(5);gain1 = EEPROM.read(6);gain2 = EEPROM.read(7);
  gain3 = EEPROM.read(8);gain4 = EEPROM.read(9);loud_on = EEPROM.read(10);brig = EEPROM.read(11);
  audio();
  analogWrite(6, brig);
}
 
void loop() {
  DateTime = clock.getDateTime();hour = DateTime.hour;minut = DateTime.minute;secon = DateTime.second;
 
////////////////////// IR ///////////////////////////////////////////////////////////////
  if ( irrecv.decode( &amp;ir )) {Serial.print(&quot;0x&quot;);Serial.println( ir.value,HEX);irrecv.resume();times=millis();w=1;}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
  if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта  
 
    if(mute==0&amp;&amp;power==0){
  if(ir.value==IR_6&amp;&amp;menu1==1){menu1=0;menu2=1;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;lcd.setCursor(4,0);lcd.print(&quot;SETTING&quot;); delay(2000);lcd.clear();}
  if(ir.value==IR_6&amp;&amp;menu2==1){menu1=1;menu2=0;menu=0;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;lcd.setCursor(6,0);lcd.print(&quot;MENU&quot;); delay(2000);lcd.clear();}
 
  if(ir.value==IR_1&amp;&amp;menu1==1){menu++;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu&gt;2){menu=0;}}//меню 1
  if(ir.value==IR_2&amp;&amp;menu1==1){menu--;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu&lt;0){menu=2;}}//меню 1
 
  if(ir.value==IR_1&amp;&amp;menu2==1){menu0++;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu0&gt;4){menu0=0;}}//меню 2
  if(ir.value==IR_2&amp;&amp;menu2==1){menu0--;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu0&lt;0){menu0=4;}}//меню 2
 
  if(ir.value==IR_5){in++;gr1=0;gr2=0;cl();times=millis()-8000;w=1;w2=1;if(in&gt;3){in=0;}lcd.setCursor(4,0);lcd.print(&quot;INPUT &quot;);lcd.print(in+1);audio();delay(200);}// IN
  }
 
  if(ir.value==IR_7&amp;&amp;mute==0&amp;&amp;power==0){mute=1;pt.setAttR(31);pt.setAttL(31);gr1=0;gr2=0;cl();lcd.setCursor(6,0);lcd.print(&quot;MUTE&quot;);menu1=100;menu2=100;delay(500);}// MUTE
  if(ir.value==IR_7&amp;&amp;mute==1&amp;&amp;power==0){mute=0;cl();menu1=1;menu=0;gr1=0;gr2=0;cl();audio();}// MUTE
 
  if(ir.value==IR_8&amp;&amp;power==0){power=1;pt.setAttR(31);pt.setAttL(31);audio();gr1=0;gr2=0;cl();lcd.clear();lcd.setCursor(3,0);lcd.print(&quot;POWER  OFF&quot;);menu0=0;menu1=0;menu2=0;save=1;analogWrite(6, BRIG);delay(3000);lcd.clear();}// power off
  if(ir.value==IR_8&amp;&amp;power==1){power=0;gr1=0;gr2=0;cl();lcd.backlight();lcd.clear();lcd.setCursor(3,0);lcd.print(&quot;POWER   ON &quot;);menu1=1;menu=0;myEnc.write(0);audio();analogWrite(6, brig);delay(3000);lcd.clear();}// power on
///////////////////////////////////////////////////////////////////////////////////////// 
 
/////////////////////////////// УПРАВЛЕНИЕ //////////////////////////////////////////////  
  if(mute==0&amp;&amp;power==0){
  if(digitalRead(2)==HIGH&amp;&amp;menu1==1){menu1=0;menu2=1;cl();times=millis();w=1;w2=1;lcd.setCursor(4,0);lcd.print(&quot;SETTING&quot;); delay(2000);lcd.clear();}
  if(digitalRead(2)==HIGH&amp;&amp;menu2==1){menu1=1;menu2=0;menu=0;cl();times=millis();w=1;w2=1;lcd.setCursor(6,0);lcd.print(&quot;MENU&quot;); delay(2000);lcd.clear();}
 
  if(digitalRead(10)==LOW&amp;&amp;menu1==1){menu++;cl();times=millis();w=1;w2=1;if(menu&gt;2){menu=0;}}//меню 1
  if(digitalRead(10)==LOW&amp;&amp;menu2==1){menu0++;cl();times=millis();w=1;w2=1;if(menu0&gt;4){menu0=0;}}//меню 2
 
  if(digitalRead(3)==HIGH){in++;cl();menu=100;times=millis()-8000;w=1;w2=1;if(in&gt;3){in=0;}lcd.setCursor(4,0);lcd.print(&quot;INPUT &quot;);lcd.print(in+1);audio();delay(200);}// IN
  }
 
  if(digitalRead(4)==HIGH&amp;&amp;mute==0&amp;&amp;power==0){mute=1;pt.setAttR(31);pt.setAttL(31);cl();lcd.setCursor(6,0);lcd.print(&quot;MUTE&quot;);menu1=100;menu2=100;delay(500);}// MUTE
  if(digitalRead(4)==HIGH&amp;&amp;mute==1&amp;&amp;power==0){mute=0;cl();menu1=1;menu=0;cl();audio();}// MUTE
 
  if(digitalRead(5)==HIGH&amp;&amp;power==0){power=1;pt.setAttR(31);pt.setAttL(31);lcd.clear();lcd.setCursor(3,0);lcd.print(&quot;POWER  OFF&quot;);menu0=0;menu1=0;menu2=0;save=1;analogWrite(6, 50);delay(3000);lcd.clear();}// power off
  if(digitalRead(5)==HIGH&amp;&amp;power==1){power=0;lcd.backlight();lcd.clear();lcd.setCursor(3,0);lcd.print(&quot;POWER   ON &quot;);menu1=1;menu=0;myEnc.write(0);audio();analogWrite(6, brig);delay(3000);lcd.clear();}// power on
    if(power==0){digitalWrite(7,HIGH);}
  //if(power==0){digitalWrite(7,LOW);}// инверсия выхода STANDBY


  
 
  if(save==1&amp;&amp;w2==1){save=0;w2=0;
     EEPROM.update(0,vol);EEPROM.update(1,treb+7);EEPROM.update(2,bass+7);EEPROM.update(3,in);
     EEPROM.update(4,att_l);EEPROM.update(5,att_r);EEPROM.update(6,gain1);EEPROM.update(7,gain2);
     EEPROM.update(8,gain3);EEPROM.update(9,gain4);EEPROM.update(10,loud_on);EEPROM.update(11,brig);}
///////////////////////////////////////////////////////////////////////////////////////// 
 
////////////// VOLUME ///////////////////////////////////////////////////////////////////
 if(menu==0&amp;&amp;menu1==1){
   if(ir.value==IR_3){vol++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;vol_func();audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl1();times=millis();w=1;w2=1;vol_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){vol--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;vol_func();audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl1();times=millis();w=1;w2=1;vol_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   vol=vol+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;vol_func();audio();}
   a[0]= vol/10;a[1]=vol%10;
   for(i=0;i&lt;2;i++){switch(i){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
 
   lcd.setCursor(0,0);lcd.print(&quot;IN&quot;);lcd.print(in+1);lcd.print(&quot;  VOL&quot;);
   if(vol&lt;0){lcd.setCursor(9,1);lcd.write((uint8_t)8);}else{lcd.setCursor(9,1);lcd.print(&quot; &quot;);}
   times_f();
   }
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// BASS ///////////////////////////////////////////////////////////////////
 if(menu==1&amp;&amp;menu1==1){
   if(ir.value==IR_3){bass++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;bass_func();audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){bass++;gr2=0;cl1();times=millis();w=1;w2=1;bass_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){bass--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;bass_func();audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){bass--;gr1=0;cl1();times=millis();w=1;w2=1;bass_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   bass=bass+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;bass_func();audio();}
   a[0]= abs(bass*2)/10;a[1]=abs(bass*2)%10;
   for(i=0;i&lt;2;i++){switch(i){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
 
   lcd.setCursor(0,0);lcd.print(&quot;BASS   dB&quot;);
   if(bass&lt;0){lcd.setCursor(9,1);lcd.write((uint8_t)8);}else{lcd.setCursor(9,1);lcd.print(&quot; &quot;);}
   times_f();
   }
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// TREBLE ///////////////////////////////////////////////////////////////////
 if(menu==2&amp;&amp;menu1==1){
   if(ir.value==IR_3){treb++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;treb_func();audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){treb++;gr2=0;cl1();times=millis();w=1;w2=1;treb_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){treb--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;treb_func();audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){treb--;gr1=0;cl1();times=millis();w=1;w2=1;treb_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   treb=treb+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;treb_func();audio();}
   a[0]= abs(treb*2)/10;a[1]=abs(treb*2)%10;
 
   for(i=0;i&lt;2;i++){switch(i){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
 
   lcd.setCursor(0,0);lcd.print(&quot;TREBLE dB&quot;);
   if(treb&lt;0){lcd.setCursor(9,1);lcd.write((uint8_t)8);}else{lcd.setCursor(9,1);lcd.print(&quot; &quot;);}
   times_f();
   }
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// ATT_L ///////////////////////////////////////////////////////////////////
 if(menu0==0&amp;&amp;menu2==1){
   if(ir.value==IR_3){att_l++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;att_l_func();audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){att_l++;gr2=0;cl1();times=millis();w=1;w2=1;att_l_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){att_l--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;att_l_func();audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){att_l--;gr1=0;cl1();times=millis();w=1;w2=1;att_l_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   att_l=att_l+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;att_l_func();audio();}
   a[0]= abs(att_l)/10;a[1]=abs(att_l)%10;
   for(i=0;i&lt;2;i++){switch(i){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
 
   lcd.setCursor(0,0);lcd.print(&quot;ATT_L&quot;);
   lcd.setCursor(0,1);lcd.print(-att_l*1.25,2);lcd.print(&quot; &quot;);lcd.setCursor(6,1);lcd.print(&quot;dB&quot;);}
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// ATT_R ///////////////////////////////////////////////////////////////////
 if(menu0==1&amp;&amp;menu2==1){
   if(ir.value==IR_3){att_r++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;att_r_func();audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){att_r++;gr2=0;cl1();times=millis();w=1;w2=1;att_r_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){att_r--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;att_r_func();audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){att_r--;gr1=0;cl1();times=millis();w=1;w2=1;att_r_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   att_r=att_r+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;att_r_func();audio();}
   a[0]= abs(att_r)/10;a[1]=abs(att_r)%10;
   for(i=0;i&lt;2;i++){switch(i){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
 
   lcd.setCursor(0,0);lcd.print(&quot;ATT_R&quot;);
   lcd.setCursor(0,1);lcd.print(-att_r*1.25,2);lcd.print(&quot; &quot;);lcd.setCursor(6,1);lcd.print(&quot;dB&quot;);}
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// INPUT GAIN ///////////////////////////////////////////////////////////////////
 if(menu0==2&amp;&amp;menu2==1){
   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();times=millis();w=1;w2=1;gain_func();www=1;}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){gain0++;gr2=0;cl1();times=millis();w=1;w2=1;gain_func();www=1;}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){gain0--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;gain_func();www=1;}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){gain0--;gr1=0;cl1();times=millis();w=1;w2=1;gain_func();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;}
   gain0=gain0+newPosition;myEnc.write(0);newPosition=0;times=millis();www=1;w=1;w2=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;
     }  
     a[0]= abs(gain0);
 
   for(i=0;i&lt;1;i++){switch(i){case 0: e1=13,e2=14,e3=15;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
   lcd.setCursor(0,1);lcd.print(&quot;GAIN &quot;);lcd.print(gain0*3.75,2);lcd.print(&quot; &quot;);lcd.setCursor(10,1);lcd.print(&quot;dB&quot;);
   if(www==1){audio();www=0;}
   lcd.setCursor(0,0);lcd.print(&quot;INPUT &quot;);lcd.print(in+1);}
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// LOUDNESS ///////////////////////////////////////////////////////////////////
 if(menu0==3&amp;&amp;menu2==1){
   if(ir.value==IR_3){loud_on++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;if(loud_on&gt;1){loud_on=0;};if(loud_on&lt;0){loud_on=1;}audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){loud_on++;gr2=0;cl1();times=millis();w=1;w2=1;if(loud_on&gt;1){loud_on=0;};if(loud_on&lt;0){loud_on=1;}audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){loud_on--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;if(loud_on&gt;1){loud_on=0;};if(loud_on&lt;0){loud_on=1;}audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){loud_on--;gr1=0;cl1();times=millis();w=1;w2=1;if(loud_on&gt;1){loud_on=0;};if(loud_on&lt;0){loud_on=1;}audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   loud_on=loud_on+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;if(loud_on&gt;1){loud_on=0;};if(loud_on&lt;0){loud_on=1;};audio();}
   if(loud_on==1){lcd.setCursor(2,0);lcd.print(&quot;LOUDNESS  ON &quot;);}
             else{lcd.setCursor(2,0);lcd.print(&quot;LOUDNESS  OFF&quot;);}}
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// BRIGHTNESS ///////////////////////////////////////////////////////////////////
 if(menu0==4&amp;&amp;menu2==1){
   if(ir.value==IR_3){brig++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;brig_func();analogWrite(6,brig);}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){brig++;gr2=0;cl1();times=millis();w=1;w2=1;brig_func();analogWrite(6,brig);}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){brig--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;brig_func();analogWrite(6,brig);}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){brig--;gr1=0;cl1();times=millis();w=1;w2=1;brig_func();analogWrite(6,brig);}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   brig=brig+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;brig_func();analogWrite(6,brig);}
   a[0]= abs(brig)/100;a[1]=abs(brig)/10%10;a[2]=abs(brig)%10;
   for(i=0;i&lt;3;i++){switch(i){case 0: e1=7,e2=8,e3=9;break;
                              case 1: e1=10,e2=11,e3=12;break;
                              case 2: e1=13,e2=14,e3=15;break;
                              }digit();}
 
   lcd.setCursor(0,0);lcd.print(&quot;BRIGHT&quot;);
   lcd.setCursor(0,1);lcd.print(brig*100/255);lcd.print(&quot; &quot;);lcd.setCursor(4,1);lcd.print(&quot;%&quot;);}
////////////////////////////////////////////////////////////////////////////////////////////
 
if(millis()-times&gt;10000&amp;&amp;w==1&amp;&amp;mute==0&amp;&amp;power==0){w=0;menu2=0;menu1=1;menu=0;cl();}
 
/////////////////// ЧАСЫ ///////////////////////////////////////////////////////////////////
if(power==1){digitalWrite(7,LOW);
     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;4;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;
   }digit();}
 
   lcd.setCursor(6,0);lcd.print(&quot;.&quot;);lcd.setCursor(6,1);lcd.print(&quot;.&quot;);
   lcd.setCursor(14,1);lcd.print(a[4]);lcd.setCursor(15,1);lcd.print(a[5]);   
//// set time ////
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(2)==HIGH){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)==HIGH){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)==HIGH){secon=0; clock.setDateTime(2020, 9, 15, hour, minut, secon);delay(100); }
}
////////////////////////////////////////////////////////////////////////////////////////////
}// loop
 
 
void times_f(){lcd.setCursor(0,1);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);}
void brig_func(){if(brig&lt;0){brig=0;}if(brig&gt;255){brig=255;}}
void gain_func(){if(gain0&lt;0){gain0=0;}if(gain0&gt;3){gain0=3;}}
void att_r_func(){if(att_r&lt;0){att_r=0;}if(att_r&gt;24){att_r=24;}}
void att_l_func(){if(att_l&lt;0){att_l=0;}if(att_l&gt;24){att_l=24;}}
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 vol_func(){if(vol&lt;0){vol=0;}if(vol&gt;56){vol=56;}}
void cl(){ir.value=0;delay(300);lcd.clear();}
void cl1(){ir.value=0;delay(200);}  
void audio(){
  pt.setVolume(vol); // int 0...56 === -70...0 dB step 1.25 dB
  pt.setAttL(att_l); // int 0...24 === 0...-30 db step 1.25 dB &gt; int 31 === mute on     
  pt.setAttR(att_r); // int 0...24 === 0...-30 dB step 1.25 dB &gt; int 31 === mute on
  pt.setSwitch(in, loud_on, gain0); 
        // input      int 0..3 === IN 1...4 
        // loudness   int 0...1 === 1-on 0-off
        // input gain int 0...3 === 0...11.25dB step 3.75 dB
  pt.setBass(bass);   // int -7...+7 === -14...+14 dB step 2 dB
  pt.setTreble(treb); // int -7...+7 === -14...+14 dB step 2 dB
  }
 
void to_Timer(){newPosition = myEnc.read()/4;}  
 
void digit(){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);}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2024-02-06T03:03:10Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=9368#p9368</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PT2314]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=9367#p9367" />
			<content type="html"><![CDATA[<p>Основной скетч - <a href="http://rcl-radio.ru/?p=76005">http://rcl-radio.ru/?p=76005</a></p><p>С кнопками без резисторов, кнопка нажатие === GND</p><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)
#define BRIG 50        // Яркость подсветки экрана в режиме POWER OFF (0...255)
#include &lt;Wire.h&gt; 
#include &lt;PT2314.h&gt;            // http://forum.rcl-radio.ru/misc.php?action=pan_download&amp;item=434&amp;download=1
#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;
#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/08/DS3231.zip
   DS3231 clock;RTCDateTime DateTime;
   PT2314 pt;
   LiquidCrystal_I2C lcd(0x27,16,2);  // Устанавливаем дисплей
   IRrecv irrecv(12); // указываем вывод модуля IR приемника
   Encoder myEnc(8, 9);// DT, CLK
   decode_results ir; 
      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};
      byte a[6],d1,d2,d3,d4,d5,d6,e1,e2,e3,w,w2,i,www,power,save,gr1,gr2;
      int menu,menu0,menu1=1,menu2=0,vol,bass,treb,att_l,att_r,in,loud_on,gain0,gain1,gain2,gain3,gain4,mute,mute1,mute2,brig,hour,minut,secon;
      long times,oldPosition  = -999,newPosition;
 
 
void setup() {
  delay(200);
  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, 255);
  lcd.setCursor(0,0);lcd.print(&quot;Sound Processor&quot;);lcd.setCursor(0,1);lcd.print(&quot;PT2314&quot;); delay(2000);lcd.clear();
  MsTimer2::set(1, to_Timer);MsTimer2::start();
  //  clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
  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);}}// очистка памяти при первом включении  
  vol = EEPROM.read(0);treb = EEPROM.read(1)-7;bass = EEPROM.read(2)-7;in = EEPROM.read(3);
  att_l = EEPROM.read(4);att_r = EEPROM.read(5);gain1 = EEPROM.read(6);gain2 = EEPROM.read(7);
  gain3 = EEPROM.read(8);gain4 = EEPROM.read(9);loud_on = EEPROM.read(10);brig = EEPROM.read(11);
  audio();
  analogWrite(6, brig);
}
 
void loop() {
  DateTime = clock.getDateTime();hour = DateTime.hour;minut = DateTime.minute;secon = DateTime.second;
 
////////////////////// IR ///////////////////////////////////////////////////////////////
  if ( irrecv.decode( &amp;ir )) {Serial.print(&quot;0x&quot;);Serial.println( ir.value,HEX);irrecv.resume();times=millis();w=1;}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
  if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта  
 
    if(mute==0&amp;&amp;power==0){
  if(ir.value==IR_6&amp;&amp;menu1==1){menu1=0;menu2=1;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;lcd.setCursor(4,0);lcd.print(&quot;SETTING&quot;); delay(2000);lcd.clear();}
  if(ir.value==IR_6&amp;&amp;menu2==1){menu1=1;menu2=0;menu=0;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;lcd.setCursor(6,0);lcd.print(&quot;MENU&quot;); delay(2000);lcd.clear();}
 
  if(ir.value==IR_1&amp;&amp;menu1==1){menu++;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu&gt;2){menu=0;}}//меню 1
  if(ir.value==IR_2&amp;&amp;menu1==1){menu--;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu&lt;0){menu=2;}}//меню 1
 
  if(ir.value==IR_1&amp;&amp;menu2==1){menu0++;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu0&gt;4){menu0=0;}}//меню 2
  if(ir.value==IR_2&amp;&amp;menu2==1){menu0--;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu0&lt;0){menu0=4;}}//меню 2
 
  if(ir.value==IR_5){in++;gr1=0;gr2=0;cl();times=millis()-8000;w=1;w2=1;if(in&gt;3){in=0;}lcd.setCursor(4,0);lcd.print(&quot;INPUT &quot;);lcd.print(in+1);audio();delay(200);}// IN
  }
 
  if(ir.value==IR_7&amp;&amp;mute==0&amp;&amp;power==0){mute=1;pt.setAttR(31);pt.setAttL(31);gr1=0;gr2=0;cl();lcd.setCursor(6,0);lcd.print(&quot;MUTE&quot;);menu1=100;menu2=100;delay(500);}// MUTE
  if(ir.value==IR_7&amp;&amp;mute==1&amp;&amp;power==0){mute=0;cl();menu1=1;menu=0;gr1=0;gr2=0;cl();audio();}// MUTE
 
  if(ir.value==IR_8&amp;&amp;power==0){power=1;pt.setAttR(31);pt.setAttL(31);audio();gr1=0;gr2=0;cl();lcd.clear();lcd.setCursor(3,0);lcd.print(&quot;POWER  OFF&quot;);menu0=0;menu1=0;menu2=0;save=1;analogWrite(6, BRIG);delay(3000);lcd.clear();}// power off
  if(ir.value==IR_8&amp;&amp;power==1){power=0;gr1=0;gr2=0;cl();lcd.backlight();lcd.clear();lcd.setCursor(3,0);lcd.print(&quot;POWER   ON &quot;);menu1=1;menu=0;myEnc.write(0);audio();analogWrite(6, brig);delay(3000);lcd.clear();}// power on
///////////////////////////////////////////////////////////////////////////////////////// 
 
/////////////////////////////// УПРАВЛЕНИЕ //////////////////////////////////////////////  
  if(mute==0&amp;&amp;power==0){
  if(digitalRead(2)==LOW&amp;&amp;menu1==1){menu1=0;menu2=1;cl();times=millis();w=1;w2=1;lcd.setCursor(4,0);lcd.print(&quot;SETTING&quot;); delay(2000);lcd.clear();}
  if(digitalRead(2)==LOW&amp;&amp;menu2==1){menu1=1;menu2=0;menu=0;cl();times=millis();w=1;w2=1;lcd.setCursor(6,0);lcd.print(&quot;MENU&quot;); delay(2000);lcd.clear();}
 
  if(digitalRead(10)==LOW&amp;&amp;menu1==1){menu++;cl();times=millis();w=1;w2=1;if(menu&gt;2){menu=0;}}//меню 1
  if(digitalRead(10)==LOW&amp;&amp;menu2==1){menu0++;cl();times=millis();w=1;w2=1;if(menu0&gt;4){menu0=0;}}//меню 2
 
  if(digitalRead(3)==LOW){in++;cl();menu=100;times=millis()-8000;w=1;w2=1;if(in&gt;3){in=0;}lcd.setCursor(4,0);lcd.print(&quot;INPUT &quot;);lcd.print(in+1);audio();delay(200);}// IN
  }
 
  if(digitalRead(4)==LOW&amp;&amp;mute==0&amp;&amp;power==0){mute=1;pt.setAttR(31);pt.setAttL(31);cl();lcd.setCursor(6,0);lcd.print(&quot;MUTE&quot;);menu1=100;menu2=100;delay(500);}// MUTE
  if(digitalRead(4)==LOW&amp;&amp;mute==1&amp;&amp;power==0){mute=0;cl();menu1=1;menu=0;cl();audio();}// MUTE
 
  if(digitalRead(5)==LOW&amp;&amp;power==0){power=1;pt.setAttR(31);pt.setAttL(31);lcd.clear();lcd.setCursor(3,0);lcd.print(&quot;POWER  OFF&quot;);menu0=0;menu1=0;menu2=0;save=1;analogWrite(6, 50);delay(3000);lcd.clear();}// power off
  if(digitalRead(5)==LOW&amp;&amp;power==1){power=0;lcd.backlight();lcd.clear();lcd.setCursor(3,0);lcd.print(&quot;POWER   ON &quot;);menu1=1;menu=0;myEnc.write(0);audio();analogWrite(6, brig);delay(3000);lcd.clear();}// power on
    if(power==0){digitalWrite(7,HIGH);}
  //if(power==0){digitalWrite(7,LOW);}// инверсия выхода STANDBY


  
 
  if(save==1&amp;&amp;w2==1){save=0;w2=0;
     EEPROM.update(0,vol);EEPROM.update(1,treb+7);EEPROM.update(2,bass+7);EEPROM.update(3,in);
     EEPROM.update(4,att_l);EEPROM.update(5,att_r);EEPROM.update(6,gain1);EEPROM.update(7,gain2);
     EEPROM.update(8,gain3);EEPROM.update(9,gain4);EEPROM.update(10,loud_on);EEPROM.update(11,brig);}
///////////////////////////////////////////////////////////////////////////////////////// 
 
////////////// VOLUME ///////////////////////////////////////////////////////////////////
 if(menu==0&amp;&amp;menu1==1){
   if(ir.value==IR_3){vol++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;vol_func();audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl1();times=millis();w=1;w2=1;vol_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){vol--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;vol_func();audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl1();times=millis();w=1;w2=1;vol_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   vol=vol+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;vol_func();audio();}
   a[0]= vol/10;a[1]=vol%10;
   for(i=0;i&lt;2;i++){switch(i){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
 
   lcd.setCursor(0,0);lcd.print(&quot;IN&quot;);lcd.print(in+1);lcd.print(&quot;  VOL&quot;);
   if(vol&lt;0){lcd.setCursor(9,1);lcd.write((uint8_t)8);}else{lcd.setCursor(9,1);lcd.print(&quot; &quot;);}
   times_f();
   }
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// BASS ///////////////////////////////////////////////////////////////////
 if(menu==1&amp;&amp;menu1==1){
   if(ir.value==IR_3){bass++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;bass_func();audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){bass++;gr2=0;cl1();times=millis();w=1;w2=1;bass_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){bass--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;bass_func();audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){bass--;gr1=0;cl1();times=millis();w=1;w2=1;bass_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   bass=bass+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;bass_func();audio();}
   a[0]= abs(bass*2)/10;a[1]=abs(bass*2)%10;
   for(i=0;i&lt;2;i++){switch(i){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
 
   lcd.setCursor(0,0);lcd.print(&quot;BASS   dB&quot;);
   if(bass&lt;0){lcd.setCursor(9,1);lcd.write((uint8_t)8);}else{lcd.setCursor(9,1);lcd.print(&quot; &quot;);}
   times_f();
   }
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// TREBLE ///////////////////////////////////////////////////////////////////
 if(menu==2&amp;&amp;menu1==1){
   if(ir.value==IR_3){treb++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;treb_func();audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){treb++;gr2=0;cl1();times=millis();w=1;w2=1;treb_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){treb--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;treb_func();audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){treb--;gr1=0;cl1();times=millis();w=1;w2=1;treb_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   treb=treb+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;treb_func();audio();}
   a[0]= abs(treb*2)/10;a[1]=abs(treb*2)%10;
 
   for(i=0;i&lt;2;i++){switch(i){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
 
   lcd.setCursor(0,0);lcd.print(&quot;TREBLE dB&quot;);
   if(treb&lt;0){lcd.setCursor(9,1);lcd.write((uint8_t)8);}else{lcd.setCursor(9,1);lcd.print(&quot; &quot;);}
   times_f();
   }
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// ATT_L ///////////////////////////////////////////////////////////////////
 if(menu0==0&amp;&amp;menu2==1){
   if(ir.value==IR_3){att_l++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;att_l_func();audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){att_l++;gr2=0;cl1();times=millis();w=1;w2=1;att_l_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){att_l--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;att_l_func();audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){att_l--;gr1=0;cl1();times=millis();w=1;w2=1;att_l_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   att_l=att_l+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;att_l_func();audio();}
   a[0]= abs(att_l)/10;a[1]=abs(att_l)%10;
   for(i=0;i&lt;2;i++){switch(i){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
 
   lcd.setCursor(0,0);lcd.print(&quot;ATT_L&quot;);
   lcd.setCursor(0,1);lcd.print(-att_l*1.25,2);lcd.print(&quot; &quot;);lcd.setCursor(6,1);lcd.print(&quot;dB&quot;);}
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// ATT_R ///////////////////////////////////////////////////////////////////
 if(menu0==1&amp;&amp;menu2==1){
   if(ir.value==IR_3){att_r++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;att_r_func();audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){att_r++;gr2=0;cl1();times=millis();w=1;w2=1;att_r_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){att_r--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;att_r_func();audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){att_r--;gr1=0;cl1();times=millis();w=1;w2=1;att_r_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   att_r=att_r+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;att_r_func();audio();}
   a[0]= abs(att_r)/10;a[1]=abs(att_r)%10;
   for(i=0;i&lt;2;i++){switch(i){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
 
   lcd.setCursor(0,0);lcd.print(&quot;ATT_R&quot;);
   lcd.setCursor(0,1);lcd.print(-att_r*1.25,2);lcd.print(&quot; &quot;);lcd.setCursor(6,1);lcd.print(&quot;dB&quot;);}
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// INPUT GAIN ///////////////////////////////////////////////////////////////////
 if(menu0==2&amp;&amp;menu2==1){
   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();times=millis();w=1;w2=1;gain_func();www=1;}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){gain0++;gr2=0;cl1();times=millis();w=1;w2=1;gain_func();www=1;}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){gain0--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;gain_func();www=1;}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){gain0--;gr1=0;cl1();times=millis();w=1;w2=1;gain_func();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;}
   gain0=gain0+newPosition;myEnc.write(0);newPosition=0;times=millis();www=1;w=1;w2=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;
     }  
     a[0]= abs(gain0);
 
   for(i=0;i&lt;1;i++){switch(i){case 0: e1=13,e2=14,e3=15;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
   lcd.setCursor(0,1);lcd.print(&quot;GAIN &quot;);lcd.print(gain0*3.75,2);lcd.print(&quot; &quot;);lcd.setCursor(10,1);lcd.print(&quot;dB&quot;);
   if(www==1){audio();www=0;}
   lcd.setCursor(0,0);lcd.print(&quot;INPUT &quot;);lcd.print(in+1);}
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// LOUDNESS ///////////////////////////////////////////////////////////////////
 if(menu0==3&amp;&amp;menu2==1){
   if(ir.value==IR_3){loud_on++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;if(loud_on&gt;1){loud_on=0;};if(loud_on&lt;0){loud_on=1;}audio();}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){loud_on++;gr2=0;cl1();times=millis();w=1;w2=1;if(loud_on&gt;1){loud_on=0;};if(loud_on&lt;0){loud_on=1;}audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){loud_on--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;if(loud_on&gt;1){loud_on=0;};if(loud_on&lt;0){loud_on=1;}audio();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){loud_on--;gr1=0;cl1();times=millis();w=1;w2=1;if(loud_on&gt;1){loud_on=0;};if(loud_on&lt;0){loud_on=1;}audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   loud_on=loud_on+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;if(loud_on&gt;1){loud_on=0;};if(loud_on&lt;0){loud_on=1;};audio();}
   if(loud_on==1){lcd.setCursor(2,0);lcd.print(&quot;LOUDNESS  ON &quot;);}
             else{lcd.setCursor(2,0);lcd.print(&quot;LOUDNESS  OFF&quot;);}}
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// BRIGHTNESS ///////////////////////////////////////////////////////////////////
 if(menu0==4&amp;&amp;menu2==1){
   if(ir.value==IR_3){brig++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;brig_func();analogWrite(6,brig);}// кнопка &gt; 
   if(ir.value==0xFFFFFFFF and gr1==1){brig++;gr2=0;cl1();times=millis();w=1;w2=1;brig_func();analogWrite(6,brig);}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){brig--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;brig_func();analogWrite(6,brig);}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){brig--;gr1=0;cl1();times=millis();w=1;w2=1;brig_func();analogWrite(6,brig);}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
   brig=brig+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;brig_func();analogWrite(6,brig);}
   a[0]= abs(brig)/100;a[1]=abs(brig)/10%10;a[2]=abs(brig)%10;
   for(i=0;i&lt;3;i++){switch(i){case 0: e1=7,e2=8,e3=9;break;
                              case 1: e1=10,e2=11,e3=12;break;
                              case 2: e1=13,e2=14,e3=15;break;
                              }digit();}
 
   lcd.setCursor(0,0);lcd.print(&quot;BRIGHT&quot;);
   lcd.setCursor(0,1);lcd.print(brig*100/255);lcd.print(&quot; &quot;);lcd.setCursor(4,1);lcd.print(&quot;%&quot;);}
////////////////////////////////////////////////////////////////////////////////////////////
 
if(millis()-times&gt;10000&amp;&amp;w==1&amp;&amp;mute==0&amp;&amp;power==0){w=0;menu2=0;menu1=1;menu=0;cl();}
 
/////////////////// ЧАСЫ ///////////////////////////////////////////////////////////////////
if(power==1){digitalWrite(7,LOW);
     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;4;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;
   }digit();}
 
   lcd.setCursor(6,0);lcd.print(&quot;.&quot;);lcd.setCursor(6,1);lcd.print(&quot;.&quot;);
   lcd.setCursor(14,1);lcd.print(a[4]);lcd.setCursor(15,1);lcd.print(a[5]);   
//// set time ////
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(2)==HIGH){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)==HIGH){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)==HIGH){secon=0; clock.setDateTime(2020, 9, 15, hour, minut, secon);delay(100); }
}
////////////////////////////////////////////////////////////////////////////////////////////
}// loop
 
 
void times_f(){lcd.setCursor(0,1);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);}
void brig_func(){if(brig&lt;0){brig=0;}if(brig&gt;255){brig=255;}}
void gain_func(){if(gain0&lt;0){gain0=0;}if(gain0&gt;3){gain0=3;}}
void att_r_func(){if(att_r&lt;0){att_r=0;}if(att_r&gt;24){att_r=24;}}
void att_l_func(){if(att_l&lt;0){att_l=0;}if(att_l&gt;24){att_l=24;}}
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 vol_func(){if(vol&lt;0){vol=0;}if(vol&gt;56){vol=56;}}
void cl(){ir.value=0;delay(300);lcd.clear();}
void cl1(){ir.value=0;delay(200);}  
void audio(){
  pt.setVolume(vol); // int 0...56 === -70...0 dB step 1.25 dB
  pt.setAttL(att_l); // int 0...24 === 0...-30 db step 1.25 dB &gt; int 31 === mute on     
  pt.setAttR(att_r); // int 0...24 === 0...-30 dB step 1.25 dB &gt; int 31 === mute on
  pt.setSwitch(in, loud_on, gain0); 
        // input      int 0..3 === IN 1...4 
        // loudness   int 0...1 === 1-on 0-off
        // input gain int 0...3 === 0...11.25dB step 3.75 dB
  pt.setBass(bass);   // int -7...+7 === -14...+14 dB step 2 dB
  pt.setTreble(treb); // int -7...+7 === -14...+14 dB step 2 dB
  }
 
void to_Timer(){newPosition = myEnc.read()/4;}  
 
void digit(){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);}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2024-02-06T02:59:44Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=9367#p9367</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PT2314]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=9058#p9058" />
			<content type="html"><![CDATA[<p>liman324 спасибо большое. все заработало, поменял D11 на A2 и проблема исчезла))))</p>]]></content>
			<author>
				<name><![CDATA[z_phantom]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2269</uri>
			</author>
			<updated>2023-12-20T16:07:12Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=9058#p9058</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PT2314]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=9055#p9055" />
			<content type="html"><![CDATA[<p>Я изменил кнопки, на внутренние подтягивающие резисторы, кнопка срабатывает на замыкание gnd, внешние подтягивающие резисторы не нужны. Просто у меня нет возможности собирать схему с внешними подтягивающими резисторами. Далее подключил кнопки, дисплей. <br />Загрузил скетч, при переходе на IN1 происходит перебор параметров, как будто нажата кнопка SW, подключаю энкодер, проблема уходит, при переходе на IN1 , перебора параметров нет.</p><p>Такое впечатление что у Вас нет подтягивающего резистора к +5В вывода WS энкодера.</p><p>Вы сделали активным вывод D11 , а он отвечает за питание уст-ва IN1, расположен он рядом с D10 SW, наводка приводит к активации нажатии кнопки SW.</p><div class="codebox"><pre><code>#define IR_1 0xFFA05F // Кнопка вверх
#define IR_2 0xFF40BF // Кнопка вниз
#define IR_3 0xFF7887 // Кнопка &gt;
#define IR_4 0xFF50AF // Кнопка &lt;
#define IR_5 0xFF02FD // Кнопка IN
#define IR_6 0xFF2AD5 // Кнопка SET
#define IR_7 0xFF6897 // Кнопка MUTE
#define IR_8 0xFFB24D // Кнопка STANDBY (POWER)// ПУЛЬТ ДНС

#define IR_9 0xFF906F    //IN0
#define IR_10 0xFFB847   //IN1
#define IR_11 0xFFF807   //IN2
#define IR_12 0xFFB04F   //IN3

#define BRIG 50       // Яркость подсветки экрана в режиме POWER OFF (0...255)
#include &lt;Wire.h&gt; 
#include &lt;PT2314.h&gt;            // http://forum.rcl-radio.ru/misc.php?action=pan_download&amp;item=434&amp;download=1
#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;
#include &lt;IRremote.h&gt;          // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip
#include &lt;DS3231.h&gt;            // https://github.com/jarzebski/Arduino-DS3231/archive/master.zip
   DS3231 clock;RTCDateTime DateTime;
   PT2314 pt;
   LiquidCrystal_I2C lcd(0x27,16,2);  // Устанавливаем дисплей
   IRrecv irrecv(12); // указываем вывод модуля IR приемника
   Encoder myEnc(8, 9);// DT, CLK
   decode_results ir; 
      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};
      byte a[6],d1,d2,d3,d4,d5,d6,e1,e2,e3,w,w2,i,www,power,save,gr1,gr2,poww=1;
      int menu,menu0,menu1=1,menu2=0,vol,bass,treb,att_l,att_r,in,loud_on,gain0,gain1,gain2,gain3,gain4,mute,mute1,mute2,brig,hour,minut,secon;
      unsigned long times,oldPosition  = -999,newPosition;
 
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(11,OUTPUT);  //ВЫХОД УПРАВЛЕНИЯ ПИТАНИЯ ВХОДА 1
  pinMode(13,OUTPUT);  //ВЫХОД УПРАВЛЕНИЯ ПИТАНИЯ ВХОДА 2
  pinMode(A0,OUTPUT);  //ВЫХОД УПРАВЛЕНИЯ ПИТАНИЯ ВХОДА 3
  pinMode(A1,OUTPUT);  //ВЫХОД УПРАВЛЕНИЯ ПИТАНИЯ ВХОДА 4
  analogWrite(6, 255);
  lcd.setCursor(2,0);lcd.print(&quot;Sound Processor&quot;);lcd.setCursor(2,1);lcd.print(&quot;Z_Phantom v01.1&quot;); delay(2000);lcd.clear();
  MsTimer2::set(1, to_Timer);MsTimer2::start();
  clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
  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);}}// очистка памяти при первом включении  
  vol = EEPROM.read(0);treb = EEPROM.read(1)-7;bass = EEPROM.read(2)-7;in = EEPROM.read(3);
  att_l = EEPROM.read(4);att_r = EEPROM.read(5);gain1 = EEPROM.read(6);gain2 = EEPROM.read(7);
  gain3 = EEPROM.read(8);gain4 = EEPROM.read(9);loud_on = EEPROM.read(10);brig = EEPROM.read(11);
  audio();
  analogWrite(6, brig);
}
 
void loop() {

  DateTime = clock.getDateTime();hour = DateTime.hour;minut = DateTime.minute;secon = DateTime.second;
 
////////////////////// IR ///////////////////////////////////////////////////////////////
  if ( irrecv.decode( &amp;ir )) {Serial.print(&quot;0x&quot;);Serial.println( ir.value,HEX);irrecv.resume();times=millis();w=1;}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
  if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта  
 
    if(mute==0&amp;&amp;power==0){
  if(ir.value==IR_6&amp;&amp;menu1==1){menu1=0;menu2=1;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;lcd.setCursor(4,0);lcd.print(&quot;SETTING&quot;); delay(2000);lcd.clear();}
  if(ir.value==IR_6&amp;&amp;menu2==1){menu1=1;menu2=0;menu=0;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;lcd.setCursor(6,0);lcd.print(&quot;MENU&quot;); delay(2000);lcd.clear();}
 
  if(ir.value==IR_1&amp;&amp;menu1==1){menu++;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu&gt;2){menu=0;}}//меню 1
  if(ir.value==IR_2&amp;&amp;menu1==1){menu--;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu&lt;0){menu=2;}}//меню 1
 
  if(ir.value==IR_1&amp;&amp;menu2==1){menu0++;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu0&gt;4){menu0=0;}}//меню 2
  if(ir.value==IR_2&amp;&amp;menu2==1){menu0--;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu0&lt;0){menu0=4;}}//меню 2
 
  if(ir.value==IR_5){in++;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(in&gt;3){in=0;}lcd.setCursor(4,0);lcd.print(&quot;INPUT &quot;);lcd.print(in+1);audio();delay(2000);lcd.clear();}// IN
  }
        if (ir.value == IR_9)  {in = 0;gr1 = 0;gr2 = 0;cl();times = millis();w = 1;w2 = 1;audio();lcd.setCursor(3, 0);lcd.print(&quot;  RADIO&quot;);delay(1500);}
        if (ir.value == IR_10) {in = 1;gr1 = 0;gr2 = 0;cl();times = millis();w = 1;w2 = 1;audio();lcd.setCursor(3, 0);lcd.print(&quot;Bluetooth&quot;);delay(1500);}
        if (ir.value == IR_11) {in = 2;gr1 = 0;gr2 = 0;cl();times = millis();w = 1;w2 = 1;audio();lcd.setCursor(3, 0);lcd.print(&quot; SPDiff&quot;);delay(1500);}
        if (ir.value == IR_12) {in = 3;gr1 = 0;gr2 = 0;cl();times = millis();w = 1;w2 = 1;audio();lcd.setCursor(3, 0);lcd.print(&quot;  AUX&quot;);delay(1500);lcd.clear();}
 
  if(ir.value==IR_7&amp;&amp;mute==0&amp;&amp;power==0){mute=1;pt.setAttR(31);pt.setAttL(31);gr1=0;gr2=0;cl();lcd.setCursor(6,0);lcd.print(&quot;MUTE&quot;);menu1=100;menu2=100;delay(500);}// MUTE
  if(ir.value==IR_7&amp;&amp;mute==1&amp;&amp;power==0){mute=0;cl();menu1=1;menu=0;gr1=0;gr2=0;cl();audio();}// MUTE
 
  if((ir.value==IR_8&amp;&amp;power==0)||poww==1){poww=0;power=1;pt.setAttR(31);pt.setAttL(31);audio();gr1=0;gr2=0;cl();lcd.clear();lcd.setCursor(3,0);lcd.print(&quot;POWER  OFF&quot;);menu0=0;menu1=0;menu2=0;save=1;analogWrite(6, BRIG);delay(3000);lcd.clear();}// power off
  if(ir.value==IR_8&amp;&amp;power==1){power=0;gr1=0;gr2=0;cl();lcd.backlight();lcd.clear();lcd.setCursor(3,0);lcd.print(&quot;POWER   ON &quot;);menu1=1;menu=0;myEnc.write(0);audio();analogWrite(6, brig);delay(3000);lcd.clear();}// power on
///////////////////////////////////////////////////////////////////////////////////////// 
 
/////////////////////////////// УПРАВЛЕНИЕ //////////////////////////////////////////////  
  if(mute==0&amp;&amp;power==0){
  if(digitalRead(2)==LOW&amp;&amp;menu1==1){menu1=0;menu2=1;cl();times=millis();w=1;w2=1;lcd.setCursor(4,0);lcd.print(&quot;SETTING&quot;); delay(2000);lcd.clear();}
  if(digitalRead(2)==LOW&amp;&amp;menu2==1){menu1=1;menu2=0;menu=0;cl();times=millis();w=1;w2=1;lcd.setCursor(6,0);lcd.print(&quot;MENU&quot;); delay(2000);lcd.clear();}
 
  if(digitalRead(10)==LOW&amp;&amp;menu1==1){menu++;cl();times=millis();w=1;w2=1;if(menu&gt;2){menu=0;}}//меню 1
  if(digitalRead(10)==LOW&amp;&amp;menu2==1){menu0++;cl();times=millis();w=1;w2=1;if(menu0&gt;4){menu0=0;}}//меню 2
 
  if(digitalRead(3)==LOW){in++;cl();;times=millis();w=1;w2=1;if(in&gt;3){in=0;}lcd.setCursor(4,0);lcd.print(&quot;INPUT &quot;);lcd.print(in+1);audio();delay(2000);lcd.clear();}// IN
  }
 
  if(digitalRead(4)==LOW&amp;&amp;mute==0&amp;&amp;power==0){mute=1;pt.setAttR(31);pt.setAttL(31);cl();lcd.setCursor(6,0);lcd.print(&quot;MUTE&quot;);menu1=100;menu2=100;delay(500);}// MUTE
  if(digitalRead(4)==LOW&amp;&amp;mute==1&amp;&amp;power==0){mute=0;cl();menu1=1;menu=0;cl();audio();}// MUTE
 
  if(digitalRead(5)==LOW&amp;&amp;power==0){power=1;pt.setAttR(31);pt.setAttL(31);lcd.clear();lcd.setCursor(4,0);lcd.print(&quot;POWER  OFF&quot;);menu0=0;menu1=0;menu2=0;save=1;analogWrite(6, 50);delay(3000);lcd.clear();}// power off
  if(digitalRead(5)==LOW&amp;&amp;power==1){power=0;lcd.backlight();lcd.clear();lcd.setCursor(4,0);lcd.print(&quot;POWER   ON &quot;);menu1=1;menu=0;myEnc.write(0);audio();analogWrite(6, brig);delay(3000);lcd.clear();}// power on
  if(power==0){digitalWrite(7,HIGH);}
   // if(power==0){digitalWrite(7,LOW);}// инверсия выхода STANDBY
   if(in==0){digitalWrite(11,LOW);}else{digitalWrite(11,HIGH);}  // УПРАВЛЕНИЕ РЕЛЕ ПИТАНИЯ ВХОДА 1____________________________
   if(in==1){digitalWrite(13,LOW);}else{digitalWrite(13,HIGH);}   // УПРАВЛЕНИЕ РЕЛЕ ПИТАНИЯ ВХОДА 2_____________________________
   if(in==2){digitalWrite(A0,LOW);}else{digitalWrite(A0,HIGH);}   // УПРАВЛЕНИЕ РЕЛЕ ПИТАНИЯ ВХОДА 3_____________________________
   if(in==3){digitalWrite(A1,LOW);}else{digitalWrite(A1,HIGH);}   // УПРАВЛЕНИЕ РЕЛЕ ПИТАНИЯ ВХОДА 4_____________________________
   if(power==1){digitalWrite(11,HIGH);digitalWrite(13,HIGH);digitalWrite(A0,HIGH);digitalWrite(A1,HIGH);}
  if(save==1&amp;&amp;w2==1){save=0;w2=0;
     EEPROM.update(0,vol);EEPROM.update(1,treb+7);EEPROM.update(2,bass+7);EEPROM.update(3,in);
     EEPROM.update(4,att_l);EEPROM.update(5,att_r);EEPROM.update(6,gain1);EEPROM.update(7,gain2);
     EEPROM.update(8,gain3);EEPROM.update(9,gain4);EEPROM.update(10,loud_on);EEPROM.update(11,brig);}
///////////////////////////////////////////////////////////////////////////////////////// 
 
////////////// VOLUME ///////////////////////////////////////////////////////////////////
 if(menu==0&amp;&amp;menu1==1){
   if(ir.value==IR_3){vol++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;vol_func();audio();}// кнопка &gt; 
//   if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl1();times=millis();w=1;w2=1;vol_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){vol--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;vol_func();audio();}// кнопка &lt;
//   if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl1();times=millis();w=1;w2=1;vol_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;vol=vol+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;vol_func();audio();}
   a[0]= vol/10;a[1]=vol%10;
   for(i=0;i&lt;2;i++){switch(i){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
 
   lcd.setCursor(0,0);lcd.print(&quot;IN&quot;);lcd.print(in+1);lcd.print(&quot; VOLUME&quot;);
   if(vol&lt;0){lcd.setCursor(9,1);lcd.write((uint8_t)8);}else{lcd.setCursor(9,1);lcd.print(&quot; &quot;);}
   times_f();
   }
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// BASS ///////////////////////////////////////////////////////////////////
 if(menu==1&amp;&amp;menu1==1){
   if(ir.value==IR_3){bass++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;bass_func();audio();}// кнопка &gt; 
//   if(ir.value==0xFFFFFFFF and gr1==1){bass++;gr2=0;cl1();times=millis();w=1;w2=1;bass_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){bass--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;bass_func();audio();}// кнопка &lt;
//   if(ir.value==0xFFFFFFFF and gr2==1){bass--;gr1=0;cl1();times=millis();w=1;w2=1;bass_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;bass=bass+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;bass_func();audio();}
   a[0]= abs(bass*2)/10;a[1]=abs(bass*2)%10;
   for(i=0;i&lt;2;i++){switch(i){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
 
   lcd.setCursor(0,0);lcd.print(&quot;BASS   dB&quot;);
   if(bass&lt;0){lcd.setCursor(9,1);lcd.write((uint8_t)8);}else{lcd.setCursor(9,1);lcd.print(&quot; &quot;);}
   times_f();
   }
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// TREBLE ///////////////////////////////////////////////////////////////////
 if(menu==2&amp;&amp;menu1==1){
   if(ir.value==IR_3){treb++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;treb_func();audio();}// кнопка &gt; 
//   if(ir.value==0xFFFFFFFF and gr1==1){treb++;gr2=0;cl1();times=millis();w=1;w2=1;treb_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){treb--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;treb_func();audio();}// кнопка &lt;
//   if(ir.value==0xFFFFFFFF and gr2==1){treb--;gr1=0;cl1();times=millis();w=1;w2=1;treb_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;treb=treb+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;treb_func();audio();}
   a[0]= abs(treb*2)/10;a[1]=abs(treb*2)%10;
 
   for(i=0;i&lt;2;i++){switch(i){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
 
   lcd.setCursor(0,0);lcd.print(&quot;TREBLE dB&quot;);
   if(treb&lt;0){lcd.setCursor(9,1);lcd.write((uint8_t)8);}else{lcd.setCursor(9,1);lcd.print(&quot; &quot;);}
   times_f();
   }
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// ATT_L ///////////////////////////////////////////////////////////////////
 if(menu0==0&amp;&amp;menu2==1){
   if(ir.value==IR_3){att_l++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;att_l_func();audio();}// кнопка &gt; 
//   if(ir.value==0xFFFFFFFF and gr1==1){att_l++;gr2=0;cl1();times=millis();w=1;w2=1;att_l_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){att_l--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;att_l_func();audio();}// кнопка &lt;
//   if(ir.value==0xFFFFFFFF and gr2==1){att_l--;gr1=0;cl1();times=millis();w=1;w2=1;att_l_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;att_l=att_l+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;att_l_func();audio();}
   a[0]= abs(att_l)/10;a[1]=abs(att_l)%10;
   for(i=0;i&lt;2;i++){switch(i){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
 
   lcd.setCursor(0,0);lcd.print(&quot;ATT_L&quot;);
   lcd.setCursor(0,1);lcd.print(-att_l*1.25,2);lcd.print(&quot; &quot;);lcd.setCursor(6,1);lcd.print(&quot;dB&quot;);}
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// ATT_R ///////////////////////////////////////////////////////////////////
 if(menu0==1&amp;&amp;menu2==1){
   if(ir.value==IR_3){att_r++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;att_r_func();audio();}// кнопка &gt; 
//   if(ir.value==0xFFFFFFFF and gr1==1){att_r++;gr2=0;cl1();times=millis();w=1;w2=1;att_r_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){att_r--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;att_r_func();audio();}// кнопка &lt;
//   if(ir.value==0xFFFFFFFF and gr2==1){att_r--;gr1=0;cl1();times=millis();w=1;w2=1;att_r_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;att_r=att_r+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;att_r_func();audio();}
   a[0]= abs(att_r)/10;a[1]=abs(att_r)%10;
   for(i=0;i&lt;2;i++){switch(i){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
 
   lcd.setCursor(0,0);lcd.print(&quot;ATT_R&quot;);
   lcd.setCursor(0,1);lcd.print(-att_r*1.25,2);lcd.print(&quot; &quot;);lcd.setCursor(6,1);lcd.print(&quot;dB&quot;);}
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// INPUT GAIN ///////////////////////////////////////////////////////////////////
 if(menu0==2&amp;&amp;menu2==1){
   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();times=millis();w=1;w2=1;gain_func();www=1;}// кнопка &gt; 
//   if(ir.value==0xFFFFFFFF and gr1==1){gain0++;gr2=0;cl1();times=millis();w=1;w2=1;gain_func();www=1;}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){gain0--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;gain_func();www=1;}// кнопка &lt;
//   if(ir.value==0xFFFFFFFF and gr2==1){gain0--;gr1=0;cl1();times=millis();w=1;w2=1;gain_func();www=1;}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;gain0=gain0+newPosition;myEnc.write(0);newPosition=0;times=millis();www=1;w=1;w2=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;
     }  
     a[0]= abs(gain0);
 
   for(i=0;i&lt;1;i++){switch(i){case 0: e1=13,e2=14,e3=15;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
   lcd.setCursor(0,1);lcd.print(&quot;GAIN &quot;);lcd.print(gain0*3.75,2);lcd.print(&quot; &quot;);lcd.setCursor(10,1);lcd.print(&quot;dB&quot;);
   if(www==1){audio();www=0;}
   lcd.setCursor(0,0);lcd.print(&quot;INPUT &quot;);lcd.print(in+1);}
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// LOUDNESS ///////////////////////////////////////////////////////////////////
 if(menu0==3&amp;&amp;menu2==1){
   if(ir.value==IR_3){loud_on++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;if(loud_on&gt;1){loud_on=0;};if(loud_on&lt;0){loud_on=1;}audio();}// кнопка &gt; 
//   if(ir.value==0xFFFFFFFF and gr1==1){loud_on++;gr2=0;cl1();times=millis();w=1;w2=1;if(loud_on&gt;1){loud_on=0;};if(loud_on&lt;0){loud_on=1;}audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){loud_on--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;if(loud_on&gt;1){loud_on=0;};if(loud_on&lt;0){loud_on=1;}audio();}// кнопка &lt;
//   if(ir.value==0xFFFFFFFF and gr2==1){loud_on--;gr1=0;cl1();times=millis();w=1;w2=1;if(loud_on&gt;1){loud_on=0;};if(loud_on&lt;0){loud_on=1;}audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;loud_on=loud_on+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;if(loud_on&gt;1){loud_on=0;};if(loud_on&lt;0){loud_on=1;};audio();}
   if(loud_on==1){lcd.setCursor(2,0);lcd.print(&quot;LOUDNESS  ON &quot;);}
             else{lcd.setCursor(2,0);lcd.print(&quot;LOUDNESS  OFF&quot;);}}
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// BRIGHTNESS ///////////////////////////////////////////////////////////////////
 if(menu0==4&amp;&amp;menu2==1){
   if(ir.value==IR_3){brig++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;brig_func();analogWrite(6,brig);}// кнопка &gt; 
//   if(ir.value==0xFFFFFFFF and gr1==1){brig++;gr2=0;cl1();times=millis();w=1;w2=1;brig_func();analogWrite(6,brig);}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){brig--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;brig_func();analogWrite(6,brig);}// кнопка &lt;
//   if(ir.value==0xFFFFFFFF and gr2==1){brig--;gr1=0;cl1();times=millis();w=1;w2=1;brig_func();analogWrite(6,brig);}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;brig=brig+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;brig_func();analogWrite(6,brig);}
   a[0]= abs(brig)/100;a[1]=abs(brig)/10%10;a[2]=abs(brig)%10;
   for(i=0;i&lt;3;i++){switch(i){case 0: e1=7,e2=8,e3=9;break;
                              case 1: e1=10,e2=11,e3=12;break;
                              case 2: e1=13,e2=14,e3=15;break;
                              }digit();}
 
   lcd.setCursor(0,0);lcd.print(&quot;BRIGHT&quot;);
   lcd.setCursor(0,1);lcd.print(brig*100/255);lcd.print(&quot; &quot;);lcd.setCursor(4,1);lcd.print(&quot;%&quot;);}
////////////////////////////////////////////////////////////////////////////////////////////
 
if(millis()-times&gt;10000&amp;&amp;w==1&amp;&amp;mute==0&amp;&amp;power==0){w=0;menu2=0;menu1=1;menu=0;cl();}
 
/////////////////// ЧАСЫ ///////////////////////////////////////////////////////////////////
if(power==1){digitalWrite(7,LOW);
     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;4;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;
   }digit();}
 
   lcd.setCursor(6,0);lcd.print(&quot;.&quot;);lcd.setCursor(6,1);lcd.print(&quot;.&quot;);
   lcd.setCursor(14,1);lcd.print(a[4]);lcd.setCursor(15,1);lcd.print(a[5]);   
//// set time ////
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(2)==HIGH){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)==HIGH){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)==HIGH){secon=0; clock.setDateTime(2020, 9, 15, hour, minut, secon);delay(100); }
}
////////////////////////////////////////////////////////////////////////////////////////////
}// loop
 
 
void times_f(){lcd.setCursor(1,1);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);}
void brig_func(){if(brig&lt;0){brig=0;}if(brig&gt;255){brig=255;}}
void gain_func(){if(gain0&lt;0){gain0=0;}if(gain0&gt;3){gain0=3;}}
void att_r_func(){if(att_r&lt;0){att_r=0;}if(att_r&gt;24){att_r=24;}}
void att_l_func(){if(att_l&lt;0){att_l=0;}if(att_l&gt;24){att_l=24;}}
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 vol_func(){if(vol&lt;0){vol=0;}if(vol&gt;56){vol=56;}}
void cl(){ir.value=0;delay(300);lcd.clear();}
void cl1(){ir.value=0;delay(200);}  
void audio(){
  pt.setVolume(vol); // int 0...56 === -70...0 dB step 1.25 dB
  pt.setAttL(att_l); // int 0...24 === 0...-30 db step 1.25 dB &gt; int 31 === mute on     
  pt.setAttR(att_r); // int 0...24 === 0...-30 dB step 1.25 dB &gt; int 31 === mute on
  pt.setSwitch(in, loud_on, gain0); 
        // input      int 0..3 === IN 1...4 
        // loudness   int 0...1 === 1-on 0-off
        // input gain int 0...3 === 0...11.25dB step 3.75 dB
  pt.setBass(bass);   // int -7...+7 === -14...+14 dB step 2 dB
  pt.setTreble(treb); // int -7...+7 === -14...+14 dB step 2 dB
  }
 
void to_Timer(){newPosition = myEnc.read()/4;}  
 
void digit(){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);}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2023-12-20T07:59:58Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=9055#p9055</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PT2314]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=9054#p9054" />
			<content type="html"><![CDATA[<p>Да энкодер точно впорядке. Это происходит только на in0 на всех остольных все норм. Пробовал менять платку и компоненты, и даже без энкодера ,вместо него ставил резисторы, непомогает.<div class="fancy_video_tag_player"><iframe class="youtube-player" type="text/html" width="640" height="385" src="https://www.youtube.com/embed/PlASrKnDHEQ" frameborder="0"></iframe></div></p>]]></content>
			<author>
				<name><![CDATA[z_phantom]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2269</uri>
			</author>
			<updated>2023-12-20T07:18:23Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=9054#p9054</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PT2314]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=9053#p9053" />
			<content type="html"><![CDATA[<p>На платке энкодера все 3 резистора установлены?</p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2023-12-20T04:59:40Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=9053#p9053</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PT2314]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=9050#p9050" />
			<content type="html"><![CDATA[<p>доброе время суток. помогите пожалуйста! у меня проблема чтото с моей программой не так вроде все работает только включаю IN0 и сразу наченается бред кнопка SW переберает все действия как будто залипла но это тока на IN0. немогу понять вчом дело. </p><div class="codebox"><pre><code>#define IR_1 0xFFA05F // Кнопка вверх
#define IR_2 0xFF40BF // Кнопка вниз
#define IR_3 0xFF7887 // Кнопка &gt;
#define IR_4 0xFF50AF // Кнопка &lt;
#define IR_5 0xFF02FD // Кнопка IN
#define IR_6 0xFF2AD5 // Кнопка SET
#define IR_7 0xFF6897 // Кнопка MUTE
#define IR_8 0xFFB24D // Кнопка STANDBY (POWER)// ПУЛЬТ ДНС

#define IR_9 0xFF906F    //IN0
#define IR_10 0xFFB847   //IN1
#define IR_11 0xFFF807   //IN2
#define IR_12 0xFFB04F   //IN3

#define BRIG 50       // Яркость подсветки экрана в режиме POWER OFF (0...255)
#include &lt;Wire.h&gt; 
#include &lt;PT2314.h&gt;            // http://forum.rcl-radio.ru/misc.php?action=pan_download&amp;item=434&amp;download=1
#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;
#include &lt;IRremote.h&gt;          // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip
#include &lt;DS3231.h&gt;            // https://github.com/jarzebski/Arduino-DS3231/archive/master.zip
   DS3231 clock;RTCDateTime DateTime;
   PT2314 pt;
   LiquidCrystal_I2C lcd(0x27,20,2);  // Устанавливаем дисплей
   IRrecv irrecv(12); // указываем вывод модуля IR приемника
   Encoder myEnc(8, 9);// DT, CLK
   decode_results ir; 
      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};
      byte a[6],d1,d2,d3,d4,d5,d6,e1,e2,e3,w,w2,i,www,power,save,gr1,gr2,poww=1;
      int menu,menu0,menu1=1,menu2=0,vol,bass,treb,att_l,att_r,in,loud_on,gain0,gain1,gain2,gain3,gain4,mute,mute1,mute2,brig,hour,minut,secon;
      unsigned long times,oldPosition  = -999,newPosition;
 
void setup() {
  irrecv.enableIRIn();lcd.init();lcd.backlight();clock.begin();Serial.begin(9600);
  pinMode(10,INPUT);  // МЕНЮ КНОПКА SW энкодера
  pinMode(2,INPUT);   // КНОПКА SET
  pinMode(3,INPUT);   // КНОПКА IN
  pinMode(4,INPUT);   // КНОПКА MUTE
  pinMode(5,INPUT);   // КНОПКА STANDBY
  pinMode(7,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ STANDBY
  pinMode(6,OUTPUT);  // ВЫХОД УПРАВЛЕНИЯ ПОДСВЕТКОЙ
  pinMode(11,OUTPUT);  //ВЫХОД УПРАВЛЕНИЯ ПИТАНИЯ ВХОДА 1
  pinMode(13,OUTPUT);  //ВЫХОД УПРАВЛЕНИЯ ПИТАНИЯ ВХОДА 2
  pinMode(A0,OUTPUT);  //ВЫХОД УПРАВЛЕНИЯ ПИТАНИЯ ВХОДА 3
  pinMode(A1,OUTPUT);  //ВЫХОД УПРАВЛЕНИЯ ПИТАНИЯ ВХОДА 4
  analogWrite(6, 255);
  lcd.setCursor(2,0);lcd.print(&quot;Sound Processor&quot;);lcd.setCursor(2,1);lcd.print(&quot;Z_Phantom v01.1&quot;); delay(2000);lcd.clear();
  MsTimer2::set(1, to_Timer);MsTimer2::start();
  clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
  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);}}// очистка памяти при первом включении  
  vol = EEPROM.read(0);treb = EEPROM.read(1)-7;bass = EEPROM.read(2)-7;in = EEPROM.read(3);
  att_l = EEPROM.read(4);att_r = EEPROM.read(5);gain1 = EEPROM.read(6);gain2 = EEPROM.read(7);
  gain3 = EEPROM.read(8);gain4 = EEPROM.read(9);loud_on = EEPROM.read(10);brig = EEPROM.read(11);
  audio();
  analogWrite(6, brig);
}
 
void loop() {

  DateTime = clock.getDateTime();hour = DateTime.hour;minut = DateTime.minute;secon = DateTime.second;
 
////////////////////// IR ///////////////////////////////////////////////////////////////
  if ( irrecv.decode( &amp;ir )) {Serial.print(&quot;0x&quot;);Serial.println( ir.value,HEX);irrecv.resume();times=millis();w=1;}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
  if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта  
 
    if(mute==0&amp;&amp;power==0){
  if(ir.value==IR_6&amp;&amp;menu1==1){menu1=0;menu2=1;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;lcd.setCursor(4,0);lcd.print(&quot;SETTING&quot;); delay(2000);lcd.clear();}
  if(ir.value==IR_6&amp;&amp;menu2==1){menu1=1;menu2=0;menu=0;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;lcd.setCursor(6,0);lcd.print(&quot;MENU&quot;); delay(2000);lcd.clear();}
 
  if(ir.value==IR_1&amp;&amp;menu1==1){menu++;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu&gt;2){menu=0;}}//меню 1
  if(ir.value==IR_2&amp;&amp;menu1==1){menu--;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu&lt;0){menu=2;}}//меню 1
 
  if(ir.value==IR_1&amp;&amp;menu2==1){menu0++;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu0&gt;4){menu0=0;}}//меню 2
  if(ir.value==IR_2&amp;&amp;menu2==1){menu0--;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu0&lt;0){menu0=4;}}//меню 2
 
  if(ir.value==IR_5){in++;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(in&gt;3){in=0;}lcd.setCursor(4,0);lcd.print(&quot;INPUT &quot;);lcd.print(in+1);audio();delay(2000);lcd.clear();}// IN
  }
        if (ir.value == IR_9)  {in = 0;gr1 = 0;gr2 = 0;cl();times = millis();w = 1;w2 = 1;audio();lcd.setCursor(3, 0);lcd.print(&quot;  RADIO&quot;);delay(1500);}
        if (ir.value == IR_10) {in = 1;gr1 = 0;gr2 = 0;cl();times = millis();w = 1;w2 = 1;audio();lcd.setCursor(3, 0);lcd.print(&quot;Bluetooth&quot;);delay(1500);}
        if (ir.value == IR_11) {in = 2;gr1 = 0;gr2 = 0;cl();times = millis();w = 1;w2 = 1;audio();lcd.setCursor(3, 0);lcd.print(&quot; SPDiff&quot;);delay(1500);}
        if (ir.value == IR_12) {in = 3;gr1 = 0;gr2 = 0;cl();times = millis();w = 1;w2 = 1;audio();lcd.setCursor(3, 0);lcd.print(&quot;  AUX&quot;);delay(1500);lcd.clear();}
 
  if(ir.value==IR_7&amp;&amp;mute==0&amp;&amp;power==0){mute=1;pt.setAttR(31);pt.setAttL(31);gr1=0;gr2=0;cl();lcd.setCursor(6,0);lcd.print(&quot;MUTE&quot;);menu1=100;menu2=100;delay(500);}// MUTE
  if(ir.value==IR_7&amp;&amp;mute==1&amp;&amp;power==0){mute=0;cl();menu1=1;menu=0;gr1=0;gr2=0;cl();audio();}// MUTE
 
  if((ir.value==IR_8&amp;&amp;power==0)||poww==1){poww=0;power=1;pt.setAttR(31);pt.setAttL(31);audio();gr1=0;gr2=0;cl();lcd.clear();lcd.setCursor(3,0);lcd.print(&quot;POWER  OFF&quot;);menu0=0;menu1=0;menu2=0;save=1;analogWrite(6, BRIG);delay(3000);lcd.clear();}// power off
  if(ir.value==IR_8&amp;&amp;power==1){power=0;gr1=0;gr2=0;cl();lcd.backlight();lcd.clear();lcd.setCursor(3,0);lcd.print(&quot;POWER   ON &quot;);menu1=1;menu=0;myEnc.write(0);audio();analogWrite(6, brig);delay(3000);lcd.clear();}// power on
///////////////////////////////////////////////////////////////////////////////////////// 
 
/////////////////////////////// УПРАВЛЕНИЕ //////////////////////////////////////////////  
  if(mute==0&amp;&amp;power==0){
  if(digitalRead(2)==HIGH&amp;&amp;menu1==1){menu1=0;menu2=1;cl();times=millis();w=1;w2=1;lcd.setCursor(4,0);lcd.print(&quot;SETTING&quot;); delay(2000);lcd.clear();}
  if(digitalRead(2)==HIGH&amp;&amp;menu2==1){menu1=1;menu2=0;menu=0;cl();times=millis();w=1;w2=1;lcd.setCursor(6,0);lcd.print(&quot;MENU&quot;); delay(2000);lcd.clear();}
 
  if(digitalRead(10)==LOW&amp;&amp;menu1==1){menu++;cl();times=millis();w=1;w2=1;if(menu&gt;2){menu=0;}}//меню 1
  if(digitalRead(10)==LOW&amp;&amp;menu2==1){menu0++;cl();times=millis();w=1;w2=1;if(menu0&gt;4){menu0=0;}}//меню 2
 
  if(digitalRead(3)==HIGH){in++;cl();;times=millis();w=1;w2=1;if(in&gt;3){in=0;}lcd.setCursor(4,0);lcd.print(&quot;INPUT &quot;);lcd.print(in+1);audio();delay(2000);lcd.clear();}// IN
  }
 
  if(digitalRead(4)==HIGH&amp;&amp;mute==0&amp;&amp;power==0){mute=1;pt.setAttR(31);pt.setAttL(31);cl();lcd.setCursor(6,0);lcd.print(&quot;MUTE&quot;);menu1=100;menu2=100;delay(500);}// MUTE
  if(digitalRead(4)==HIGH&amp;&amp;mute==1&amp;&amp;power==0){mute=0;cl();menu1=1;menu=0;cl();audio();}// MUTE
 
  if(digitalRead(5)==HIGH&amp;&amp;power==0){power=1;pt.setAttR(31);pt.setAttL(31);lcd.clear();lcd.setCursor(4,0);lcd.print(&quot;POWER  OFF&quot;);menu0=0;menu1=0;menu2=0;save=1;analogWrite(6, 50);delay(3000);lcd.clear();}// power off
  if(digitalRead(5)==HIGH&amp;&amp;power==1){power=0;lcd.backlight();lcd.clear();lcd.setCursor(4,0);lcd.print(&quot;POWER   ON &quot;);menu1=1;menu=0;myEnc.write(0);audio();analogWrite(6, brig);delay(3000);lcd.clear();}// power on
  if(power==0){digitalWrite(7,HIGH);}
   // if(power==0){digitalWrite(7,LOW);}// инверсия выхода STANDBY
   if(in==0){digitalWrite(11,LOW);}else{digitalWrite(11,HIGH);}  // УПРАВЛЕНИЕ РЕЛЕ ПИТАНИЯ ВХОДА 1____________________________
   if(in==1){digitalWrite(13,LOW);}else{digitalWrite(13,HIGH);}   // УПРАВЛЕНИЕ РЕЛЕ ПИТАНИЯ ВХОДА 2_____________________________
   if(in==2){digitalWrite(A0,LOW);}else{digitalWrite(A0,HIGH);}   // УПРАВЛЕНИЕ РЕЛЕ ПИТАНИЯ ВХОДА 3_____________________________
   if(in==3){digitalWrite(A1,LOW);}else{digitalWrite(A1,HIGH);}   // УПРАВЛЕНИЕ РЕЛЕ ПИТАНИЯ ВХОДА 4_____________________________
   if(power==1){digitalWrite(11,HIGH);digitalWrite(13,HIGH);digitalWrite(A0,HIGH);digitalWrite(A1,HIGH);}
  if(save==1&amp;&amp;w2==1){save=0;w2=0;
     EEPROM.update(0,vol);EEPROM.update(1,treb+7);EEPROM.update(2,bass+7);EEPROM.update(3,in);
     EEPROM.update(4,att_l);EEPROM.update(5,att_r);EEPROM.update(6,gain1);EEPROM.update(7,gain2);
     EEPROM.update(8,gain3);EEPROM.update(9,gain4);EEPROM.update(10,loud_on);EEPROM.update(11,brig);}
///////////////////////////////////////////////////////////////////////////////////////// 
 
////////////// VOLUME ///////////////////////////////////////////////////////////////////
 if(menu==0&amp;&amp;menu1==1){
   if(ir.value==IR_3){vol++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;vol_func();audio();}// кнопка &gt; 
//   if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl1();times=millis();w=1;w2=1;vol_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){vol--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;vol_func();audio();}// кнопка &lt;
//   if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl1();times=millis();w=1;w2=1;vol_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;vol=vol+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;vol_func();audio();}
   a[0]= vol/10;a[1]=vol%10;
   for(i=0;i&lt;2;i++){switch(i){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
 
   lcd.setCursor(0,0);lcd.print(&quot;IN&quot;);lcd.print(in+1);lcd.print(&quot; VOLUME&quot;);
   if(vol&lt;0){lcd.setCursor(9,1);lcd.write((uint8_t)8);}else{lcd.setCursor(9,1);lcd.print(&quot; &quot;);}
   times_f();
   }
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// BASS ///////////////////////////////////////////////////////////////////
 if(menu==1&amp;&amp;menu1==1){
   if(ir.value==IR_3){bass++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;bass_func();audio();}// кнопка &gt; 
//   if(ir.value==0xFFFFFFFF and gr1==1){bass++;gr2=0;cl1();times=millis();w=1;w2=1;bass_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){bass--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;bass_func();audio();}// кнопка &lt;
//   if(ir.value==0xFFFFFFFF and gr2==1){bass--;gr1=0;cl1();times=millis();w=1;w2=1;bass_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;bass=bass+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;bass_func();audio();}
   a[0]= abs(bass*2)/10;a[1]=abs(bass*2)%10;
   for(i=0;i&lt;2;i++){switch(i){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
 
   lcd.setCursor(0,0);lcd.print(&quot;BASS   dB&quot;);
   if(bass&lt;0){lcd.setCursor(9,1);lcd.write((uint8_t)8);}else{lcd.setCursor(9,1);lcd.print(&quot; &quot;);}
   times_f();
   }
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// TREBLE ///////////////////////////////////////////////////////////////////
 if(menu==2&amp;&amp;menu1==1){
   if(ir.value==IR_3){treb++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;treb_func();audio();}// кнопка &gt; 
//   if(ir.value==0xFFFFFFFF and gr1==1){treb++;gr2=0;cl1();times=millis();w=1;w2=1;treb_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){treb--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;treb_func();audio();}// кнопка &lt;
//   if(ir.value==0xFFFFFFFF and gr2==1){treb--;gr1=0;cl1();times=millis();w=1;w2=1;treb_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;treb=treb+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;treb_func();audio();}
   a[0]= abs(treb*2)/10;a[1]=abs(treb*2)%10;
 
   for(i=0;i&lt;2;i++){switch(i){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
 
   lcd.setCursor(0,0);lcd.print(&quot;TREBLE dB&quot;);
   if(treb&lt;0){lcd.setCursor(9,1);lcd.write((uint8_t)8);}else{lcd.setCursor(9,1);lcd.print(&quot; &quot;);}
   times_f();
   }
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// ATT_L ///////////////////////////////////////////////////////////////////
 if(menu0==0&amp;&amp;menu2==1){
   if(ir.value==IR_3){att_l++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;att_l_func();audio();}// кнопка &gt; 
//   if(ir.value==0xFFFFFFFF and gr1==1){att_l++;gr2=0;cl1();times=millis();w=1;w2=1;att_l_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){att_l--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;att_l_func();audio();}// кнопка &lt;
//   if(ir.value==0xFFFFFFFF and gr2==1){att_l--;gr1=0;cl1();times=millis();w=1;w2=1;att_l_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;att_l=att_l+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;att_l_func();audio();}
   a[0]= abs(att_l)/10;a[1]=abs(att_l)%10;
   for(i=0;i&lt;2;i++){switch(i){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
 
   lcd.setCursor(0,0);lcd.print(&quot;ATT_L&quot;);
   lcd.setCursor(0,1);lcd.print(-att_l*1.25,2);lcd.print(&quot; &quot;);lcd.setCursor(6,1);lcd.print(&quot;dB&quot;);}
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// ATT_R ///////////////////////////////////////////////////////////////////
 if(menu0==1&amp;&amp;menu2==1){
   if(ir.value==IR_3){att_r++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;att_r_func();audio();}// кнопка &gt; 
//   if(ir.value==0xFFFFFFFF and gr1==1){att_r++;gr2=0;cl1();times=millis();w=1;w2=1;att_r_func();audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){att_r--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;att_r_func();audio();}// кнопка &lt;
//   if(ir.value==0xFFFFFFFF and gr2==1){att_r--;gr1=0;cl1();times=millis();w=1;w2=1;att_r_func();audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;att_r=att_r+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;att_r_func();audio();}
   a[0]= abs(att_r)/10;a[1]=abs(att_r)%10;
   for(i=0;i&lt;2;i++){switch(i){case 0: e1=10,e2=11,e3=12;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
 
   lcd.setCursor(0,0);lcd.print(&quot;ATT_R&quot;);
   lcd.setCursor(0,1);lcd.print(-att_r*1.25,2);lcd.print(&quot; &quot;);lcd.setCursor(6,1);lcd.print(&quot;dB&quot;);}
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// INPUT GAIN ///////////////////////////////////////////////////////////////////
 if(menu0==2&amp;&amp;menu2==1){
   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();times=millis();w=1;w2=1;gain_func();www=1;}// кнопка &gt; 
//   if(ir.value==0xFFFFFFFF and gr1==1){gain0++;gr2=0;cl1();times=millis();w=1;w2=1;gain_func();www=1;}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){gain0--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;gain_func();www=1;}// кнопка &lt;
//   if(ir.value==0xFFFFFFFF and gr2==1){gain0--;gr1=0;cl1();times=millis();w=1;w2=1;gain_func();www=1;}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;gain0=gain0+newPosition;myEnc.write(0);newPosition=0;times=millis();www=1;w=1;w2=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;
     }  
     a[0]= abs(gain0);
 
   for(i=0;i&lt;1;i++){switch(i){case 0: e1=13,e2=14,e3=15;break;case 1: e1=13,e2=14,e3=15;break;}digit();}
   lcd.setCursor(0,1);lcd.print(&quot;GAIN &quot;);lcd.print(gain0*3.75,2);lcd.print(&quot; &quot;);lcd.setCursor(10,1);lcd.print(&quot;dB&quot;);
   if(www==1){audio();www=0;}
   lcd.setCursor(0,0);lcd.print(&quot;INPUT &quot;);lcd.print(in+1);}
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// LOUDNESS ///////////////////////////////////////////////////////////////////
 if(menu0==3&amp;&amp;menu2==1){
   if(ir.value==IR_3){loud_on++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;if(loud_on&gt;1){loud_on=0;};if(loud_on&lt;0){loud_on=1;}audio();}// кнопка &gt; 
//   if(ir.value==0xFFFFFFFF and gr1==1){loud_on++;gr2=0;cl1();times=millis();w=1;w2=1;if(loud_on&gt;1){loud_on=0;};if(loud_on&lt;0){loud_on=1;}audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){loud_on--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;if(loud_on&gt;1){loud_on=0;};if(loud_on&lt;0){loud_on=1;}audio();}// кнопка &lt;
//   if(ir.value==0xFFFFFFFF and gr2==1){loud_on--;gr1=0;cl1();times=millis();w=1;w2=1;if(loud_on&gt;1){loud_on=0;};if(loud_on&lt;0){loud_on=1;}audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;loud_on=loud_on+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;if(loud_on&gt;1){loud_on=0;};if(loud_on&lt;0){loud_on=1;};audio();}
   if(loud_on==1){lcd.setCursor(2,0);lcd.print(&quot;LOUDNESS  ON &quot;);}
             else{lcd.setCursor(2,0);lcd.print(&quot;LOUDNESS  OFF&quot;);}}
////////////////////////////////////////////////////////////////////////////////////////////
 
////////////// BRIGHTNESS ///////////////////////////////////////////////////////////////////
 if(menu0==4&amp;&amp;menu2==1){
   if(ir.value==IR_3){brig++;gr1=1;gr2=0;cl1();times=millis();w=1;w2=1;brig_func();analogWrite(6,brig);}// кнопка &gt; 
//   if(ir.value==0xFFFFFFFF and gr1==1){brig++;gr2=0;cl1();times=millis();w=1;w2=1;brig_func();analogWrite(6,brig);}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR_4){brig--;gr1=0;gr2=1;cl1();times=millis();w=1;w2=1;brig_func();analogWrite(6,brig);}// кнопка &lt;
//   if(ir.value==0xFFFFFFFF and gr2==1){brig--;gr1=0;cl1();times=millis();w=1;w2=1;brig_func();analogWrite(6,brig);}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
   if (newPosition != oldPosition){oldPosition = newPosition;brig=brig+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;brig_func();analogWrite(6,brig);}
   a[0]= abs(brig)/100;a[1]=abs(brig)/10%10;a[2]=abs(brig)%10;
   for(i=0;i&lt;3;i++){switch(i){case 0: e1=7,e2=8,e3=9;break;
                              case 1: e1=10,e2=11,e3=12;break;
                              case 2: e1=13,e2=14,e3=15;break;
                              }digit();}
 
   lcd.setCursor(0,0);lcd.print(&quot;BRIGHT&quot;);
   lcd.setCursor(0,1);lcd.print(brig*100/255);lcd.print(&quot; &quot;);lcd.setCursor(4,1);lcd.print(&quot;%&quot;);}
////////////////////////////////////////////////////////////////////////////////////////////
 
if(millis()-times&gt;10000&amp;&amp;w==1&amp;&amp;mute==0&amp;&amp;power==0){w=0;menu2=0;menu1=1;menu=0;cl();}
 
/////////////////// ЧАСЫ ///////////////////////////////////////////////////////////////////
if(power==1){digitalWrite(7,LOW);
     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;4;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;
   }digit();}
 
   lcd.setCursor(6,0);lcd.print(&quot;.&quot;);lcd.setCursor(6,1);lcd.print(&quot;.&quot;);
   lcd.setCursor(14,1);lcd.print(a[4]);lcd.setCursor(15,1);lcd.print(a[5]);   
//// set time ////
  if(digitalRead(10)==LOW&amp;&amp;digitalRead(2)==HIGH){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)==HIGH){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)==HIGH){secon=0; clock.setDateTime(2020, 9, 15, hour, minut, secon);delay(100); }
}
////////////////////////////////////////////////////////////////////////////////////////////
}// loop
 
 
void times_f(){lcd.setCursor(1,1);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);}
void brig_func(){if(brig&lt;0){brig=0;}if(brig&gt;255){brig=255;}}
void gain_func(){if(gain0&lt;0){gain0=0;}if(gain0&gt;3){gain0=3;}}
void att_r_func(){if(att_r&lt;0){att_r=0;}if(att_r&gt;24){att_r=24;}}
void att_l_func(){if(att_l&lt;0){att_l=0;}if(att_l&gt;24){att_l=24;}}
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 vol_func(){if(vol&lt;0){vol=0;}if(vol&gt;56){vol=56;}}
void cl(){ir.value=0;delay(300);lcd.clear();}
void cl1(){ir.value=0;delay(200);}  
void audio(){
  pt.setVolume(vol); // int 0...56 === -70...0 dB step 1.25 dB
  pt.setAttL(att_l); // int 0...24 === 0...-30 db step 1.25 dB &gt; int 31 === mute on     
  pt.setAttR(att_r); // int 0...24 === 0...-30 dB step 1.25 dB &gt; int 31 === mute on
  pt.setSwitch(in, loud_on, gain0); 
        // input      int 0..3 === IN 1...4 
        // loudness   int 0...1 === 1-on 0-off
        // input gain int 0...3 === 0...11.25dB step 3.75 dB
  pt.setBass(bass);   // int -7...+7 === -14...+14 dB step 2 dB
  pt.setTreble(treb); // int -7...+7 === -14...+14 dB step 2 dB
  }
 
void to_Timer(){newPosition = myEnc.read()/4;}  
 
void digit(){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);}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[z_phantom]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2269</uri>
			</author>
			<updated>2023-12-19T19:43:55Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=9050#p9050</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: PT2314]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8991#p8991" />
			<content type="html"><![CDATA[<p>Спасибо. Все работает</p>]]></content>
			<author>
				<name><![CDATA[romadzu]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2199</uri>
			</author>
			<updated>2023-12-12T08:21:39Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8991#p8991</id>
		</entry>
</feed>
