<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[forum.rcl-radio.ru &mdash; Регулятор громкости и тембра на LC75341 + 0.96′ I2C 128X64 OLED LCD]]></title>
	<link rel="self" href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=449&amp;type=atom" />
	<updated>2024-07-07T16:31:48Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.rcl-radio.ru/viewtopic.php?id=449</id>
		<entry>
			<title type="html"><![CDATA[Re: Регулятор громкости и тембра на LC75341 + 0.96′ I2C 128X64 OLED LCD]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=10550#p10550" />
			<content type="html"><![CDATA[<p>Хочу предложить дополнительную функцию для этого устройства: мониторинг аудивыхода 75341 с целью обнаружить тишину в течении 10 мин, если &quot;да&quot;, то включить режим STBY.</p>]]></content>
			<author>
				<name><![CDATA[Karl2233]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1733</uri>
			</author>
			<updated>2024-07-07T16:31:48Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=10550#p10550</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Регулятор громкости и тембра на LC75341 + 0.96′ I2C 128X64 OLED LCD]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=9369#p9369" />
			<content type="html"><![CDATA[<p>Александр, спасибо!</p>]]></content>
			<author>
				<name><![CDATA[Karl2233]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1733</uri>
			</author>
			<updated>2024-02-06T12:02:54Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=9369#p9369</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Регулятор громкости и тембра на LC75341 + 0.96′ I2C 128X64 OLED LCD]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=9366#p9366" />
			<content type="html"><![CDATA[<p>Да, все верно</p><p>Должно быть примерно так:</p><div class="codebox"><pre><code>#define TEMP1 A0
#define OUT   1

int vol1 = 0;

/*
показания терморезисторов
25 градусов = 170
50 градусов = 200
60 градусов = 250
70 градусов = 300
  */


void setup() {
pinMode(TEMP1, INPUT);
pinMode(OUT, OUTPUT);
}

void loop() {
vol1 = analogRead(TEMP1);
 
if (vol1 &gt; 280) {
    analogWrite(OUT, 255);
  }
else if (vol1 &gt; 240) {
    analogWrite(OUT, 180);
  }
  else if (vol1 &gt; 200) {
    analogWrite(OUT, 100);
  }

  else if (vol1 &lt; 180) {
    analogWrite(OUT, 0);
  }
 
  }</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2024-02-05T14:44:41Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=9366#p9366</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Регулятор громкости и тембра на LC75341 + 0.96′ I2C 128X64 OLED LCD]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=9365#p9365" />
			<content type="html"><![CDATA[<p>Всем привет!<br />Уважаемый liman324, хочу добавить в этот скетч блок для управления вентилятором.</p><p>Идея простая: на свободный аналоговый пин цепляю терморезистор, со свободного цифрового снимаю ШИМ для управления вентилятором.<br />Думаю что это, вместе со всеми Вашими доработками (я про 4 выхода управления +1 с задержкой) сильно увеличит функционал.<br />Так вот вопрос: у меня есть готовый скетч для Аттини13, правильно ли я понимаю - надо объявить вход и выход и в loop прописать этот скетч?</p><p>Вот сам этот кусок:<br />const byte temp1 = 1;<br />const byte led = 0;// это выход на ключ управления</p><p>int vol1 = 0;</p><p>/*<br /> показания терморезисторов<br /> 25 градусов = 170<br /> 50 градусов = 200<br /> 60 градусов = 250<br /> 70 градусов = 300<br />&nbsp; */</p><br /><p>void setup() {<br /> pinMode(temp1, INPUT);<br /> pinMode(led, OUTPUT);<br />}</p><p>void loop() {<br /> vol1 = analogRead(temp1);<br />&nbsp; <br /> if (vol1 &gt; 280) {<br />&nbsp; &nbsp; analogWrite(led, 255);<br />&nbsp; }<br />else if (vol1 &gt; 240) {<br />&nbsp; &nbsp; analogWrite(led, 180);<br />&nbsp; }<br />&nbsp; else if (vol1 &gt; 200) {<br />&nbsp; &nbsp; analogWrite(led, 100);<br />&nbsp; }</p><p>&nbsp; else if (vol1 &lt; 180) {<br />&nbsp; &nbsp; analogWrite(led, 0);<br />&nbsp; }<br />&nbsp; <br />&nbsp; }</p>]]></content>
			<author>
				<name><![CDATA[Karl2233]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1733</uri>
			</author>
			<updated>2024-02-05T13:27:44Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=9365#p9365</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Регулятор громкости и тембра на LC75341 + 0.96′ I2C 128X64 OLED LCD]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8925#p8925" />
			<content type="html"><![CDATA[<p>Для питания всей этой радости пришлось добавить трансформатор (на фото - стоит по диагонали) на 12 вольт плюс линейный стабилизатор на КР1158ЕН9, родные источники не подошли ( есть 24 вольт - но из него получать линейным стабилизатором 9в. - много тепла, а импульсный понижающий давал наводки).</p>]]></content>
			<author>
				<name><![CDATA[vladimirk68]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2202</uri>
			</author>
			<updated>2023-11-24T19:24:27Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8925#p8925</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Регулятор громкости и тембра на LC75341 + 0.96′ I2C 128X64 OLED LCD]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8924#p8924" />
			<content type="html"><![CDATA[<p>Вот несколько фото готового аппарата. Назад вывел кабель от Ардуины на всякий случай. Для исключения наводок от Ардуины в цепи ее питания поставил индуктивность 2х15 mh (на фото она есть), начала и концы катушек - опытным путем до исчезновения наводок.<span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2023/11/3e87a52727d312221fc7bcf8c81b8d9e.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2023/11/3e87a52727d312221fc7bcf8c81b8d9e.jpg" /></span> <br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2023/11/411646fd1e3fc305dd1357bb43f5a1e3.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2023/11/411646fd1e3fc305dd1357bb43f5a1e3.jpg" /></span> <br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2023/11/beebd177fa637ba7854cd5c2682adf9a.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2023/11/beebd177fa637ba7854cd5c2682adf9a.jpg" /></span> <br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2023/11/81ac162682caade47a7010c29293484d.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2023/11/81ac162682caade47a7010c29293484d.jpg" /></span> <br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2023/11/01d36bc274ccdba2b8b240c0a10af8ae.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2023/11/01d36bc274ccdba2b8b240c0a10af8ae.jpg" /></span></p>]]></content>
			<author>
				<name><![CDATA[vladimirk68]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2202</uri>
			</author>
			<updated>2023-11-24T19:13:31Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8924#p8924</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Регулятор громкости и тембра на LC75341 + 0.96′ I2C 128X64 OLED LCD]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8923#p8923" />
			<content type="html"><![CDATA[<p>Вот эту закономерность я и хотел осмыслить. Вроде задаешь максимум, а получаешь 0.</p>]]></content>
			<author>
				<name><![CDATA[vladimirk68]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2202</uri>
			</author>
			<updated>2023-11-24T18:56:16Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8923#p8923</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Регулятор громкости и тембра на LC75341 + 0.96′ I2C 128X64 OLED LCD]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8922#p8922" />
			<content type="html"><![CDATA[<p>Пока не стал трогать void to_Timer(), изменил в setup<br />vol_reg = 79;<br />при включении стало 0.</p>]]></content>
			<author>
				<name><![CDATA[vladimirk68]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2202</uri>
			</author>
			<updated>2023-11-24T18:54:45Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8922#p8922</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Регулятор громкости и тембра на LC75341 + 0.96′ I2C 128X64 OLED LCD]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8920#p8920" />
			<content type="html"><![CDATA[<p>Функция считывания положения энкодера</p><p>void to_Timer(){newPosition = myEnc.read()/4;newPosition_vol = myEnc_vol.read()/4;}</p><p>Она уже предусматривает деление на 4</p><p>Сделайте так:</p><p>void to_Timer(){newPosition = myEnc.read();newPosition_vol = myEnc_vol.read();}</p><p>Посмотрите как измениться шаг и поправьте делители в скетче</p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2023-11-24T15:18:50Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8920#p8920</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Регулятор громкости и тембра на LC75341 + 0.96′ I2C 128X64 OLED LCD]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8917#p8917" />
			<content type="html"><![CDATA[<p>Спасибо! Теперь при включении 4 (у меня шаг регулировки громкости 4). В общем тоже устроит, но хотелось бы понять закономерность.</p>]]></content>
			<author>
				<name><![CDATA[vladimirk68]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2202</uri>
			</author>
			<updated>2023-11-24T14:34:29Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8917#p8917</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Регулятор громкости и тембра на LC75341 + 0.96′ I2C 128X64 OLED LCD]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8914#p8914" />
			<content type="html"><![CDATA[<p>vol_reg = 75;</p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2023-11-24T11:20:09Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8914#p8914</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Регулятор громкости и тембра на LC75341 + 0.96′ I2C 128X64 OLED LCD]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8904#p8904" />
			<content type="html"><![CDATA[<p>Как сделать, чтобы при включении громкость была 0?<br />Пробовал в setup <br />vol_reg = 0;<br />Не помогает. При включении 75.</p>]]></content>
			<author>
				<name><![CDATA[vladimirk68]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2202</uri>
			</author>
			<updated>2023-11-23T18:12:28Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8904#p8904</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Регулятор громкости и тембра на LC75341 + 0.96′ I2C 128X64 OLED LCD]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8867#p8867" />
			<content type="html"><![CDATA[<p>И в железе работает. Еще раз большое спасибо! Проект становится все интереснее. Скоро соберу окончательно и выложу фото.</p>]]></content>
			<author>
				<name><![CDATA[vladimirk68]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2202</uri>
			</author>
			<updated>2023-11-11T19:41:43Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8867#p8867</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Регулятор громкости и тембра на LC75341 + 0.96′ I2C 128X64 OLED LCD]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8866#p8866" />
			<content type="html"><![CDATA[<p>Спасибо! Сегодня попробую перепаять и проверить. Нужно еще резисторы припаять для подтяжки входов к +5в.</p>]]></content>
			<author>
				<name><![CDATA[vladimirk68]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2202</uri>
			</author>
			<updated>2023-11-11T16:35:52Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8866#p8866</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Регулятор громкости и тембра на LC75341 + 0.96′ I2C 128X64 OLED LCD]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8865#p8865" />
			<content type="html"><![CDATA[<p>В железе не проверял, энкодер пины А0 А1</p><div class="codebox"><pre><code>#define IR2    0xCB0 // button encoder (pause)
#define IR3    0xC0D // mute
#define IR4    0xCB4 // &gt;&gt;&gt;
#define IR5    0xCB2 // &lt;&lt;&lt;
#define IR6    0x33B844BB // INPUT
#define POWER  0xC3D // STANDBY
#define TUNER  0xC7F
#define DSR    0xDBF
#define CD     0xD3F
#define TAPE   0xCBF
#define DCC    0xDFF
#define PHONO  0xD7F

#include &lt;LC75341.h&gt;           // http://rcl-radio.ru/wp-content/uploads/ … c75341.zip
#include &lt;Wire.h&gt;
#include &lt;MsTimer2.h&gt;          // http://rcl-radio.ru/wp-content/uploads/ … Timer2.zip
#include &lt;OLED_I2C.h&gt;          // http://rcl-radio.ru/wp-content/uploads/ … ED_I2C.zip
#include &lt;Encoder.h&gt;           // http://rcl-radio.ru/wp-content/uploads/ … ncoder.zip
#include &lt;EEPROM.h&gt;
#include &lt;boarddefs.h&gt;         // входит в состав библиотеки IRremote
#include &lt;IRremote.h&gt;          // http://rcl-radio.ru/wp-content/uploads/ … remote.zip

Encoder myEnc(9, 8);// DT, CLK
Encoder myEnc_vol(A0, A1);// DT, CLK
OLED  myOLED(SDA, SCL, 8);
LC75341 lc(3,4,2);   // CE,DI,CL
IRrecv irrecv(12); // указываем вывод модуля IR приемника
decode_results ir;

extern uint8_t SmallFont[],BigNumbers[];
long times,oldPosition  = -999,newPosition;
long times_vol,oldPosition_vol  = -999,newPosition_vol;
int vol_reg,menu,mute_reg,power,treb_reg,gain0,gain1,gain2,gain3,gain4,gain5,bass_reg,in_reg,ball,vol_old;
bool w,w2,gr1,gr2,www,standby;
int u;

void setup(){
  Wire.begin();Wire.setClock(400000L);
  irrecv.enableIRIn();
  myOLED.begin();
  myOLED.setBrightness(100);
  Serial.begin(9600);
  MsTimer2::set(1, to_Timer);MsTimer2::start();
  pinMode(10,INPUT);        // encoder SW
  pinMode(7,INPUT_PULLUP);  // mute button
  pinMode(11,INPUT_PULLUP); // input button
//  pinMode(6,INPUT_PULLUP);  // standby button
//  pinMode(5,OUTPUT);        // out standby
  vol_reg = EEPROM.read(0);treb_reg = EEPROM.read(1)-5;bass_reg = EEPROM.read(2);gain1 = EEPROM.read(4);
  gain2 = EEPROM.read(5);gain3 = EEPROM.read(6);gain4 = EEPROM.read(7);gain5 = EEPROM.read(8);
  in_reg = EEPROM.read(9);ball = EEPROM.read(10)-4;
  switch(in_reg){
     case 0: gain0 = gain1;break;
     case 1: gain0 = gain2;break;
     case 2: gain0 = gain3;break;
     case 3: gain0 = gain4;break;
     }
  audio_L();
  audio_R();

}

void loop(){
/// IR ////////////////////////////////////////
   if ( irrecv.decode( &amp;ir )) {Serial.print(&quot;0x&quot;);Serial.println( ir.value,HEX);u++;irrecv.resume();times=millis();w=1;w2=1;}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
   if(u&gt;1){ir.value=0;u=0;}
   if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта   
//////// BUTTON /////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(standby==0){
if(mute_reg==0){
   if(digitalRead(10)==LOW||ir.value==IR2){menu++;gr1=0;gr2=0;cl();times=millis();w=1;w2=1;if(menu&gt;3){menu=0;}}
   if((digitalRead(11)==LOW||ir.value==IR6)){in_reg++;menu=4;cl();times=millis();w=1;w2=1;www=1;if(in_reg&gt;3){in_reg=0;}}
  }
   if((digitalRead(7)==LOW||ir.value==IR3)&amp;&amp;mute_reg==0){mute_reg=1;menu=100;cl();vol_old=vol_reg;vol_reg=79;audio_R();audio_L();myOLED.clrScr();myOLED.setFont(SmallFont);
       myOLED.print(F(&quot;MUTE&quot;), CENTER, 25);myOLED.update();}
   if((digitalRead(7)==LOW||ir.value==IR3)&amp;&amp;mute_reg==1){mute_reg=0;w=1;menu=0;cl();vol_reg=vol_old;audio_R();audio_L();}
}

   if((digitalRead(6)==LOW||ir.value==POWER)&amp;&amp;standby==0){standby=1;menu=100;cl();;vol_old=vol_reg;vol_reg=79;audio_R();audio_L();myOLED.clrScr();myOLED.setFont(SmallFont);
        myOLED.print(F(&quot;POWER OFF&quot;), CENTER, 25);myOLED.update();digitalWrite(5,LOW);delay(2000);myOLED.setBrightness(0);myOLED.clrScr();myOLED.update();}
   if((digitalRead(6)==LOW||ir.value==POWER)&amp;&amp;standby==1){standby=0;w=1;menu=0;cl();vol_reg=vol_old;audio_R();audio_L();myOLED.setBrightness(100);}
   if((digitalRead(6)==LOW||ir.value==TUNER)&amp;&amp;standby==1){standby=0;w=1;menu=0;cl();vol_reg=vol_old;audio_R();audio_L();myOLED.setBrightness(100);}
   if((digitalRead(6)==LOW||ir.value==DSR)&amp;&amp;standby==1){standby=0;w=1;menu=0;cl();vol_reg=vol_old;audio_R();audio_L();myOLED.setBrightness(100);}
   if((digitalRead(6)==LOW||ir.value==CD)&amp;&amp;standby==1){standby=0;w=1;menu=0;cl();vol_reg=vol_old;audio_R();audio_L();myOLED.setBrightness(100);}
   if((digitalRead(6)==LOW||ir.value==TAPE)&amp;&amp;standby==1){standby=0;w=1;menu=0;cl();vol_reg=vol_old;audio_R();audio_L();myOLED.setBrightness(100);}
   if((digitalRead(6)==LOW||ir.value==DCC)&amp;&amp;standby==1){standby=0;w=1;menu=0;cl();vol_reg=vol_old;audio_R();audio_L();myOLED.setBrightness(100);}
   if((digitalRead(6)==LOW||ir.value==PHONO)&amp;&amp;standby==1){standby=0;w=1;menu=0;cl();vol_reg=vol_old;audio_R();audio_L();myOLED.setBrightness(100);}   

   if(standby==1){digitalWrite(5,LOW);}else{digitalWrite(5,HIGH);}

   if((newPosition_vol != oldPosition_vol)&amp;&amp;menu!=0){oldPosition_vol = newPosition_vol;if(newPosition_vol&gt;1){newPosition_vol=1;}if(newPosition_vol&lt;-1){newPosition_vol=-1;}
  menu = 0;vol_reg=vol_reg+newPosition_vol*4;myEnc_vol.write(0);newPosition_vol=0;times=millis();w=1;w2=1;vol_func();audio_R();audio_L();}
   
//////// VOLUME ////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
  if(menu==0){
  if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
  vol_reg=vol_reg+newPosition*4;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;vol_func();audio_R();audio_L();}

  if(newPosition_vol != oldPosition_vol){oldPosition_vol = newPosition_vol;if(newPosition_vol&gt;1){newPosition_vol=1;}if(newPosition_vol&lt;-1){newPosition_vol=-1;}
  menu = 0;vol_reg=vol_reg+newPosition_vol*4;myEnc_vol.write(0);newPosition_vol=0;times=millis();w=1;w2=1;vol_func();audio_R();audio_L();}

   if(ir.value==IR5){vol_reg++/2;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;vol_func();audio_R();audio_L();}// кнопка &gt;
   if(ir.value==0xFFFFFFFF and gr1==1){vol_reg++;gr2=0;cl();times=millis();w=1;w2=1;vol_func();audio_R();audio_L();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
   if(ir.value==IR4){vol_reg--/2;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;vol_func();audio_R();audio_L();}// кнопка &lt;
   if(ir.value==0xFFFFFFFF and gr2==1){vol_reg--;gr1=0;cl();times=millis();w=1;w2=1;vol_func();audio_R();audio_L();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;

  if(w==1){w=0;
  myOLED.clrScr();
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;VOLUME&quot;), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(79-vol_reg, 65, 0);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;IN&quot;), LEFT, 10);
  myOLED.printNumI(in_reg+1, 20, 10);myOLED.print(F(&quot;GAIN&quot;), LEFT, 20);myOLED.printNumI(gain0*2, 30, 20);
  myOLED.drawLine(0, 30, 128, 30);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;TREBLE&quot;), LEFT, 35);myOLED.printNumI(treb_reg*2, 70, 35);myOLED.print(F(&quot;dB&quot;), RIGHT, 35);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;BASS&quot;), LEFT, 45);myOLED.printNumI(bass_reg*2, 70, 45);myOLED.print(F(&quot;dB&quot;), RIGHT, 45);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;BALANCE&quot;), LEFT, 55);myOLED.printNumI(ball, 70, 55);myOLED.print(F(&quot;dB&quot;), RIGHT, 55);
  myOLED.update();
  }}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 

//////// TREBLE ////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
  if(menu==1){
  if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
  treb_reg=treb_reg-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;treb_func();audio_R();audio_L();}

   if(ir.value==IR4){treb_reg++;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;treb_func();audio_R();audio_L();}// кнопка &gt;
   if(ir.value==IR5){treb_reg--;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;treb_func();audio_R();audio_L();}// кнопка &lt;

  if(w==1){w=0;
  myOLED.clrScr();
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;TREBLE&quot;), LEFT, 0);;myOLED.setFont(BigNumbers);myOLED.printNumI(treb_reg*2, 65, 0);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;dB&quot;), RIGHT, 0);
  myOLED.drawLine(0, 30, 128, 30);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;BASS&quot;), LEFT, 35);myOLED.printNumI(bass_reg*2, 70, 35);myOLED.print(F(&quot;dB&quot;), RIGHT, 35);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;BALANCE&quot;), LEFT, 45);myOLED.printNumI(ball, 70, 45);myOLED.print(F(&quot;dB&quot;), RIGHT, 45);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;VOLUME&quot;), LEFT, 55);myOLED.printNumI(79-vol_reg, 70, 55);
  myOLED.update();
  }}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//////// BASS ////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
  if(menu==2){
  if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
  bass_reg=bass_reg-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;bass_func();audio_R();audio_L();}

   if(ir.value==IR4){bass_reg++;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;bass_func();audio_R();audio_L();}// кнопка &gt;
   if(ir.value==IR5){bass_reg--;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;bass_func();audio_R();audio_L();}// кнопка &lt;

  if(w==1){w=0;
  myOLED.clrScr();
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;BASS&quot;), LEFT, 0);;myOLED.setFont(BigNumbers);myOLED.printNumI(bass_reg*2, 65, 0);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;dB&quot;), RIGHT, 0);
  myOLED.drawLine(0, 30, 128, 30);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;BALANCE&quot;), LEFT, 35);myOLED.printNumI(ball, 70, 35);myOLED.print(F(&quot;dB&quot;), RIGHT, 35);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;VOLUME&quot;), LEFT, 45);myOLED.printNumI(79-vol_reg, 70, 45);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;TREBLE&quot;), LEFT, 55);myOLED.printNumI(treb_reg*2, 70, 55);myOLED.print(F(&quot;dB&quot;), RIGHT, 55);
  myOLED.update();
  }}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//////// BALANCE ////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
  if(menu==3){
  if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
  ball=ball-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ball_func();audio_R();audio_L();}

   if(ir.value==IR4){ball++;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ball_func();audio_R();audio_L();}// кнопка &gt;
   if(ir.value==IR5){ball--;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ball_func();audio_R();audio_L();}// кнопка &lt;

  if(w==1){w=0;
  myOLED.clrScr();
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;BALANCE&quot;), LEFT, 0);;myOLED.setFont(BigNumbers);myOLED.printNumI(abs(ball), 65, 0);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;dB&quot;), RIGHT, 0);
  if(ball&lt;=0){myOLED.print(F(&quot;LCH&quot;), 20, 20);}
  if(ball&gt;=0){myOLED.print(F(&quot;RCH&quot;), RIGHT, 20);}
  myOLED.drawLine(0, 30, 128, 30);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;VOLUME&quot;), LEFT, 35);myOLED.printNumI(79-vol_reg, 70, 35);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;TREBLE&quot;), LEFT, 45);myOLED.printNumI(treb_reg*2, 70, 45);myOLED.print(F(&quot;dB&quot;), RIGHT, 45);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;BASS&quot;), LEFT, 55);myOLED.printNumI(bass_reg*2, 70, 55);myOLED.print(F(&quot;dB&quot;), RIGHT, 55); 
  myOLED.update();
  }}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////// INPUT GAIN ///////////////////////////////////////////////////////////////////
if(menu==4){
  switch(in_reg){
     case 0: gain0 = gain1;break;
     case 1: gain0 = gain2;break;
     case 2: gain0 = gain3;break;
     case 3: gain0 = gain4;break;
     }

  if (newPosition != oldPosition){oldPosition = newPosition;gain0=gain0-newPosition;myEnc.write(0);newPosition=0;times=millis();www=1;w=1;w2=1;gain_func();}

   if(ir.value==IR4){gain0++;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;gain_func();audio_R();audio_L();}// кнопка &gt;
   if(ir.value==IR5){gain0--;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;gain_func();audio_R();audio_L();}// кнопка &lt;

  switch(in_reg){
     case 0: gain1 = gain0;break;
     case 1: gain2 = gain0;break;
     case 2: gain3 = gain0;break;
     case 3: gain4 = gain0;break;
     } 
  if(www==1){audio_R();audio_L();www=0;}

  if(w==1){w=0;
  myOLED.clrScr();
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;INPUT&quot;), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(in_reg+1, 65, 0);
  myOLED.drawLine(0, 30, 128, 30);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;GAIN&quot;), LEFT, 35);myOLED.setFont(BigNumbers);myOLED.printNumI(gain0*2, 65, 35);
  myOLED.setFont(SmallFont);myOLED.print(F(&quot;dB&quot;), RIGHT, 35);
  myOLED.update();
  }}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////   

////////////////// EEPROM //////////////////////////////////////////////////////////////
if(millis()-times&gt;10000 &amp;&amp; w2==1 &amp;&amp; mute_reg==0 &amp;&amp; standby==0){
     EEPROM.update(0,vol_reg);EEPROM.update(1,treb_reg+5);EEPROM.update(2,bass_reg);EEPROM.update(4,gain1);
     EEPROM.update(5,gain2);EEPROM.update(6,gain3);EEPROM.update(7,gain4);EEPROM.update(8,gain5);
     EEPROM.update(9,in_reg);EEPROM.update(10,ball+4);
     if(menu!=0){menu=0;}w=1;w2=0;}   
}// end loop

void treb_func(){if(treb_reg&lt;-5){treb_reg=-5;}if(treb_reg&gt;5){treb_reg=5;}}
void gain_func(){{if(gain0&lt;0){gain0=0;}if(gain0&gt;15){gain0=15;}}}
void ball_func(){if(ball&gt;4){ball=4;}if(ball&lt;-4){ball=-4;}}
void bass_func(){if(bass_reg&lt;0){bass_reg=0;}if(bass_reg&gt;10){bass_reg=10;}}
void vol_func(){if(vol_reg&lt;4){vol_reg=4;}if(vol_reg&gt;79){vol_reg=79;}}
void to_Timer(){newPosition = myEnc.read()/4;newPosition_vol = myEnc_vol.read()/4;}
void cl(){myOLED.clrScr();ir.value=0;delay(300);}

void audio_L(){
  lc.addr();
  lc.set_input(in_reg);   // input 1...4 = byte 0...3 (byte 4...7 = All switches off)
  lc.set_gain(gain0);    // gain 0...30 dB step 2 dB = byte 0...15
  lc.set_volume(vol_reg-ball);  // volume 0...-79 dB = byte 0...79
  lc.set_treble(treb_reg);  // treble -10...10 dB step 2 dB = int -5...5
  lc.set_bass(bass_reg);    // bass 0...20 dB step 2 dB = int 0...10
  lc.set_ch(1);      // Channel Selection RCH = byte 2, LCH = byte 1, Left and right together = byte 3
  lc.test();
  }

void audio_R(){
  lc.addr();
  lc.set_input(in_reg);   // input 1...4 = byte 0...3 (byte 4...7 = All switches off)
  lc.set_gain(gain0);    // gain 0...30 dB step 2 dB = byte 0...15
  lc.set_volume(vol_reg+ball);  // volume 0...-79 dB = byte 0...79
  lc.set_treble(treb_reg);  // treble -10...10 dB step 2 dB = int -5...5
  lc.set_bass(bass_reg);    // bass 0...20 dB step 2 dB = int 0...10
  lc.set_ch(2);      // Channel Selection RCH = byte 2, LCH = byte 1, Left and right together = byte 3
  lc.test();
  }</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2023-11-11T16:24:56Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8865#p8865</id>
		</entry>
</feed>
