<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[forum.rcl-radio.ru &mdash; TDA7448 — шести канальный регулятор громкости (Arduino)]]></title>
		<link>http://forum.rcl-radio.ru/viewtopic.php?id=273</link>
		<atom:link href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=273&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «TDA7448 — шести канальный регулятор громкости (Arduino)».]]></description>
		<lastBuildDate>Sat, 30 Sep 2023 01:06:37 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: TDA7448 — шести канальный регулятор громкости (Arduino)]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=8706#p8706</link>
			<description><![CDATA[<p>Привет брат сделаете скетч для lcd 2004 i2c за ранее спасибо и управление питанием</p>]]></description>
			<author><![CDATA[null@example.com (shuhrat.ps)]]></author>
			<pubDate>Sat, 30 Sep 2023 01:06:37 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=8706#p8706</guid>
		</item>
		<item>
			<title><![CDATA[Re: TDA7448 — шести канальный регулятор громкости (Arduino)]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=3061#p3061</link>
			<description><![CDATA[<p>Добавлен ИК пульт</p><div class="codebox"><pre><code>#define IR_1 0x2FDD02F // Кнопка вверх
#define IR_2 0x2FD32CD // Кнопка вниз
#define IR_3 0x2FD906F // Кнопка &gt;
#define IR_4 0x2FDF20D // Кнопка &lt;

#include &lt;Wire.h&gt;
#include &lt;MsTimer2.h&gt;
#include &lt;LiquidCrystal.h&gt;
#include &lt;boarddefs.h&gt;
#include &lt;IRremote.h&gt;           // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip
#include &lt;Encoder.h&gt;
#include &lt;EEPROM.h&gt;
#include &lt;TDA7448.h&gt;
  TDA7448 tda;
  IRrecv irrecv(12); // указываем вывод модуля IR приемника
  Encoder myEnc(9, 8);//CLK, DT подключение энкодера
  decode_results ir; 
  LiquidCrystal lcd(7, 6, 2, 3, 4, 5);// RS,E,D4,D5,D6,D7 подключение LCD
   byte a1[8]={0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
   byte a2[8]={0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
   byte a3[8]={0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000};
   unsigned long newPosition,time,oldPosition  = -999;
   int vol1,vol2,vol3,vol4,vol5,vol6,vol1_d,vol2_d,vol3_d,vol4_d,vol5_d,vol6_d,vol,vol_d;
   int w,w2,menu,z,z0,z1,gr1,gr2;
 
 void setup(){Serial.begin(9600);
 irrecv.enableIRIn();
 Wire.begin();
 lcd.begin(16, 2);
 lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
   vol1 = -EEPROM.read(0);
   vol2 = -EEPROM.read(1);
   vol3 = -EEPROM.read(2);
   vol4 = -EEPROM.read(3);
   vol5 = -EEPROM.read(4);
   vol6 = -EEPROM.read(5);
   vol = -EEPROM.read(6);
   pinMode(10,INPUT);// КНОПКА ЭНКОДЕРA
   MsTimer2::set(3, to_Timer);MsTimer2::start();
   lcd.setCursor(0,0);lcd.print(&quot;    TDA7448    &quot;);delay(1000);lcd.clear();audio_tda();
 }
 
 void loop(){
    ////////////////////// IR /////////////////////////////////////////////////
  if ( irrecv.decode( &amp;ir )) {Serial.print(&quot;0x&quot;);Serial.println( ir.value,HEX);irrecv.resume();time=millis();w=1;w2=1;}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
  if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта

   if(ir.value==IR_2){menu++;gr1=0;gr2=0;cl1();time=millis();w=1;w2=1;;if(menu&gt;6){menu=0;}}//  кнопка вверх 
   if(ir.value==IR_1){menu--;gr1=0;gr2=0;cl1();time=millis();w=1;w2=1;if(menu&lt;0){menu=6;}}//  кнопка вниз
  
  
   if(digitalRead(10)==LOW){menu++;cl();myEnc.write(0);time=millis();w=1;w2=1;if(menu&gt;6){menu=0;}}// меню

    if(menu==0){
     if(ir.value==IR_3){vol++;gr1=1;gr2=0;cl1();time=millis();w=1;w2=1;if(vol&gt;0){vol=0;}if(vol&lt;-59){vol=-59;}audio_tda();}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl1();time=millis();w=1;w2=1;if(vol&gt;0){vol=0;}if(vol&lt;-59){vol=-59;}audio_tda();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){vol--;gr1=0;gr2=1;cl1();time=millis();w=1;w2=1;if(vol&gt;0){vol=0;}if(vol&lt;-59){vol=-59;}audio_tda();}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl1();time=millis();w=1;w2=1;if(vol&gt;0){vol=0;}if(vol&lt;-59){vol=-59;}audio_tda();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt; 
      
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol&gt;0){vol=0;}if(vol&lt;-59){vol=-59;}audio_tda();}
  lcd.setCursor(0,0);lcd.print(&quot;VOLUME &quot;);
  lcd.print(&quot; &quot;);lcd.print(vol);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);vol_d=map(vol,-59,0,0,48);
    if(w2==1){
   for(z=0,z0=0,z1=0;z&lt;=vol_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print(&quot; &quot;);}}
   if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}w2=0;}}

   /////////////////////////////////////////////////
 
    if(menu==1){
     if(ir.value==IR_3){vol1++;gr1=1;gr2=0;cl1();time=millis();w=1;w2=1;if(vol1&gt;0){vol1=0;}if(vol1&lt;-20){vol1=-20;}audio_tda();}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){vol1++;gr2=0;cl1();time=millis();w=1;w2=1;if(vol1&gt;0){vol1=0;}if(vol1&lt;-20){vol1=-20;}audio_tda();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){vol1--;gr1=0;gr2=1;cl1();time=millis();w=1;w2=1;if(vol1&gt;0){vol1=0;}if(vol1&lt;-20){vol1=-20;}audio_tda();}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){vol1--;gr1=0;cl1();time=millis();w=1;w2=1;if(vol1&gt;0){vol1=0;}if(vol1&lt;-20){vol1=-20;}audio_tda();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt; 
      
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol1=vol1+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol1&gt;0){vol1=0;}if(vol1&lt;-20){vol1=-20;}audio_tda();}
  lcd.setCursor(0,0);lcd.print(&quot;FRONT R &quot;);
  lcd.print(&quot; &quot;);lcd.print(vol1);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);vol1_d=map(vol1,-20,0,0,20);
    if(w2==1){
   for(z=0,z0=0,z1=0;z&lt;=vol1_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+4,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+4,1);lcd.print(&quot; &quot;);}}
   if(z1==3){lcd.setCursor(z0+4,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+4,1);lcd.write((uint8_t)2);}w2=0;}}
 
   if(menu==2){
     if(ir.value==IR_3){vol2++;gr1=1;gr2=0;cl1();time=millis();w=1;w2=1;if(vol2&gt;0){vol2=0;}if(vol2&lt;-20){vol2=-20;}audio_tda();}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){vol2++;gr2=0;cl1();time=millis();w=1;w2=1;if(vol2&gt;0){vol2=0;}if(vol2&lt;-20){vol2=-20;}audio_tda();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){vol2--;gr1=0;gr2=1;cl1();time=millis();w=1;w2=1;if(vol1&gt;0){vol2=0;}if(vol2&lt;-20){vol2=-20;}audio_tda();}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){vol2--;gr1=0;cl1();time=millis();w=1;w2=1;if(vol2&gt;0){vol2=0;}if(vol2&lt;-20){vol2=-20;}audio_tda();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt; 

    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol2=vol2+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol2&gt;0){vol2=0;}if(vol2&lt;-20){vol2=-20;}audio_tda();}
  lcd.setCursor(0,0);lcd.print(&quot;FRONT L &quot;);
  lcd.print(&quot; &quot;);lcd.print(vol2);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);vol2_d=map(vol2,-20,0,0,20);
    if(w2==1){
   for(z=0,z0=0,z1=0;z&lt;=vol2_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+4,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+4,1);lcd.print(&quot; &quot;);}}
   if(z1==3){lcd.setCursor(z0+4,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+4,1);lcd.write((uint8_t)2);}w2=0;}}
 
   if(menu==3){
     if(ir.value==IR_3){vol3++;gr1=1;gr2=0;cl1();time=millis();w=1;w2=1;if(vol3&gt;0){vol3=0;}if(vol3&lt;-20){vol3=-20;}audio_tda();}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){vol3++;gr2=0;cl1();time=millis();w=1;w2=1;if(vol3&gt;0){vol3=0;}if(vol3&lt;-20){vol3=-20;}audio_tda();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){vol3--;gr1=0;gr2=1;cl1();time=millis();w=1;w2=1;if(vol3&gt;0){vol3=0;}if(vol3&lt;-20){vol3=-20;}audio_tda();}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){vol3--;gr1=0;cl1();time=millis();w=1;w2=1;if(vol3&gt;0){vol3=0;}if(vol3&lt;-20){vol3=-20;}audio_tda();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt; 
    
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol3=vol3+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol3&gt;0){vol3=0;}if(vol3&lt;-20){vol3=-20;}audio_tda();}
  lcd.setCursor(0,0);lcd.print(&quot;REAR R  &quot;);
  lcd.print(&quot; &quot;);lcd.print(vol3);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);vol3_d=map(vol3,-20,0,0,20);
    if(w2==1){
   for(z=0,z0=0,z1=0;z&lt;=vol3_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+4,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+4,1);lcd.print(&quot; &quot;);}}
   if(z1==3){lcd.setCursor(z0+4,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+4,1);lcd.write((uint8_t)2);}w2=0;}}
 
   if(menu==4){
     if(ir.value==IR_3){vol4++;gr1=1;gr2=0;cl1();time=millis();w=1;w2=1;if(vol4&gt;0){vol4=0;}if(vol4&lt;-20){vol4=-20;}audio_tda();}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){vol4++;gr2=0;cl1();time=millis();w=1;w2=1;if(vol4&gt;0){vol4=0;}if(vol4&lt;-20){vol4=-20;}audio_tda();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){vol4--;gr1=0;gr2=1;cl1();time=millis();w=1;w2=1;if(vol4&gt;0){vol4=0;}if(vol4&lt;-20){vol4=-20;}audio_tda();}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){vol4--;gr1=0;cl1();time=millis();w=1;w2=1;if(vol4&gt;0){vol4=0;}if(vol4&lt;-20){vol4=-20;}audio_tda();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt; 
    
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol4=vol4+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol4&gt;0){vol4=0;}if(vol4&lt;-20){vol4=-20;}audio_tda();}
  lcd.setCursor(0,0);lcd.print(&quot;REAR L  &quot;);
  lcd.print(&quot; &quot;);lcd.print(vol4);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);vol4_d=map(vol4,-20,0,0,20);
    if(w2==1){
   for(z=0,z0=0,z1=0;z&lt;=vol4_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+4,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+4,1);lcd.print(&quot; &quot;);}}
   if(z1==3){lcd.setCursor(z0+4,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+4,1);lcd.write((uint8_t)2);}w2=0;}}
 
   if(menu==5){
     if(ir.value==IR_3){vol5++;gr1=1;gr2=0;cl1();time=millis();w=1;w2=1;if(vol5&gt;0){vol5=0;}if(vol5&lt;-20){vol5=-20;}audio_tda();}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){vol5++;gr2=0;cl1();time=millis();w=1;w2=1;if(vol5&gt;0){vol5=0;}if(vol5&lt;-20){vol5=-20;}audio_tda();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){vol5--;gr1=0;gr2=1;cl1();time=millis();w=1;w2=1;if(vol5&gt;0){vol5=0;}if(vol5&lt;-20){vol5=-20;}audio_tda();}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){vol5--;gr1=0;cl1();time=millis();w=1;w2=1;if(vol5&gt;0){vol5=0;}if(vol5&lt;-20){vol5=-20;}audio_tda();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt; 
    
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol5=vol5+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol5&gt;0){vol5=0;}if(vol5&lt;-20){vol5=-20;}audio_tda();}
  lcd.setCursor(0,0);lcd.print(&quot;CENTER  &quot;);
  lcd.print(&quot; &quot;);lcd.print(vol5);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);vol5_d=map(vol5,-20,0,0,20);
    if(w2==1){
   for(z=0,z0=0,z1=0;z&lt;=vol5_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+4,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+4,1);lcd.print(&quot; &quot;);}}
   if(z1==3){lcd.setCursor(z0+4,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+4,1);lcd.write((uint8_t)2);}w2=0;}}
 
   if(menu==6){
     if(ir.value==IR_3){vol6++;gr1=1;gr2=0;cl1();time=millis();w=1;w2=1;if(vol6&gt;0){vol6=0;}if(vol6&lt;-20){vol6=-20;}audio_tda();}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){vol6++;gr2=0;cl1();time=millis();w=1;w2=1;if(vol6&gt;0){vol6=0;}if(vol6&lt;-20){vol6=-20;}audio_tda();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==IR_4){vol6--;gr1=0;gr2=1;cl1();time=millis();w=1;w2=1;if(vol6&gt;0){vol6=0;}if(vol6&lt;-20){vol6=-20;}audio_tda();}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){vol6--;gr1=0;cl1();time=millis();w=1;w2=1;if(vol6&gt;0){vol6=0;}if(vol6&lt;-20){vol6=-20;}audio_tda();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt; 
    
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol6=vol6+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol6&gt;0){vol6=0;}if(vol6&lt;-20){vol6=-20;}audio_tda();}
  lcd.setCursor(0,0);lcd.print(&quot;SUBW    &quot;);
  lcd.print(&quot; &quot;);lcd.print(vol6);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);vol6_d=map(vol6,-20,0,0,20);
    if(w2==1){
   for(z=0,z0=0,z1=0;z&lt;=vol6_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+4,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+4,1);lcd.print(&quot; &quot;);}}
   if(z1==3){lcd.setCursor(z0+4,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+4,1);lcd.write((uint8_t)2);}w2=0;}}
 
 
   if(millis()-time&gt;10000 &amp;&amp; w==1){
     EEPROM.update(0,abs(vol1));
     EEPROM.update(1,abs(vol2));
     EEPROM.update(2,abs(vol3));
     EEPROM.update(3,abs(vol4));
     EEPROM.update(4,abs(vol5));
     EEPROM.update(5,abs(vol6));
     EEPROM.update(6,abs(vol));
     if(menu!=0){lcd.clear();}menu=0;w2=1;
     w=0;}
  }
 void audio_tda(){
  tda.setAtt(1,vol+vol1); // 0 макс громк, -79(79) мин громк
  tda.setAtt(2,vol+vol2);
  tda.setAtt(3,vol+vol3);
  tda.setAtt(4,vol+vol4);
  tda.setAtt(5,vol+vol5);
  tda.setAtt(6,vol+vol6);
  Serial.println(vol+vol1);
  }
 void cl1(){ir.value=0;delay(200);}   
 void cl(){delay(300);lcd.clear();}
 void to_Timer(){newPosition = myEnc.read()/4;}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Wed, 10 Feb 2021 12:14:05 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=3061#p3061</guid>
		</item>
		<item>
			<title><![CDATA[Re: TDA7448 — шести канальный регулятор громкости (Arduino)]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=3057#p3057</link>
			<description><![CDATA[<p>Добавьте пожалуйста управление пультом. А кодами пульта&nbsp; я справлюсь)</p>]]></description>
			<author><![CDATA[null@example.com (Edison JJ)]]></author>
			<pubDate>Mon, 08 Feb 2021 19:15:28 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=3057#p3057</guid>
		</item>
		<item>
			<title><![CDATA[TDA7448 — шести канальный регулятор громкости (Arduino)]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=3051#p3051</link>
			<description><![CDATA[<p>Основная статья - <a href="http://rcl-radio.ru/?p=65647">http://rcl-radio.ru/?p=65647</a></p><p>Доработка - общий регулятор громкости + 6-и канальный аттенюатор от -20 до 0 дБ.</p><p>Версия с LCD1602_I2C</p><div class="codebox"><pre><code>#include &lt;Wire.h&gt;
#include &lt;MsTimer2.h&gt;
//#include &lt;LiquidCrystal.h&gt;

#include &lt;LiquidCrystal_I2C.h&gt;           // http://forum.rcl-radio.ru/misc.php?action=pan_download&amp;item=45&amp;download=1 
 LiquidCrystal_I2C lcd(0x27,16,2); 
 
#include &lt;Encoder.h&gt;
#include &lt;EEPROM.h&gt;
#include &lt;TDA7448.h&gt;
 TDA7448 tda;
  Encoder myEnc(9, 8);//CLK, DT подключение энкодера
  //LiquidCrystal lcd(7, 6, 2, 3, 4, 5);// RS,E,D4,D5,D6,D7 подключение LCD
   byte a1[8]={0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
   byte a2[8]={0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
   byte a3[8]={0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000};
   unsigned long newPosition,time,oldPosition  = -999;
   int vol1,vol2,vol3,vol4,vol5,vol6,vol1_d,vol2_d,vol3_d,vol4_d,vol5_d,vol6_d,vol,vol_d;
   int w,w2,menu,z,z0,z1;
 
 void setup(){Serial.begin(9600);
 Wire.begin(); lcd.init();lcd.backlight();
 lcd.begin(16, 2);
 lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
   vol1 = -EEPROM.read(0);
   vol2 = -EEPROM.read(1);
   vol3 = -EEPROM.read(2);
   vol4 = -EEPROM.read(3);
   vol5 = -EEPROM.read(4);
   vol6 = -EEPROM.read(5);
   vol = -EEPROM.read(6);
   pinMode(7,INPUT);// КНОПКА ЭНКОДЕРA
   MsTimer2::set(3, to_Timer);MsTimer2::start();
   lcd.setCursor(0,0);lcd.print(&quot;    TDA7448    &quot;);delay(1000);lcd.clear();audio_tda();
 }
 
 void loop(){
   if(digitalRead(7)==LOW){menu++;cl();myEnc.write(0);time=millis();w=1;w2=1;if(menu&gt;6){menu=0;}}// меню

    if(menu==0){
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol&gt;0){vol=0;}if(vol&lt;-59){vol=-59;}audio_tda();}
  lcd.setCursor(0,0);lcd.print(&quot;VOLUME &quot;);
  lcd.print(&quot; &quot;);lcd.print(vol);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);vol_d=map(vol,-59,0,0,48);
    if(w2==1){
   for(z=0,z0=0,z1=0;z&lt;=vol_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print(&quot; &quot;);}}
   if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}w2=0;}}

   /////////////////////////////////////////////////
 
    if(menu==1){
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol1=vol1+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol1&gt;0){vol1=0;}if(vol1&lt;-20){vol1=-20;}audio_tda();}
  lcd.setCursor(0,0);lcd.print(&quot;FRONT R &quot;);
  lcd.print(&quot; &quot;);lcd.print(vol1);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);vol1_d=map(vol1,-20,0,0,20);
    if(w2==1){
   for(z=0,z0=0,z1=0;z&lt;=vol1_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+4,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+4,1);lcd.print(&quot; &quot;);}}
   if(z1==3){lcd.setCursor(z0+4,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+4,1);lcd.write((uint8_t)2);}w2=0;}}
 
   if(menu==2){
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol2=vol2+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol2&gt;0){vol2=0;}if(vol2&lt;-20){vol2=-20;}audio_tda();}
  lcd.setCursor(0,0);lcd.print(&quot;FRONT L &quot;);
  lcd.print(&quot; &quot;);lcd.print(vol2);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);vol2_d=map(vol2,-20,0,0,20);
    if(w2==1){
   for(z=0,z0=0,z1=0;z&lt;=vol2_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+4,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+4,1);lcd.print(&quot; &quot;);}}
   if(z1==3){lcd.setCursor(z0+4,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+4,1);lcd.write((uint8_t)2);}w2=0;}}
 
   if(menu==3){
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol3=vol3+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol3&gt;0){vol3=0;}if(vol3&lt;-20){vol3=-20;}audio_tda();}
  lcd.setCursor(0,0);lcd.print(&quot;REAR R  &quot;);
  lcd.print(&quot; &quot;);lcd.print(vol3);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);vol3_d=map(vol3,-20,0,0,20);
    if(w2==1){
   for(z=0,z0=0,z1=0;z&lt;=vol3_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+4,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+4,1);lcd.print(&quot; &quot;);}}
   if(z1==3){lcd.setCursor(z0+4,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+4,1);lcd.write((uint8_t)2);}w2=0;}}
 
   if(menu==4){
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol4=vol4+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol4&gt;0){vol4=0;}if(vol4&lt;-20){vol4=-20;}audio_tda();}
  lcd.setCursor(0,0);lcd.print(&quot;REAR L  &quot;);
  lcd.print(&quot; &quot;);lcd.print(vol4);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);vol4_d=map(vol4,-20,0,0,20);
    if(w2==1){
   for(z=0,z0=0,z1=0;z&lt;=vol4_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+4,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+4,1);lcd.print(&quot; &quot;);}}
   if(z1==3){lcd.setCursor(z0+4,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+4,1);lcd.write((uint8_t)2);}w2=0;}}
 
   if(menu==5){
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol5=vol5+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol5&gt;0){vol5=0;}if(vol5&lt;-20){vol5=-20;}audio_tda();}
  lcd.setCursor(0,0);lcd.print(&quot;CENTER  &quot;);
  lcd.print(&quot; &quot;);lcd.print(vol5);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);vol5_d=map(vol5,-20,0,0,20);
    if(w2==1){
   for(z=0,z0=0,z1=0;z&lt;=vol5_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+4,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+4,1);lcd.print(&quot; &quot;);}}
   if(z1==3){lcd.setCursor(z0+4,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+4,1);lcd.write((uint8_t)2);}w2=0;}}
 
   if(menu==6){
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol6=vol6+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol6&gt;0){vol6=0;}if(vol6&lt;-20){vol6=-20;}audio_tda();}
  lcd.setCursor(0,0);lcd.print(&quot;SUBW    &quot;);
  lcd.print(&quot; &quot;);lcd.print(vol6);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);vol6_d=map(vol6,-20,0,0,20);
    if(w2==1){
   for(z=0,z0=0,z1=0;z&lt;=vol6_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+4,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+4,1);lcd.print(&quot; &quot;);}}
   if(z1==3){lcd.setCursor(z0+4,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+4,1);lcd.write((uint8_t)2);}w2=0;}}
 
 
   if(millis()-time&gt;10000 &amp;&amp; w==1){
     EEPROM.update(0,abs(vol1));
     EEPROM.update(1,abs(vol2));
     EEPROM.update(2,abs(vol3));
     EEPROM.update(3,abs(vol4));
     EEPROM.update(4,abs(vol5));
     EEPROM.update(5,abs(vol6));
     EEPROM.update(6,abs(vol));
     if(menu!=0){lcd.clear();}menu=0;w2=1;
     w=0;}
  }
 void audio_tda(){
  tda.setAtt(1,vol+vol1); // 0 макс громк, -79(79) мин громк
  tda.setAtt(2,vol+vol2);
  tda.setAtt(3,vol+vol3);
  tda.setAtt(4,vol+vol4);
  tda.setAtt(5,vol+vol5);
  tda.setAtt(6,vol+vol6);
  Serial.println(vol+vol1);
  }
 void cl(){delay(300);lcd.clear();}
 void to_Timer(){newPosition = myEnc.read()/4;}</code></pre></div><p>Версия с параллельным подключением LCD1602</p><div class="codebox"><pre><code>#include &lt;Wire.h&gt;
#include &lt;MsTimer2.h&gt;
#include &lt;LiquidCrystal.h&gt;
#include &lt;Encoder.h&gt;
#include &lt;EEPROM.h&gt;
#include &lt;TDA7448.h&gt;
 TDA7448 tda;
  Encoder myEnc(9, 8);//CLK, DT подключение энкодера
  LiquidCrystal lcd(7, 6, 2, 3, 4, 5);// RS,E,D4,D5,D6,D7 подключение LCD
   byte a1[8]={0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
   byte a2[8]={0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
   byte a3[8]={0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000};
   unsigned long newPosition,time,oldPosition  = -999;
   int vol1,vol2,vol3,vol4,vol5,vol6,vol1_d,vol2_d,vol3_d,vol4_d,vol5_d,vol6_d,vol,vol_d;
   int w,w2,menu,z,z0,z1;
 
 void setup(){Serial.begin(9600);
 Wire.begin();
 lcd.begin(16, 2);
 lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
   vol1 = -EEPROM.read(0);
   vol2 = -EEPROM.read(1);
   vol3 = -EEPROM.read(2);
   vol4 = -EEPROM.read(3);
   vol5 = -EEPROM.read(4);
   vol6 = -EEPROM.read(5);
   vol = -EEPROM.read(6);
   pinMode(10,INPUT);// КНОПКА ЭНКОДЕРA
   MsTimer2::set(3, to_Timer);MsTimer2::start();
   lcd.setCursor(0,0);lcd.print(&quot;    TDA7448    &quot;);delay(1000);lcd.clear();audio_tda();
 }
 
 void loop(){
   if(digitalRead(10)==LOW){menu++;cl();myEnc.write(0);time=millis();w=1;w2=1;if(menu&gt;6){menu=0;}}// меню

    if(menu==0){
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol&gt;0){vol=0;}if(vol&lt;-59){vol=-59;}audio_tda();}
  lcd.setCursor(0,0);lcd.print(&quot;VOLUME &quot;);
  lcd.print(&quot; &quot;);lcd.print(vol);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);vol_d=map(vol,-59,0,0,48);
    if(w2==1){
   for(z=0,z0=0,z1=0;z&lt;=vol_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print(&quot; &quot;);}}
   if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}w2=0;}}

   /////////////////////////////////////////////////
 
    if(menu==1){
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol1=vol1+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol1&gt;0){vol1=0;}if(vol1&lt;-20){vol1=-20;}audio_tda();}
  lcd.setCursor(0,0);lcd.print(&quot;FRONT R &quot;);
  lcd.print(&quot; &quot;);lcd.print(vol1);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);vol1_d=map(vol1,-20,0,0,20);
    if(w2==1){
   for(z=0,z0=0,z1=0;z&lt;=vol1_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+4,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+4,1);lcd.print(&quot; &quot;);}}
   if(z1==3){lcd.setCursor(z0+4,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+4,1);lcd.write((uint8_t)2);}w2=0;}}
 
   if(menu==2){
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol2=vol2+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol2&gt;0){vol2=0;}if(vol2&lt;-20){vol2=-20;}audio_tda();}
  lcd.setCursor(0,0);lcd.print(&quot;FRONT L &quot;);
  lcd.print(&quot; &quot;);lcd.print(vol2);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);vol2_d=map(vol2,-20,0,0,20);
    if(w2==1){
   for(z=0,z0=0,z1=0;z&lt;=vol2_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+4,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+4,1);lcd.print(&quot; &quot;);}}
   if(z1==3){lcd.setCursor(z0+4,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+4,1);lcd.write((uint8_t)2);}w2=0;}}
 
   if(menu==3){
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol3=vol3+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol3&gt;0){vol3=0;}if(vol3&lt;-20){vol3=-20;}audio_tda();}
  lcd.setCursor(0,0);lcd.print(&quot;REAR R  &quot;);
  lcd.print(&quot; &quot;);lcd.print(vol3);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);vol3_d=map(vol3,-20,0,0,20);
    if(w2==1){
   for(z=0,z0=0,z1=0;z&lt;=vol3_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+4,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+4,1);lcd.print(&quot; &quot;);}}
   if(z1==3){lcd.setCursor(z0+4,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+4,1);lcd.write((uint8_t)2);}w2=0;}}
 
   if(menu==4){
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol4=vol4+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol4&gt;0){vol4=0;}if(vol4&lt;-20){vol4=-20;}audio_tda();}
  lcd.setCursor(0,0);lcd.print(&quot;REAR L  &quot;);
  lcd.print(&quot; &quot;);lcd.print(vol4);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);vol4_d=map(vol4,-20,0,0,20);
    if(w2==1){
   for(z=0,z0=0,z1=0;z&lt;=vol4_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+4,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+4,1);lcd.print(&quot; &quot;);}}
   if(z1==3){lcd.setCursor(z0+4,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+4,1);lcd.write((uint8_t)2);}w2=0;}}
 
   if(menu==5){
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol5=vol5+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol5&gt;0){vol5=0;}if(vol5&lt;-20){vol5=-20;}audio_tda();}
  lcd.setCursor(0,0);lcd.print(&quot;CENTER  &quot;);
  lcd.print(&quot; &quot;);lcd.print(vol5);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);vol5_d=map(vol5,-20,0,0,20);
    if(w2==1){
   for(z=0,z0=0,z1=0;z&lt;=vol5_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+4,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+4,1);lcd.print(&quot; &quot;);}}
   if(z1==3){lcd.setCursor(z0+4,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+4,1);lcd.write((uint8_t)2);}w2=0;}}
 
   if(menu==6){
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol6=vol6+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol6&gt;0){vol6=0;}if(vol6&lt;-20){vol6=-20;}audio_tda();}
  lcd.setCursor(0,0);lcd.print(&quot;SUBW    &quot;);
  lcd.print(&quot; &quot;);lcd.print(vol6);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);vol6_d=map(vol6,-20,0,0,20);
    if(w2==1){
   for(z=0,z0=0,z1=0;z&lt;=vol6_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+4,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+4,1);lcd.print(&quot; &quot;);}}
   if(z1==3){lcd.setCursor(z0+4,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+4,1);lcd.write((uint8_t)2);}w2=0;}}
 
 
   if(millis()-time&gt;10000 &amp;&amp; w==1){
     EEPROM.update(0,abs(vol1));
     EEPROM.update(1,abs(vol2));
     EEPROM.update(2,abs(vol3));
     EEPROM.update(3,abs(vol4));
     EEPROM.update(4,abs(vol5));
     EEPROM.update(5,abs(vol6));
     EEPROM.update(6,abs(vol));
     if(menu!=0){lcd.clear();}menu=0;w2=1;
     w=0;}
  }
 void audio_tda(){
  tda.setAtt(1,vol+vol1); // 0 макс громк, -79(79) мин громк
  tda.setAtt(2,vol+vol2);
  tda.setAtt(3,vol+vol3);
  tda.setAtt(4,vol+vol4);
  tda.setAtt(5,vol+vol5);
  tda.setAtt(6,vol+vol6);
  Serial.println(vol+vol1);
  }
 void cl(){delay(300);lcd.clear();}
 void to_Timer(){newPosition = myEnc.read()/4;}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Sun, 07 Feb 2021 14:28:40 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=3051#p3051</guid>
		</item>
	</channel>
</rss>
