151 (2022-04-11 22:36:24 отредактировано Dapox11)

Re: PT2323+TDA7448

Все работает!
Маленький ньюанс появился, если выбрать вход блютус с пульта, то на дисплее на мгновение пропадает изображение, с энкодера такого не наблюдается

152

Re: PT2323+TDA7448

#define IR_8 0xFF21DE // Кнопка MENU (input sel)
#define IR_3 0xFF09F6 // Кнопка > (Vol+)
#define IR_4 0xFF29D6 // Кнопка < (Vol-)
#define MUTE 0xFF41BE // Кнопка MUTE
#define MODE 0xFF619E // Кнопка MODE
#define IR_5 0xFF8976 // Кнопка CH+
#define IR_6 0xFF6996 // Кнопка CH-
#define IR_7 0xFFA15E // Кнопка Reset
#define STBY 0xFF01FE // Кнопка Standby
#define TU_1 0xFF916E // Кнопка Tune-
#define TU_2 0xFF51AE // Кнопка Tune+
//#define BRIG_H 250
//#define BRIG_L 0

#include <Wire.h> 
#include <PT2323.h>
#include <TDA7448.h> 
#include <Encoder.h>
#include <EEPROM.h>
#include <MsTimer2.h>
#include <boarddefs.h>
#include <IRremote.h>
#include <LiquidCrystal.h>
  TDA7448 tda;
  PT2323 pt; 
 IRrecv irrecv(10); // указываем вывод модуля IR приемника
 decode_results ir;
 LiquidCrystal lcd(7, 6, 2, 3, 4, 5);// RS,E,D4,D5,D6,D7 подключение LCD
 Encoder myEnc(9, 8);//CLK, DT подключение энкодера
   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,times,oldPosition  = -999;
  int x,i,w,w1,menu,menu1=0,vol,vol_d,z,z0,z1,gr1,gr2,in,att1,att2,att3,att4,att5,att6;
  bool mute,power,flag;
  
void setup(){
   Serial.begin(9600);Wire.begin();irrecv.enableIRIn(); // запускаем модуль IR
   lcd.begin(8, 2);
   pinMode(A0,OUTPUT);   // питание блютус
   pinMode(13,INPUT);    // КНОПКА ЭНКОДЕРA
   pinMode(12,OUTPUT);   // выход управления MUTE
   pinMode(11,OUTPUT);   // output LED
   digitalWrite(11,HIGH);
   MsTimer2::set(3, to_Timer);MsTimer2::start();
   lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
   lcd.setCursor(0,0);lcd.print("TDA 7448");
   lcd.setCursor(0,1);lcd.print("PT  2323");
   delay(1000);cl();
   digitalWrite(12,HIGH); // mute, чтобы избежать хлопка при включении
   lcd.setCursor(0,0);lcd.print("SOFT-RWR");
   delay(1000);
   if(EEPROM.read(100)!=0){for(i=0;i<101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении 
   vol = EEPROM.read(0)-79;in = EEPROM.read(1);
   att1 = EEPROM.read(11);att2 = EEPROM.read(12);att3 = EEPROM.read(13);att4 = EEPROM.read(14);att5 = EEPROM.read(15);att6 = EEPROM.read(16);
   audio_tda();audio_pt();
   delay(1500);cl();
   digitalWrite(12,LOW); // выключение mute
}

void loop(){
  //if(in==1){digitalWrite(A0,HIGH);}else{digitalWrite(A0,LOW);} //вкл-выкл питания блютус
  if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);times=millis();w=1;w1=1;irrecv.resume();} // IR приемник
  if(ir.value==0){gr1=0;gr2=0;}
  if(mute==0&&power==0){
  if(digitalRead(13)==HIGH&&menu!=100){menu++;x++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu>1){menu=0;}} // меню input
  if(x>5){menu1=1;menu=100;lcd.setCursor(0,0);lcd.print("ATTENUAT");delay(1000);}
  if(digitalRead(13)==LOW){x=0;}
  if(digitalRead(13)==HIGH&&menu==100){menu1++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu1>6){menu1=1;}}
  
  //if(ir.value==IR_8){menu++;gr1=0;gr2=0;cl();times=millis();w=1;w1=1;if(menu>1){menu=0;}} // меню input

  if(ir.value==IR_7){menu=0;menu1=0;cl();times=millis();w=1;w1=1;} // кнопка reset
  
  if(menu==0||menu1==1){
  if(ir.value==IR_8){menu1=0;menu=1;gr1=0;gr2=0;cl();times=millis();w=1;w1=1;}} // меню input 
  if(menu==1){
  if(ir.value==IR_8){in++;flag=1;menu1=0;cl();times=millis();w=1;w1=1;in_func();audio_tda();audio_pt();}} // input - переключение входов с пульта

  if(ir.value==MODE){menu1=1;menu=100;cl();lcd.setCursor(0,0);lcd.print("ATTENUAT");delay(1000);}
  if(ir.value==IR_5&&menu==100){menu1++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu1>6){menu1=1;}}
  if(ir.value==IR_6&&menu==100){menu1--;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu1<1){menu1=6;}}  
  
  }
  if(ir.value==MUTE&&mute==0 && power==0){mute=1;gr1=0;gr2=0;cl1();menu=100;menu1=0;lcd.setCursor(0,0);lcd.print("  MUTE  ");digitalWrite(12,HIGH);}
  if(ir.value==MUTE&&mute==1 && power==0){mute=0;gr1=0;gr2=0;cl1();menu=0;digitalWrite(12,LOW);} 

//////////////////////// POWER //////////////////////////////////////////////////////////////////////////////////////

  if(ir.value==STBY&&power==0){power=1;gr1=0;gr2=0;cl();menu=100;menu1=0;lcd.setCursor(0,0);lcd.print("POWEROFF");digitalWrite(12,HIGH);digitalWrite(11,LOW);delay(2000);cl();}  
  if(ir.value==STBY&&power==1){power=0;gr1=0;gr2=0;cl();menu=0;cl();lcd.setCursor(0,0);lcd.print("POWER ON");digitalWrite(12,LOW);digitalWrite(11,HIGH);delay(2000);cl();} 

/////////////////////// VOLUME ///////////////////////////////////////////////////////////////////////////////////////
 if(menu==0){
     if(ir.value==IR_3){vol++;gr1=1;gr2=0;cl1();w1=1;vol_func();audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl1();w1=1;vol_func();audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_4){vol--;gr1=0;gr2=1;cl1();w1=1;vol_func();audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl1();w1=1;vol_func();audio_tda();audio_pt();}// кнопка <<<<<<
  
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   vol=vol+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;vol_func();audio_tda();audio_pt();}
  lcd.setCursor(0,0);lcd.print(" VOL");
  lcd.print("  ");lcd.print(79+vol);lcd.print(" ");lcd.setCursor(5,0);lcd.print(" ");vol_d=map(abs(vol), 79,0,  0,24);
    if(w1==1){
   for(z=0,z0=0,z1=0;z<=vol_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print(" ");}}
   if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}w1=0;}}

 /////////////////// INPUT //////////////////////////////////////////////////////////////////////////////////////// 
  if(in==1&&flag==1){flag=0;digitalWrite(12,HIGH);digitalWrite(A0,HIGH);print_in();delay(500);digitalWrite(12,LOW);}// включили блютуc
  if(in!=1){digitalWrite(A0,LOW);} // выключили блютус если вход не IN1
  
  if(menu==1){
     //if(ir.value==IR_3){in++;gr1=1;gr2=0;cl1();w1=1;in_func();audio_tda();audio_pt();}// кнопка > 
     //if(ir.value==0xFFFFFFFF and gr1==1){in++;gr2=0;cl1();w1=1;in_func();audio_tda();audio_pt();}// кнопка >>>>>>
     //if(ir.value==IR_4){in--;gr1=0;gr2=1;cl1();w1=1;in_func();audio_tda();audio_pt();}// кнопка <
     //if(ir.value==0xFFFFFFFF and gr2==1){in--;gr1=0;cl1();w1=1;in_func();audio_tda();audio_pt();}// кнопка <<<<<<
    
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   in=in+newPosition;myEnc.write(0);newPosition=0;times=millis();flag=1;w=1;w1=1;in_func();audio_tda();audio_pt();}

   print_in();
  }
///////////////////////////////////// Att //////////////////////////////////////////



 
 if(menu1==1){
     if(ir.value==IR_4){att1++;gr1=1;gr2=0;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){att1++;gr2=0;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_3){att1--;gr1=0;gr2=1;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){att1--;gr1=0;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка <<<<<<
     
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   att1=att1-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;}audio_tda();audio_pt();}
   lcd.setCursor(0,0);lcd.print("ATTENUAT");
   lcd.setCursor(0,1);lcd.print("FL ");lcd.setCursor(3,1);
   if(-att1>-1){lcd.print(" 0 ");}
   else{lcd.print(-att1);if(-att1>-10){lcd.print(" ");}}
   lcd.setCursor(6,1);lcd.print("dB");
 }

  if(menu1==2){
     if(ir.value==IR_4){att2++;gr1=1;gr2=0;cl1();w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;};audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){att2++;gr2=0;cl1();w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;};audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_3){att2--;gr1=0;gr2=1;cl1();w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;};audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){att2--;gr1=0;cl1();w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;};audio_tda();audio_pt();}// кнопка <<<<<<
        
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   att2=att2-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;}audio_tda();audio_pt();}
   lcd.setCursor(0,0);lcd.print("ATTENUAT");
   lcd.setCursor(0,1);lcd.print("FR ");lcd.setCursor(3,1);
   if(-att2>-1){lcd.print(" 0 ");}
   else{lcd.print(-att2);if(-att2>-10){lcd.print(" ");}}
   lcd.setCursor(6,1);lcd.print("dB");
 }

  if(menu1==3){
     if(ir.value==IR_4){att3++;gr1=1;gr2=0;cl1();w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;};audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){att3++;gr2=0;cl1();w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;};audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_3){att3--;gr1=0;gr2=1;cl1();w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;};audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){att3--;gr1=0;cl1();w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;};audio_tda();audio_pt();}// кнопка <<<<<<
   
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   att3=att3-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;}audio_tda();audio_pt();}
   lcd.setCursor(0,0);lcd.print("ATTENUAT");
   lcd.setCursor(0,1);lcd.print("CT ");lcd.setCursor(3,1);
   if(-att3>-1){lcd.print(" 0 ");}
   else{lcd.print(-att3);if(-att3>-10){lcd.print(" ");}}
   lcd.setCursor(6,1);lcd.print("dB");
 }

  if(menu1==4){
     if(ir.value==IR_4){att4++;gr1=1;gr2=0;cl1();w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;};audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){att4++;gr2=0;cl1();w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;};audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_3){att4--;gr1=0;gr2=1;cl1();w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;};audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){att4--;gr1=0;cl1();w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;};audio_tda();audio_pt();}// кнопка <<<<<<   
   
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   att4=att4-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;}audio_tda();audio_pt();}
   lcd.setCursor(0,0);lcd.print("ATTENUAT");
   lcd.setCursor(0,1);lcd.print("SW ");lcd.setCursor(3,1);
   if(-att4>-1){lcd.print(" 0 ");}
   else{lcd.print(-att4);if(-att4>-10){lcd.print(" ");}}
   lcd.setCursor(6,1);lcd.print("dB");
 }

  if(menu1==5){
     if(ir.value==IR_4){att5++;gr1=1;gr2=0;cl1();w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;};audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){att5++;gr2=0;cl1();w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;};audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_3){att5--;gr1=0;gr2=1;cl1();w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;};audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){att5--;gr1=0;cl1();w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;};audio_tda();audio_pt();}// кнопка <<<<<<
   
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   att5=att5-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;}audio_tda();audio_pt();}
   lcd.setCursor(0,0);lcd.print("ATTENUAT");
   lcd.setCursor(0,1);lcd.print("SL ");lcd.setCursor(3,1);
   if(-att5>-1){lcd.print(" 0 ");}
   else{lcd.print(-att5);if(-att5>-10){lcd.print(" ");}}
   lcd.setCursor(6,1);lcd.print("dB");
 }

  if(menu1==6){
     if(ir.value==IR_4){att6++;gr1=1;gr2=0;cl1();w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;};audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){att6++;gr2=0;cl1();w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;};audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_3){att6--;gr1=0;gr2=1;cl1();w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;};audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){att6--;gr1=0;cl1();w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;};audio_tda();audio_pt();}// кнопка <<<<<<   
   
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   att6=att6-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;}audio_tda();audio_pt();}
   lcd.setCursor(0,0);lcd.print("ATTENUAT");
   lcd.setCursor(0,1);lcd.print("SR ");lcd.setCursor(3,1);
   if(-att6>-1){lcd.print(" 0 ");}
   else{lcd.print(-att6);if(-att6>-10){lcd.print(" ");}}
   lcd.setCursor(6,1);lcd.print("dB");
 }

 ///////////////// EEPROM ///////////////////////////////////////////////////////////////////////////////////////
 if(millis()-times>10000 && w==1){
     EEPROM.update(0,vol+79);
     EEPROM.update(1,in);
     EEPROM.update(11,att1);EEPROM.update(12,att2);EEPROM.update(13,att3);EEPROM.update(14,att4);EEPROM.update(15,att5);EEPROM.update(16,att6);
     menu=0;cl();w=0,w1=1;menu1=0;}
  
}//loop

void print_in(){
 lcd.setCursor(0,0);lcd.print(" INPUT  ");
 lcd.setCursor(0,1);
 switch(in){case 0: lcd.print("  AUX   "); break;
            case 1: lcd.print("   BT   "); break;
            case 2: lcd.print("  ---   "); break;
            case 3: lcd.print(" -----  "); break;
            case 4: lcd.print("  5.1   "); break;}} // пропишите свои названия входов
  

void in_func(){if(in<0){in=4;}if(in>4){in=0;}}
void vol_func(){if(vol>0){vol=0;}if(vol<-79){vol=-79;}}
void cl(){ir.value=0;delay(300);lcd.clear();}
void cl1(){ir.value=0;delay(100);}
void audio_pt(){
  pt.setInput(in); // входы 1...4 (0...3) или 6 моно (4)
  pt.setMute(0,0,0,0,0,0,0); 
  pt.setFeature(0,1); // дополнительные функции 0...3
                     // 0 - Enhanced Surround Function Active
                     // 1 - Enhanced Surround Function Disabled
                     // 0 - Mixed Channel (0dB) Setup
                     // 1 - Mixed Channel (+6dB) Setup 
}
void audio_tda(){
  tda.setAtt(1,vol-att1);// 0 макс громк, -79(79) мин громк
  tda.setAtt(2,vol-att2);
  tda.setAtt(3,vol-att3);
  tda.setAtt(4,vol-att4);
  tda.setAtt(5,vol-att5);
  tda.setAtt(6,vol-att6);
  }

void to_Timer(){newPosition = myEnc.read()/4;}

153

Re: PT2323+TDA7448

#define IR_8 0xFF21DE // Кнопка MENU (input sel)
#define IR_3 0xFF09F6 // Кнопка > (Vol+)
#define IR_4 0xFF29D6 // Кнопка < (Vol-)
#define MUTE 0xFF41BE // Кнопка MUTE
#define MODE 0xFF619E // Кнопка MODE
#define IR_5 0xFF8976 // Кнопка CH+
#define IR_6 0xFF6996 // Кнопка CH-
#define IR_7 0xFFA15E // Кнопка Reset
#define STBY 0xFF01FE // Кнопка Standby
#define TU_1 0xFF916E // Кнопка Tune-
#define TU_2 0xFF51AE // Кнопка Tune+
//#define BRIG_H 250
//#define BRIG_L 0

#include <Wire.h> 
#include <PT2323.h>
#include <TDA7448.h> 
#include <Encoder.h>
#include <EEPROM.h>
#include <MsTimer2.h>
#include <boarddefs.h>
#include <IRremote.h>
#include <LiquidCrystal.h>
  TDA7448 tda;
  PT2323 pt; 
 IRrecv irrecv(10); // указываем вывод модуля IR приемника
 decode_results ir;
 LiquidCrystal lcd(7, 6, 2, 3, 4, 5);// RS,E,D4,D5,D6,D7 подключение LCD
 Encoder myEnc(9, 8);//CLK, DT подключение энкодера
   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,times,oldPosition  = -999;
  int x,i,w,w1,menu,menu1=0,vol,vol_d,z,z0,z1,gr1,gr2,in,att1,att2,att3,att4,att5,att6;
  bool mute,power,flag;
  
void setup(){
   Serial.begin(9600);Wire.begin();irrecv.enableIRIn(); // запускаем модуль IR
   lcd.begin(8, 2);
   pinMode(A0,OUTPUT);   // питание блютус
   pinMode(13,INPUT);    // КНОПКА ЭНКОДЕРA
   pinMode(12,OUTPUT);   // выход управления MUTE
   pinMode(11,OUTPUT);   // output LED
   digitalWrite(11,HIGH);
   MsTimer2::set(3, to_Timer);MsTimer2::start();
   lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
   lcd.setCursor(0,0);lcd.print("TDA 7448");
   lcd.setCursor(0,1);lcd.print("PT  2323");
   delay(1000);cl();
   digitalWrite(12,HIGH); // mute, чтобы избежать хлопка при включении
   lcd.setCursor(0,0);lcd.print("SOFT-RWR");
   delay(1000);
   if(EEPROM.read(100)!=0){for(i=0;i<101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении 
   vol = EEPROM.read(0)-79;in = EEPROM.read(1);
   att1 = EEPROM.read(11);att2 = EEPROM.read(12);att3 = EEPROM.read(13);att4 = EEPROM.read(14);att5 = EEPROM.read(15);att6 = EEPROM.read(16);
   audio_tda();audio_pt();
   delay(1500);cl();
   digitalWrite(12,LOW); // выключение mute
}

void loop(){
  //if(in==1){digitalWrite(A0,HIGH);}else{digitalWrite(A0,LOW);} //вкл-выкл питания блютус
  if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);times=millis();w=1;w1=1;irrecv.resume();} // IR приемник
  if(ir.value==0){gr1=0;gr2=0;}
  if(mute==0&&power==0){
  if(digitalRead(13)==HIGH&&menu!=100){menu++;x++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu>1){menu=0;}} // меню input
  if(x>5){menu1=1;menu=100;lcd.setCursor(0,0);lcd.print("ATTENUAT");delay(1000);}
  if(digitalRead(13)==LOW){x=0;}
  if(digitalRead(13)==HIGH&&menu==100){menu1++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu1>6){menu1=1;}}
  
  //if(ir.value==IR_8){menu++;gr1=0;gr2=0;cl();times=millis();w=1;w1=1;if(menu>1){menu=0;}} // меню input

  if(ir.value==IR_7){menu=0;menu1=0;cl();times=millis();w=1;w1=1;} // кнопка reset
  
  if(menu==0||menu1==1){
  if(ir.value==IR_8){menu1=0;menu=1;gr1=0;gr2=0;ir.value=0;delay(100);lcd.clear();times=millis();w=1;w1=1;}} // меню input 
  if(menu==1){
  if(ir.value==IR_8){in++;flag=1;menu1=0;cl();times=millis();w=1;w1=1;in_func();audio_tda();audio_pt();}} // input - переключение входов с пульта

  if(ir.value==MODE){menu1=1;menu=100;cl();lcd.setCursor(0,0);lcd.print("ATTENUAT");delay(1000);}
  if(ir.value==IR_5&&menu==100){menu1++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu1>6){menu1=1;}}
  if(ir.value==IR_6&&menu==100){menu1--;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu1<1){menu1=6;}}  
  
  }
  if(ir.value==MUTE&&mute==0 && power==0){mute=1;gr1=0;gr2=0;cl1();menu=100;menu1=0;lcd.setCursor(0,0);lcd.print("  MUTE  ");digitalWrite(12,HIGH);}
  if(ir.value==MUTE&&mute==1 && power==0){mute=0;gr1=0;gr2=0;cl1();menu=0;digitalWrite(12,LOW);} 

//////////////////////// POWER //////////////////////////////////////////////////////////////////////////////////////

  if(ir.value==STBY&&power==0){power=1;gr1=0;gr2=0;cl();menu=100;menu1=0;lcd.setCursor(0,0);lcd.print("POWEROFF");digitalWrite(12,HIGH);digitalWrite(11,LOW);delay(2000);cl();}  
  if(ir.value==STBY&&power==1){power=0;gr1=0;gr2=0;cl();menu=0;cl();lcd.setCursor(0,0);lcd.print("POWER ON");digitalWrite(12,LOW);digitalWrite(11,HIGH);delay(2000);cl();} 

/////////////////////// VOLUME ///////////////////////////////////////////////////////////////////////////////////////
 if(menu==0){
     if(ir.value==IR_3){vol++;gr1=1;gr2=0;cl1();w1=1;vol_func();audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl1();w1=1;vol_func();audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_4){vol--;gr1=0;gr2=1;cl1();w1=1;vol_func();audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl1();w1=1;vol_func();audio_tda();audio_pt();}// кнопка <<<<<<
  
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   vol=vol+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;vol_func();audio_tda();audio_pt();}
  lcd.setCursor(0,0);lcd.print(" VOL");
  lcd.print("  ");lcd.print(79+vol);lcd.print(" ");lcd.setCursor(5,0);lcd.print(" ");vol_d=map(abs(vol), 79,0,  0,24);
    if(w1==1){
   for(z=0,z0=0,z1=0;z<=vol_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print(" ");}}
   if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}w1=0;}}

 /////////////////// INPUT //////////////////////////////////////////////////////////////////////////////////////// 
  if(in==1&&flag==1){flag=0;digitalWrite(12,HIGH);digitalWrite(A0,HIGH);print_in();delay(500);digitalWrite(12,LOW);}// включили блютуc
  if(in!=1){digitalWrite(A0,LOW);} // выключили блютус если вход не IN1
  
  if(menu==1){
     //if(ir.value==IR_3){in++;gr1=1;gr2=0;cl1();w1=1;in_func();audio_tda();audio_pt();}// кнопка > 
     //if(ir.value==0xFFFFFFFF and gr1==1){in++;gr2=0;cl1();w1=1;in_func();audio_tda();audio_pt();}// кнопка >>>>>>
     //if(ir.value==IR_4){in--;gr1=0;gr2=1;cl1();w1=1;in_func();audio_tda();audio_pt();}// кнопка <
     //if(ir.value==0xFFFFFFFF and gr2==1){in--;gr1=0;cl1();w1=1;in_func();audio_tda();audio_pt();}// кнопка <<<<<<
    
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   in=in+newPosition;myEnc.write(0);newPosition=0;times=millis();flag=1;w=1;w1=1;in_func();audio_tda();audio_pt();}

   print_in();
  }
///////////////////////////////////// Att //////////////////////////////////////////



 
 if(menu1==1){
     if(ir.value==IR_4){att1++;gr1=1;gr2=0;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){att1++;gr2=0;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_3){att1--;gr1=0;gr2=1;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){att1--;gr1=0;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка <<<<<<
     
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   att1=att1-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;}audio_tda();audio_pt();}
   lcd.setCursor(0,0);lcd.print("ATTENUAT");
   lcd.setCursor(0,1);lcd.print("FL ");lcd.setCursor(3,1);
   if(-att1>-1){lcd.print(" 0 ");}
   else{lcd.print(-att1);if(-att1>-10){lcd.print(" ");}}
   lcd.setCursor(6,1);lcd.print("dB");
 }

  if(menu1==2){
     if(ir.value==IR_4){att2++;gr1=1;gr2=0;cl1();w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;};audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){att2++;gr2=0;cl1();w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;};audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_3){att2--;gr1=0;gr2=1;cl1();w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;};audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){att2--;gr1=0;cl1();w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;};audio_tda();audio_pt();}// кнопка <<<<<<
        
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   att2=att2-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;}audio_tda();audio_pt();}
   lcd.setCursor(0,0);lcd.print("ATTENUAT");
   lcd.setCursor(0,1);lcd.print("FR ");lcd.setCursor(3,1);
   if(-att2>-1){lcd.print(" 0 ");}
   else{lcd.print(-att2);if(-att2>-10){lcd.print(" ");}}
   lcd.setCursor(6,1);lcd.print("dB");
 }

  if(menu1==3){
     if(ir.value==IR_4){att3++;gr1=1;gr2=0;cl1();w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;};audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){att3++;gr2=0;cl1();w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;};audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_3){att3--;gr1=0;gr2=1;cl1();w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;};audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){att3--;gr1=0;cl1();w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;};audio_tda();audio_pt();}// кнопка <<<<<<
   
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   att3=att3-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;}audio_tda();audio_pt();}
   lcd.setCursor(0,0);lcd.print("ATTENUAT");
   lcd.setCursor(0,1);lcd.print("CT ");lcd.setCursor(3,1);
   if(-att3>-1){lcd.print(" 0 ");}
   else{lcd.print(-att3);if(-att3>-10){lcd.print(" ");}}
   lcd.setCursor(6,1);lcd.print("dB");
 }

  if(menu1==4){
     if(ir.value==IR_4){att4++;gr1=1;gr2=0;cl1();w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;};audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){att4++;gr2=0;cl1();w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;};audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_3){att4--;gr1=0;gr2=1;cl1();w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;};audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){att4--;gr1=0;cl1();w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;};audio_tda();audio_pt();}// кнопка <<<<<<   
   
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   att4=att4-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;}audio_tda();audio_pt();}
   lcd.setCursor(0,0);lcd.print("ATTENUAT");
   lcd.setCursor(0,1);lcd.print("SW ");lcd.setCursor(3,1);
   if(-att4>-1){lcd.print(" 0 ");}
   else{lcd.print(-att4);if(-att4>-10){lcd.print(" ");}}
   lcd.setCursor(6,1);lcd.print("dB");
 }

  if(menu1==5){
     if(ir.value==IR_4){att5++;gr1=1;gr2=0;cl1();w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;};audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){att5++;gr2=0;cl1();w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;};audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_3){att5--;gr1=0;gr2=1;cl1();w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;};audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){att5--;gr1=0;cl1();w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;};audio_tda();audio_pt();}// кнопка <<<<<<
   
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   att5=att5-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;}audio_tda();audio_pt();}
   lcd.setCursor(0,0);lcd.print("ATTENUAT");
   lcd.setCursor(0,1);lcd.print("SL ");lcd.setCursor(3,1);
   if(-att5>-1){lcd.print(" 0 ");}
   else{lcd.print(-att5);if(-att5>-10){lcd.print(" ");}}
   lcd.setCursor(6,1);lcd.print("dB");
 }

  if(menu1==6){
     if(ir.value==IR_4){att6++;gr1=1;gr2=0;cl1();w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;};audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){att6++;gr2=0;cl1();w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;};audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_3){att6--;gr1=0;gr2=1;cl1();w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;};audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){att6--;gr1=0;cl1();w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;};audio_tda();audio_pt();}// кнопка <<<<<<   
   
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   att6=att6-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;}audio_tda();audio_pt();}
   lcd.setCursor(0,0);lcd.print("ATTENUAT");
   lcd.setCursor(0,1);lcd.print("SR ");lcd.setCursor(3,1);
   if(-att6>-1){lcd.print(" 0 ");}
   else{lcd.print(-att6);if(-att6>-10){lcd.print(" ");}}
   lcd.setCursor(6,1);lcd.print("dB");
 }

 ///////////////// EEPROM ///////////////////////////////////////////////////////////////////////////////////////
 if(millis()-times>10000 && w==1){
     EEPROM.update(0,vol+79);
     EEPROM.update(1,in);
     EEPROM.update(11,att1);EEPROM.update(12,att2);EEPROM.update(13,att3);EEPROM.update(14,att4);EEPROM.update(15,att5);EEPROM.update(16,att6);
     menu=0;cl();w=0,w1=1;menu1=0;}
  
}//loop

void print_in(){
 lcd.setCursor(0,0);lcd.print(" INPUT  ");
 lcd.setCursor(0,1);
 switch(in){case 0: lcd.print("  AUX   "); break;
            case 1: lcd.print("   BT   "); break;
            case 2: lcd.print("  ---   "); break;
            case 3: lcd.print(" -----  "); break;
            case 4: lcd.print("  5.1   "); break;}} // пропишите свои названия входов
  

void in_func(){if(in<0){in=4;}if(in>4){in=0;}}
void vol_func(){if(vol>0){vol=0;}if(vol<-79){vol=-79;}}
void cl(){ir.value=0;delay(300);lcd.clear();}
void cl1(){ir.value=0;delay(100);}
void audio_pt(){
  pt.setInput(in); // входы 1...4 (0...3) или 6 моно (4)
  pt.setMute(0,0,0,0,0,0,0); 
  pt.setFeature(0,1); // дополнительные функции 0...3
                     // 0 - Enhanced Surround Function Active
                     // 1 - Enhanced Surround Function Disabled
                     // 0 - Mixed Channel (0dB) Setup
                     // 1 - Mixed Channel (+6dB) Setup 
}
void audio_tda(){
  tda.setAtt(1,vol-att1);// 0 макс громк, -79(79) мин громк
  tda.setAtt(2,vol-att2);
  tda.setAtt(3,vol-att3);
  tda.setAtt(4,vol-att4);
  tda.setAtt(5,vol-att5);
  tda.setAtt(6,vol-att6);
  }

void to_Timer(){newPosition = myEnc.read()/4;}

154

Re: PT2323+TDA7448

Все работает! Еще раз спасибо огромное!

155

Re: PT2323+TDA7448

Добрый вечер! Воплотил наконец я все в железе. Но к сожалению опять начались проблемы. Перед началом всего, я запустил ваш скетч на проверку аудиопроцессоров. Все прекрасно работало. После подключения всего в кучу, ничего опять не работает sad.
Я проверил саму плату ардуино. Моргал светодиодом. Плата рабочая, шьется, все ок.Проверил работу Ик-приемника и энкодера. Все работает. Но ни экран, ни аудиопроцессоры не запустились. Я попробовал все ваши рекомендации, которые вы мне давали первый раз, но увы....Сканер показывает, что устройство не подключено...
Пробовал отключить экран от шины и запустить процессоры...увы....
Прошу опять вашего совета....куда рыть...

Все железо собрано по следующей схеме
http://forum.rcl-radio.ru/uploads/images/2022/04/1c4ac2f86dc809f636314355496015c2.png

156

Re: PT2323+TDA7448

Загрузите I2C сканер http://forum.rcl-radio.ru/viewtopic.php?id=64
Если адрес не определен установите подтягивающие резисторы к +5В на шину I2C  по 4,7 кОм на SDA SCL

157

Re: PT2323+TDA7448

Вы скетч используете с I2C подключением экрана?

158

Re: PT2323+TDA7448

Попробую поставить резисторы. Я их не ставил до этого и все работало . Да , скетч использую с l2c подключением.

159

Re: PT2323+TDA7448

Добрый вечер! Вопрос удалось решить! Проблема была в плате ардуинки. Между пином А4 и самой микросхемой пропадал почему-то контакт. Дорожка на вид была целая.Короче говоря все прекрасно работает! экран пишет, звук идет smile. Можно переходить к продолжению работы.
По поводу подтягивающих резисторов. Я не ставил их, все работает. На оригинальной плате процессоров стоят последовательно на каждую ногу по резистору.
                                                         http://forum.rcl-radio.ru/uploads/images/2022/04/c649e8961dc4148ddaf8d82bc67a79de.png

Если при такой схеме все же вы рекомендуете поставить подтягивающие, поставлю.
И так:
   1.Режим STBY и MUTE в оригинальной схеме реализован следующим образом. При включении одного из режимов, на управляющем пине микропроцессора появляется 1. Учитывая, что усилитель центрального канала не имеет управляющей ноги для этих режимов, то еще видимо реализуется программный MUTE. Поэтому надо, что бы в режиме MUTE и STBY на пине D3 появлялась 1, включался MUTE программно, а дополнительно в режиме STBY выключался экран. КАк-то так...
   2.Режимов эквалайзера, думаю трех достаточно будет. В оригинальном есть режим DISCO, он наиболее приятный. Вот только бы узнать его параметры....подберу сам потом на слух.
   3.Я думаю использовать энергонезависимую память смысла нет, нужно просто будет сделать при включении установку параметров по умолчанию.
   4. У меня используются три стерео входа(0,1,2) и шестиканальный.
   5. Если можно, сделать вывод уровней не в дб, а в цифрах (-7...7)
Ну пока для начала так.

160

Re: PT2323+TDA7448

Я уже немного запутался на каком мы этапе. Вроде как у Вас нет еще скетча, только тестовые.

У вас по схеме нет кнопки энкодера, я пока уберу кнопку ST и заменю ее на кнопку энкодера, протестируйте скетч, на его базе будем работать.

Пока только проверьте как работает скетч, регулировки аудиопроцессоров, переключение входов и тд.

#include <Wire.h>
#include <PT2322.h>
#include <PT2323.h>
#include <LiquidCrystal_I2C.h>  // http://forum.rcl-radio.ru/misc.php?action=pan_download&item=45&download=1
#include <EEPROM.h>
#include <Encoder.h>
#include <MsTimer2.h>
#include <boarddefs.h>
#include <IRremote.h>
 PT2322 pt; PT2323 pt0; 
  Encoder myEnc(7, 8);//CLK, DT подключение энкодера
  IRrecv irrecv(9); // указываем вывод модуля IR приемника
   decode_results ir;
   LiquidCrystal_I2C lcd(0x27,16,2);  // Устанавливаем дисплей
   byte a1[8]={0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
   byte a2[8]={0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
   byte a3[8]={0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000};
    unsigned long newPosition,time,oldPosition  = -999;
   int menu,menu2,w,vol,vol_d,z,z0,z1,in,bass,bass_d,mid,mid_d,treb,treb_d,attfl,attfl_d,attcn,attcn_d,attsub,attsub_d,ddd,tembro,x,attfr,attfr_d,atttl,atttl_d,atttr,atttr_d,mute;
   int g1,g2,inn;
   
void setup() {
  Wire.begin();Serial.begin(9600);irrecv.enableIRIn(); // запускаем модуль IR
  lcd.init();lcd.backlight();
  lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
  pinMode(11,INPUT_PULLUP); // menu кнопка энкодера 
  pinMode(12,INPUT_PULLUP); // MUTE
  pinMode(10,INPUT_PULLUP); // IN
  MsTimer2::set(2, to_Timer);MsTimer2::start();
   vol = EEPROM.read(0)-79;in = EEPROM.read(1);bass = EEPROM.read(2)-7;mid = EEPROM.read(3)-7;treb = EEPROM.read(4)-7;
  attfl = EEPROM.read(5)-14;attcn = EEPROM.read(7)-14;attsub = EEPROM.read(8)-14;ddd = EEPROM.read(9);tembro = EEPROM.read(10);
  attfr = EEPROM.read(11)-14;atttl = EEPROM.read(12)-14;atttr = EEPROM.read(13)-14;
  delay(500);
  audio();audio_in();
}
 void to_Timer(){newPosition = myEnc.read()/4;}
 
 void loop(){delay(10);
  if(digitalRead(11)==LOW){menu++;cl1();myEnc.write(0);time=millis();w=1;if(menu>11){menu=0;}}// меню

   //////////// mute ////////////////////////
  if(mute==1&&(digitalRead(12)==LOW)){mute=0;menu=0;audio();cl1();}  
  if(digitalRead(12)==LOW){mute=1;menu=100;audio();cl1();}
  if(mute==1){lcd.setCursor(0,0);lcd.print("      MUTE      ");delay(300);}
   
   ////////////////////////////////////////////////////////////////////////////////
  if(digitalRead(11)==LOW||inn==1){in++;if(in>4){in=0;}audio_in();cl1();lcd.setCursor(0,0);lcd.print("    INPUT  ");lcd.print(in+1);delay(2000);time=millis();w=1;inn=0;}// in

  
  if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);time=millis();w=1;irrecv.resume();}// IR приемник  
  
   if(ir.value==0x2FDD02F){menu++;g1=0;g2=0;cl1();time=millis();w=1;if(menu>11){menu=0;}}// меню кнопка CH+
   if(ir.value==0x2FD32CD){menu--;g1=0;g2=0;cl1();time=millis();w=1;if(menu<0){menu=11;}}// меню кнопка CH-
   if(ir.value==0x2FDB24D){menu=0;g1=0;g2=0;cl1();time=millis();w=1;}// меню кнопка CH (menu===0)
   if(ir.value==0x2FDEA15){inn=1;g1=0;g2=0;time=millis();w=1;audio();}//  кнопка IN 
 //////////////////////////////////////// Громкость -79...0 дБ //////////////////////////////////////
 if(menu==0){   
     if(ir.value==0x2FD906F){vol++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+  0xFFA857
     if(ir.value==0xFFFFFFFF and g1==1){vol++;g2=0;cl();time=millis();w=1;audio();}// кнопка >>>>>>
     if(ir.value==0x2FDF20D){vol--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){vol--;g1=0;cl();time=millis();w=1;audio();}// кнопка <<<<<<
     if(vol>79){vol=79;}if(vol<0){vol=0;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(vol>79){vol=79;}if(vol<0){vol=0;}audio();}
  lcd.setCursor(0,0);lcd.print("Volume  ");
  lcd.print(" ");lcd.print(-79+vol);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");vol_d=vol-32;
   for(z=0,z0=0,z1=0;z<=vol_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}}
 //////////////////////////////////////// Тембр НЧ +-14 дБ //////////////////////////////////////
 if(menu==1){
     if(ir.value==0x2FD906F){bass++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){bass++;g2=0;cl();time=millis();w=1;audio();}// кнопка >>>>>>
     if(ir.value==0x2FDF20D){bass--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){bass--;g1=0;cl();time=millis();w=1;audio();}// кнопка <<<<<<
   if(bass<-7){bass=-7;}if(bass>7){bass=7;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    bass=bass+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(bass<-7){bass=-7;}if(bass>7){bass=7;}audio();}
  lcd.setCursor(0,0);lcd.print("Bass    ");
  lcd.print(" ");lcd.print(bass*2);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");bass_d=(bass+7)*2;
   for(z=0,z0=0,z1=0;z<=bass_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}   
 //////////////////////////////////////// Тембр CЧ +-14 дБ //////////////////////////////////////
 if(menu==2){
     if(ir.value==0x2FD906F){mid++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){mid++;g2=0;cl();time=millis();w=1;audio();}// кнопка >>>>>>
     if(ir.value==0x2FDF20D){mid--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){mid--;g1=0;cl();time=millis();w=1;audio();}// кнопка <<<<<<
   if(mid<-7){mid=-7;}if(mid>7){mid=7;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    mid=mid+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(mid<-7){mid=-7;}if(mid>7){mid=7;}audio();}
  lcd.setCursor(0,0);lcd.print("Middle  ");
  lcd.print(" ");lcd.print(mid*2);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");mid_d=(mid+7)*2;
   for(z=0,z0=0,z1=0;z<=mid_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("   ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}} 
 //////////////////////////////////////// Тембр BЧ +-14 дБ //////////////////////////////////////
 if(menu==3){
     if(ir.value==0x2FD906F){treb++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){treb++;g2=0;cl();time=millis();w=1;audio();}// кнопка >>>>>>
     if(ir.value==0x2FDF20D){treb--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){treb--;g1=0;cl();time=millis();w=1;audio();}// кнопка <<<<<<
   if(treb<-7){treb=-7;}if(treb>7){treb=7;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    treb=treb+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(treb<-7){treb=-7;}if(treb>7){treb=7;}audio();}
  lcd.setCursor(0,0);lcd.print("Treble  ");
  lcd.print(" ");lcd.print(treb*2);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");treb_d=(treb+7)*2;
   for(z=0,z0=0,z1=0;z<=treb_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}    
   //////////////////////////////////// rock pop classic //////////////////////      
  if(menu==4){
     if(ir.value==0x2FD906F){tembro++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){tembro++;g2=0;cl();time=millis();w=1;audio();}// кнопка >>>>>>
     if(ir.value==0x2FDF20D){tembro--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){tembro--;g1=0;cl();time=millis();w=1;audio();}// кнопка <<<<<<
      if(tembro>4){tembro=0;}if(tembro<0){tembro=4;}
     if (newPosition != oldPosition) {
    oldPosition = newPosition;
    tembro=tembro+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(tembro>4){tembro=0;}if(tembro<0){tembro=4;}}
    lcd.setCursor(0,0);lcd.print(" Preset timbre  ");
    if(tembro==0){lcd.setCursor(0,1);lcd.print("  manual mode  ");}
    if(tembro==1){lcd.setCursor(0,1);lcd.print("      ROCK     ");bass=4,mid=-2;treb=5;x=1;}
    if(tembro==2){lcd.setCursor(0,1);lcd.print("      POP      ");bass=-3,mid=3;treb=-2;x=1;}
    if(tembro==3){lcd.setCursor(0,1);lcd.print("    CLASSIC    ");bass=0,mid=0;treb=-2;x=1;}
    if(tembro==4){lcd.setCursor(0,1);lcd.print("    default    ");bass=0,mid=0;treb=0;x=1;}
    if(x==1){audio();x=0;}
  }
   
  /////////////////////// ATT FL ///////////////////
   if(menu==5){
     if(ir.value==0x2FD906F){attfl++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attfl++;g2=0;cl();time=millis();w=1;audio();}// кнопка >>>>>>
     if(ir.value==0x2FDF20D){attfl--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attfl--;g1=0;cl();time=millis();w=1;audio();}// кнопка <<<<<<
   if(attfl<-14){attfl=-14;}if(attfl>0){attfl=0;}
     
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attfl=attfl+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(attfl<-14){attfl=-14;}if(attfl>0){attfl=0;}audio();}
  lcd.setCursor(0,0);lcd.print("ATT FL   ");
  lcd.print(" ");lcd.print(attfl);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attfl_d=(attfl+14)*2;
   for(z=0,z0=0,z1=0;z<=attfl_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}  
  /////////////////////// ATT FR ///////////////////
   if(menu==6){
     if(ir.value==0x2FD906F){attfr++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attfr++;g2=0;cl();time=millis();w=1;audio();}// кнопка >>>>>>
     if(ir.value==0x2FDF20D){attfr--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attfr--;g1=0;cl();time=millis();w=1;audio();}// кнопка <<<<<<
   if(attfr<-14){attfr=-14;}if(attfr>0){attfr=0;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attfr=attfr+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(attfr<-14){attfr=-14;}if(attfr>0){attfr=0;}audio();}
  lcd.setCursor(0,0);lcd.print("ATT FR   ");
  lcd.print(" ");lcd.print(attfr);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attfr_d=(attfr+14)*2;
   for(z=0,z0=0,z1=0;z<=attfr_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}  
  /////////////////////// ATT TL ///////////////////
  if(menu==7){
     if(ir.value==0x2FD906F){atttl++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){atttl++;g2=0;cl();time=millis();w=1;audio();}// кнопка >>>>>>
     if(ir.value==0x2FDF20D){atttl--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){atttl--;g1=0;cl();time=millis();w=1;audio();}// кнопка <<<<<<
   if(atttl<-14){atttl=-14;}if(atttl>0){atttl=0;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    atttl=atttl+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(atttl<-14){atttl=-14;}if(atttl>0){atttl=0;}audio();}
  lcd.setCursor(0,0);lcd.print("ATT TL   ");
  lcd.print(" ");lcd.print(atttl);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");atttl_d=(atttl+14)*2;
   for(z=0,z0=0,z1=0;z<=atttl_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}} 
 /////////////////////// ATT TR ///////////////////
  if(menu==8){
     if(ir.value==0x2FD906F){atttr++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){atttr++;g2=0;cl();time=millis();w=1;audio();}// кнопка >>>>>>
     if(ir.value==0x2FDF20D){atttr--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){atttr--;g1=0;cl();time=millis();w=1;audio();}// кнопка <<<<<<
   if(atttr<-14){atttr=-14;}if(atttr>0){atttr=0;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    atttr=atttr+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(atttr<-14){atttr=-14;}if(atttr>0){atttr=0;}audio();}
  lcd.setCursor(0,0);lcd.print("ATT TR   ");
  lcd.print(" ");lcd.print(atttr);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");atttr_d=(atttr+14)*2;
   for(z=0,z0=0,z1=0;z<=atttr_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}} 
 /////////////////////// ATT CN ///////////////////
    if(menu==9){
     if(ir.value==0x2FD906F){attcn++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attcn++;g2=0;cl();time=millis();w=1;audio();}// кнопка >>>>>>
     if(ir.value==0x2FDF20D){attcn--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attcn--;g1=0;cl();time=millis();w=1;audio();}// кнопка <<<<<<
      if(attcn<-14){attcn=-14;}if(attcn>0){attcn=0;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attcn=attcn+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(attcn<-14){attcn=-14;}if(attcn>0){attcn=0;}audio();}
  lcd.setCursor(0,0);lcd.print("ATT CN   ");
  lcd.print(" ");lcd.print(attcn);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attcn_d=(attcn+14)*2;
   for(z=0,z0=0,z1=0;z<=attcn_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}  
  /////////////////////// ATT SUB ///////////////////
     if(menu==10){
     if(ir.value==0x2FD906F){attsub++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attsub++;g2=0;cl();time=millis();w=1;audio();}// кнопка >>>>>>
     if(ir.value==0x2FDF20D){attsub--;g1=0;g2=1;cl();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attsub--;g1=0;cl();time=millis();w=1;audio();}// кнопка <<<<<<
       if(attsub<-14){attsub=-14;}if(attsub>0){attsub=0;time=millis();}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attsub=attsub+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(attsub<-14){attsub=-14;}if(attsub>0){attsub=0;}audio();}
  lcd.setCursor(0,0);lcd.print("ATT SUB  ");
  lcd.print(" ");lcd.print(attsub);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attsub_d=(attsub+14)*2;
   for(z=0,z0=0,z1=0;z<=attsub_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}  
   
  //////////////////////////// 3d ///////////////////////////////////////////////
 if(menu==11){
     if(ir.value==0x2FD906F){ddd++;g1=1;g2=0;cl1();time=millis();w=1;audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){ddd++;g2=0;cl1();time=millis();w=1;audio();}// кнопка >>>>>>
     if(ir.value==0x2FDF20D){ddd--;g1=0;g2=1;cl1();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){ddd--;g1=0;cl1();time=millis();w=1;audio();}// кнопка <<<<<<
   if(ddd<0){ddd=1;}if(ddd>1){ddd=0;}
   if (newPosition != oldPosition) {
    oldPosition = newPosition;
    ddd=ddd+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(ddd<0){ddd=1;}if(ddd>1){ddd=0;}audio();}
   lcd.setCursor(0,0); if(ddd==0){lcd.print("     3D  ON  ");}else{lcd.print("     3D  OFF  ");} }  

   
   if(millis()-time>10000&& w==1&&mute==0){
     EEPROM.update(0,vol+79);EEPROM.update(1,in);EEPROM.update(2,bass+7);EEPROM.update(3,mid+7);EEPROM.update(4,treb+7);
     EEPROM.update(5,attfl+14);EEPROM.update(7,attcn+14);EEPROM.update(8,attsub+14);EEPROM.update(9,ddd);EEPROM.update(10,tembro);
     EEPROM.update(11,attfr+14);EEPROM.update(12,atttl+14);EEPROM.update(13,atttr+14);
     menu=0;w=0;cl();}
 
   
 }//loop
 
 void cl(){ir.value=0;delay(100);}
 void cl1(){ir.value=0;delay(300);lcd.clear();}
 void audio_in(){
  pt0.setInput(in); 
  pt0.setMute(0,0,0,0,0,0,0); 
  pt0.setFeature(1,1); 
}
 void audio(){
  pt.setFront_lk_att(abs(attfl));// att front L
  pt.setFront_rk_att(abs(attfr));// att front R
  pt.setCenter_att(abs(attcn));  // att center
  pt.setRear_lk_att(abs(atttl)); // att rear L
  pt.setRear_rk_att(abs(atttr)); // att rear R
  pt.setSub_att(abs(attsub));     // att sub
  pt.setFunc(mute,ddd,0); // mute,3d,тембр on/off
  pt.setBass(bass);            // BASS    -14...0...14 dB (int -7...0...7)
  pt.setMiddle(mid);          // MIDDLE  -14...0...14 dB (int -7...0...7)
  pt.setTreble(treb);          // TREBLE  -14...0...14 dB (int -7...0...7)
  pt.setVol(abs(vol)); // -79...0
}

161

Re: PT2323+TDA7448

Библиотеки:

http://rcl-radio.ru/wp-content/uploads/ … remote.zip
http://rcl-radio.ru/wp-content/uploads/ … ncoder.zip
http://rcl-radio.ru/wp-content/uploads/ … Timer2.zip

162 (2022-04-20 20:56:59 отредактировано nora11)

Re: PT2323+TDA7448

Да, все скетчи тестовые .Энкодер без кнопки

163

Re: PT2323+TDA7448

Все равно надо переключать пункты меню, поэтому кнопка пусть и не в энкодере будет нужна

164

Re: PT2323+TDA7448

Ок, понял. Завтра постараюсь все протестить , спасибо

165

Re: PT2323+TDA7448

Sound_test2:8:10: fatal error: boarddefs.h: No such file or directory
Несколько библиотек найдено для "LiquidCrystal_I2C.h"
#include <boarddefs.h>
          ^~~~~~~~~~~~~
Используется: /Users/.../Documents/Arduino/libraries/LiquidCrystalI2C
compilation terminated.
Не используется: /Users/.../Documents/Arduino/libraries/LiquidCrystal
exit status 1
boarddefs.h: No such file or directory

Я так понимаю нужно установить boarddefs.h. В сети его не нашел. Как его установить?

166

Re: PT2323+TDA7448

Этот файл входит в состав библиотеки http://rcl-radio.ru/wp-content/uploads/ … remote.zip

167

Re: PT2323+TDA7448

Добрый вечер! Залил скетч. Вообщем и целом все работает.Входы переключаются, эквалайзер работает, поканальный аттенюатор тоже, С пульта тоже работает. Пульт у меня выглядит вот так.http://forum.rcl-radio.ru/uploads/images/2022/04/bef22246abcd69507eaefb0766ce133d.jpg.
Нажатие кнопки сразу реализует функцию. Возможно так же сделать?
2.Мерцают полоски на регулировке громкости. Полоски заканчиваются при уровне -45Дб, хотя громкости идет до -79.
3.Что бы сменить вход, нужно дождаться пока экран переключится на отображение громкости и только потом можно дальше переключаться. это можно тоже исправить, чтобы переключение входов шло сразу.
4.Можно сделать вывод надписей на русском?Я так понимаю нужно подключить библиотеку с поддержкой кириллицы?
5. Я как-то не понял как он сохраняет последние настройки в память. Выключал, включал, но настройки были не последние.
Как я писал ранее, эту функцию можно опустить, достаточно сделать при включении установку параметров по умолчанию.(громкость, вход, выход, эквалайзер).
Ну это пока вот для начала...

168

Re: PT2323+TDA7448

Скетч работает, все регулирует, это самое главное. Все будет переписано по новому.

Нажатие кнопки сразу реализует функцию. Возможно так же сделать?

Да, так и буду делать.

2 и 3 пункт будут учены в новом скетче.

4.Можно сделать вывод надписей на русском?Я так понимаю нужно подключить библиотеку с поддержкой кириллицы?

Не использовал ни когда такую библиотеку, она все очень усложнит, проще все сделать на анг. или купить экран с поддержкой русского шрифта.

5. Я как-то не понял как он сохраняет последние настройки в память. Выключал, включал, но настройки были не последние.

Надо ждать 10 секунд после изминения параметров, после чего все заноситься в память. Отказываться от памяти не рекомендую, эта очень простая в программном плане функция и очень удобная в использовании.

В выходные буду собирать схему (без аудипроцессора) и переписывать скетч.

169

Re: PT2323+TDA7448

Про русский не принципиально, просто спросил. Экран у меня поддерживает вроде как русский шрифт. Я тут в соседней теме подглядел как прописать свои названия входов. Попробую потом сам прикрутить...
Ну если вы рекомендуете не отказываться от памяти, то хорошо, пусть так будет.
Ну и еще надо режим STBY реализовать. Логику работы я описывал выше.
Еще раз спасибо.

И еще...
Есть одна вещь, которую надо будет реализовать. Хочу прикрутить блютуз трансмиттер для наушников. Я озадачу вас, когда решим основную задачу, изложу свое видение, а вы направите на путь истинный... smile

170

Re: PT2323+TDA7448

Что делает кнопка OUTPUT на пульте?
Нет кнопки MIDDLE на пульте.

171

Re: PT2323+TDA7448

Кнопка OUTPUT меняет режим вывода звука - 2.1,5.1,псевдо 5.1. Проверить скетч смогу только скорее всего завтра. Спасибо

172

Re: PT2323+TDA7448

Кнопка OUTPUT меняет режим вывода звука - 2.1,5.1,псевдо 5.1.

то есть нужно отключать выходы в зависимости от режима?

2,1 = фронт + саб
5,1 = фронт + тыл + центр + саб
5,1 псевдо ???

173 (2022-04-22 22:59:42 отредактировано nora11)

Re: PT2323+TDA7448

По 2.1 завтра точно отпишусь.
5.1 стандартно поканально.
Псевдо я так понимаю из 2.1 делает типа 5.1... Как-то так...
Я так предполагал, что это функции аудиопроцессоров

174

Re: PT2323+TDA7448

Фронт и тыл на пульте не имеют раздельную регулировку по правому и левому каналу, я предлагаю изменить меню управления с энкодера, убрать регулировку по фронту ПК ЛК и по тылу ПК ЛК, сделать просто регулировку фронт и тыл общую для ПК и ЛК.

Как это было реализовано на муз. центе у Вас?

175

Re: PT2323+TDA7448

тест:

#define IR1  0x33B844BB // INPUT
#define IR2  0x33B8946B // MUTE
#define IR3  0x33B858A7 // 3D
#define IR4  0x33B820DF // EQ
#define IR5  0x33B8A05F // UP VOL
#define IR6  0x33B8609F // DW VOL
#define IR7  0x33B800FF // STANDBY
#define IR8  0x33B814EB // TREBLE
#define IR9  0x33B840BF // BASS
#define IR10 0x33B824DB // FRONT
#define IR11 0x33B8A45B // REAR
#define IR12 0x33B8649B // CENTER
#define IR13 0x33B8E41B // SUB
#define IR14 0x33B854AB // OUTPUT

#include <Wire.h>
#include <PT2322.h>
#include <PT2323.h>
#include <LiquidCrystal_I2C.h>  // http://forum.rcl-radio.ru/misc.php?action=pan_download&item=45&download=1
#include <EEPROM.h>
#include <Encoder.h>
#include <MsTimer2.h>
#include <boarddefs.h>
#include <IRremote.h>
 PT2322 pt; PT2323 pt0; 
  Encoder myEnc(8, 7);//CLK, DT подключение энкодера
  IRrecv irrecv(9); // указываем вывод модуля IR приемника
   decode_results ir;
   LiquidCrystal_I2C lcd(0x27,16,2);  // Устанавливаем дисплей
   byte a1[8]={0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
   byte a2[8]={0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
   byte a3[8]={0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000};
   unsigned long newPosition,time,oldPosition  = -999;
   int menu,menu2,w,vol,vol_d,z,z0,z1,in,bass,bass_d,mid,mid_d,treb,treb_d,attfl,attfl_d,attcn,attcn_d,attsub,attsub_d,ddd,tembro,x,attfr,attfr_d,atttl,atttl_d,atttr,atttr_d,mute;
   bool g1,g2;
   bool w1=1,power;
   
void setup() {
  Wire.begin();Serial.begin(9600);irrecv.enableIRIn(); // запускаем модуль IR
  lcd.init();lcd.backlight();
  lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
  pinMode(11,INPUT_PULLUP); // menu кнопка энкодера 
  pinMode(12,INPUT_PULLUP); // MUTE
  pinMode(10,INPUT_PULLUP); // IN
  pinMode(13,INPUT_PULLUP); // STANDBY
  pinMode(3,OUTPUT);        // OUTPUT STANDBY AND MUTE
  MsTimer2::set(2, to_Timer);MsTimer2::start();
   vol = EEPROM.read(0)-79;in = EEPROM.read(1);bass = EEPROM.read(2)-7;mid = EEPROM.read(3)-7;treb = EEPROM.read(4)-7;
  attfl = EEPROM.read(5)-14;attcn = EEPROM.read(7)-14;attsub = EEPROM.read(8)-14;ddd = EEPROM.read(9);tembro = EEPROM.read(10);
  attfr = EEPROM.read(11)-14;atttl = EEPROM.read(12)-14;atttr = EEPROM.read(13)-14;
  delay(500);
  audio();audio_in();
}
 void to_Timer(){newPosition = myEnc.read()/4;}
 
 void loop(){
  //// BUTTON //////////////////////////////
 if(power==0){ 
  if(mute==0){
  if(digitalRead(11)==LOW){menu++;cl1();myEnc.write(0);time=millis();w=1;w1=1;if(menu>11){menu=0;}}// меню
  if(digitalRead(10)==LOW || ir.value==IR1){in++;if(in>4){in=0;}audio_in();cl1();lcd.setCursor(0,0);lcd.print(" INPUT SELECTOR ");
  switch(in){
    case 0: lcd.setCursor(0,1);lcd.print("      IN ");lcd.print(in+1);break;
    case 1: lcd.setCursor(0,1);lcd.print("      IN ");lcd.print(in+1);break;
    case 2: lcd.setCursor(0,1);lcd.print("      IN ");lcd.print(in+1);break;
    case 3: lcd.setCursor(0,1);lcd.print("      IN ");lcd.print(in+1);break;
    case 4: lcd.setCursor(0,1);lcd.print("      6 CH ");break;
    }delay(500);time=millis();w=1;w1=1;cl1();}// in 
  
  if(ir.value==IR3){ddd++;menu=11;g1=1;g2=0;cl1();time=millis();w=1;ddd_conf();audio();}
  if(ir.value==IR4){tembro++;menu=4;g1=1;g2=0;cl1();time=millis();w=1;w1=1;tembr();audio();}
  if(ir.value==IR8){menu=3;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // treble
  if(ir.value==IR9){menu=1;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // bass
  if(ir.value==IR12){menu=9;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // center
  if(ir.value==IR13){menu=10;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // sub
  
    } // mute
  
  if((digitalRead(12)==LOW || ir.value==IR2) && mute==0){mute=1;menu=100;g1=0;g2=0;cl1();time=millis();w=1;w1=1;audio();lcd.setCursor(6,0);lcd.print("MUTE");delay(500);}
  if((digitalRead(12)==LOW || ir.value==IR2) && mute==1){mute=0;menu=0;  g1=0;g2=0;cl1();time=millis();w=1;w1=1;audio();}
 }// power
  if((digitalRead(13)==LOW || ir.value==IR7) && power==0){power=1;menu=100;g1=0;g2=0;cl1();time=millis();w=1;w1=1;mute=1;audio();lcd.setCursor(3,0);lcd.print("POWER OFF");delay(1000);lcd.noBacklight();}
  if((digitalRead(13)==LOW || ir.value==IR7) && power==1){power=0;menu=0;  g1=0;g2=0;cl1();time=millis();w=1;w1=1;mute=0;audio();lcd.backlight();lcd.setCursor(3,0);lcd.print("POWER ON ");delay(1000);cl1();}

  if(mute==1||power==1){digitalWrite(3,HIGH);}else{digitalWrite(3,LOW);}// standby out pin D3
  
  if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);time=millis();w=1;w1=1;irrecv.resume();}// IR приемник  
  
   
 //////////////////////////////////////// Громкость -79...0 дБ //////////////////////////////////////
 if(menu==0){   
     if(ir.value==IR5){vol++;g1=1;g2=0;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка VOL+  0xFFA857
     if(ir.value==0xFFFFFFFF and g1==1){vol++;g2=0;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка >>>>>>
     if(ir.value==IR6){vol--;g1=0;g2=1;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){vol--;g1=0;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;vol_conf();audio();}
  lcd.setCursor(0,0);lcd.print("VOLUME ");
  lcd.print(-79+vol);lcd.print(" ");lcd.setCursor(10,0);lcd.print("dB");vol_d=map(vol, 0,79, 0, 48);
  switch(in){
    case 0: lcd.print(" IN");lcd.print(in+1);break;
    case 1: lcd.print(" IN");lcd.print(in+1);break;
    case 2: lcd.print(" IN");lcd.print(in+1);break;
    case 3: lcd.print(" IN");lcd.print(in+1);break;
    case 4: lcd.print(" 6CH");break;
  }
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=vol_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}}}
   
 //////////////////////////////////////// Тембр НЧ +-14 дБ //////////////////////////////////////
 if(menu==1){
     if(ir.value==IR5){bass++;g1=1;g2=0;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){bass++;g2=0;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка >>>>>>
     if(ir.value==IR6){bass--;g1=0;g2=1;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){bass--;g1=0;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    bass=bass+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;bass_conf();audio();}
  lcd.setCursor(0,0);lcd.print("BASS    ");
  lcd.print(" ");lcd.print(bass);lcd.print(" ");lcd.setCursor(13,0);bass_d=(bass+7)*2;
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=bass_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
   
 //////////////////////////////////////// Тембр CЧ +-14 дБ //////////////////////////////////////
 if(menu==2){
     if(ir.value==IR5){mid++;g1=1;g2=0;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){mid++;g2=0;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка >>>>>>
     if(ir.value==IR6){mid--;g1=0;g2=1;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){mid--;g1=0;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    mid=mid+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;mid_conf();audio();}
  lcd.setCursor(0,0);lcd.print("MIDDLE  ");
  lcd.print(" ");lcd.print(mid);lcd.print(" ");lcd.setCursor(13,0);mid_d=(mid+7)*2;
  if(w1==1){w1=0; 
   for(z=0,z0=0,z1=0;z<=mid_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("   ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}} 
   
 //////////////////////////////////////// Тембр BЧ +-14 дБ //////////////////////////////////////
 if(menu==3){
     if(ir.value==IR5){treb++;g1=1;g2=0;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){treb++;g2=0;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка >>>>>>
     if(ir.value==IR6){treb--;g1=0;g2=1;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){treb--;g1=0;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    treb=treb+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;treb_conf();audio();}
  lcd.setCursor(0,0);lcd.print("TREBLE  ");
  lcd.print(" ");lcd.print(treb);lcd.print(" ");lcd.setCursor(13,0);treb_d=(treb+7)*2;
  if(w1==1){w1=0;  
   for(z=0,z0=0,z1=0;z<=treb_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}    
   
   //////////////////////////////////// rock pop classic //////////////////////      
  if(menu==4){
     if(ir.value==IR5){tembro++;g1=1;g2=0;cl();time=millis();w=1;w1=1;tembr();audio();}// кнопка VOL+
     if(ir.value==IR6){tembro--;g1=0;g2=1;cl();time=millis();w=1;w1=1;tembr();audio();}// кнопка VOL-
     if (newPosition != oldPosition) {
    oldPosition = newPosition;
    tembro=tembro+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;tembr();}
    if(w1==1){w1=0;
    lcd.setCursor(0,0);lcd.print(" Preset timbre  ");
    if(tembro==0){lcd.setCursor(0,1);lcd.print("  manual mode  ");}
    if(tembro==1){lcd.setCursor(0,1);lcd.print("      ROCK     ");bass=4,mid=-2;treb=5;x=1;}
    if(tembro==2){lcd.setCursor(0,1);lcd.print("      POP      ");bass=-3,mid=3;treb=-2;x=1;}
    if(tembro==3){lcd.setCursor(0,1);lcd.print("    CLASSIC    ");bass=0,mid=0;treb=-2;x=1;}
    if(tembro==4){lcd.setCursor(0,1);lcd.print("    default    ");bass=0,mid=0;treb=0;x=1;}
    if(x==1){audio();x=0;}
  }}
   
  /////////////////////// ATT FL ///////////////////
   if(menu==5){
     if(ir.value==IR5){attfl++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_lf();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attfl++;g2=0;cl();time=millis();w=1;w1=1;att_lf();audio();}// кнопка >>>>>>
     if(ir.value==IR6){attfl--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_lf();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attfl--;g1=0;cl();time=millis();w=1;w1=1;att_lf();audio();}// кнопка <<<<<<   
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attfl=attfl+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_lf();audio();}
  lcd.setCursor(0,0);lcd.print("ATT FL   ");
  lcd.print(" ");lcd.print(attfl);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attfl_d=(attfl+14)*2;
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=attfl_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
     
  /////////////////////// ATT FR ///////////////////
   if(menu==6){
     if(ir.value==IR5){attfr++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_fr();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attfr++;g2=0;cl();time=millis();w=1;w1=1;att_fr();audio();}// кнопка >>>>>>
     if(ir.value==IR6){attfr--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_fr();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attfr--;g1=0;cl();time=millis();w=1;w1=1;att_fr();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attfr=attfr+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_fr();audio();}
  lcd.setCursor(0,0);lcd.print("ATT FR   ");
  lcd.print(" ");lcd.print(attfr);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attfr_d=(attfr+14)*2;
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=attfr_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
     
  /////////////////////// ATT TL ///////////////////
  if(menu==7){
     if(ir.value==IR5){atttl++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_tl();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){atttl++;g2=0;cl();time=millis();w=1;w1=1;att_tl();audio();}// кнопка >>>>>>
     if(ir.value==IR6){atttl--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_tl();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){atttl--;g1=0;cl();time=millis();w=1;w1=1;att_tl();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    atttl=atttl+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_tl();audio();}
  lcd.setCursor(0,0);lcd.print("ATT TL   ");
  lcd.print(" ");lcd.print(atttl);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");atttl_d=(atttl+14)*2;
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=atttl_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
    
 /////////////////////// ATT TR ///////////////////
  if(menu==8){
     if(ir.value==IR5){atttr++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_tr();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){atttr++;g2=0;cl();time=millis();w=1;w1=1;att_tr();audio();}// кнопка >>>>>>
     if(ir.value==IR6){atttr--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_tr();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){atttr--;g1=0;cl();time=millis();w=1;w1=1;att_tr();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    atttr=atttr+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_tr();audio();}
  lcd.setCursor(0,0);lcd.print("ATT TR   ");
  lcd.print(" ");lcd.print(atttr);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");atttr_d=(atttr+14)*2;
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=atttr_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
    
 /////////////////////// ATT CN ///////////////////
    if(menu==9){
     if(ir.value==IR5){attcn++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attcn++;g2=0;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка >>>>>>
     if(ir.value==IR6){attcn--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attcn--;g1=0;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attcn=attcn+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_cn();audio();}
  lcd.setCursor(0,0);lcd.print("ATT CN   ");
  lcd.print(" ");lcd.print(attcn);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attcn_d=(attcn+14)*2;
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=attcn_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
     
  /////////////////////// ATT SUB ///////////////////
     if(menu==10){
     if(ir.value==IR5){attsub++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attsub++;g2=0;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка >>>>>>
     if(ir.value==IR6){attsub--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attsub--;g1=0;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attsub=attsub+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_sub();audio();}
  lcd.setCursor(0,0);lcd.print("ATT SUB  ");
  lcd.print(" ");lcd.print(attsub);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attsub_d=(attsub+14)*2;
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=attsub_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}  
   
  //////////////////////////// 3d ///////////////////////////////////////////////
 if(menu==11){
   if (newPosition != oldPosition) {
    oldPosition = newPosition;
    ddd=ddd+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;ddd_conf();audio();}
   lcd.setCursor(0,0);lcd.print("    Surround    "); 
   lcd.setCursor(0,1);if(ddd==0){lcd.print("     3D  ON  ");}else{lcd.print("     3D  OFF  ");}}  

//////////////////////////// EEPROM /////////////////////////////////////////////////////////////   
   if(millis()-time>5000&& w==1&&mute==0){
     EEPROM.update(0,vol+79);EEPROM.update(1,in);EEPROM.update(2,bass+7);EEPROM.update(3,mid+7);EEPROM.update(4,treb+7);
     EEPROM.update(5,attfl+14);EEPROM.update(7,attcn+14);EEPROM.update(8,attsub+14);EEPROM.update(9,ddd);EEPROM.update(10,tembro);
     EEPROM.update(11,attfr+14);EEPROM.update(12,atttl+14);EEPROM.update(13,atttr+14);
     menu=0;w=0;w1=1;cl();}
 
   
 }//loop
 void ddd_conf(){if(ddd<0){ddd=1;}if(ddd>1){ddd=0;}}
 void att_sub(){if(attsub<-14){attsub=-14;}if(attsub>0){attsub=0;}}
 void att_cn(){if(attcn<-14){attcn=-14;}if(attcn>0){attcn=0;}}
 void att_tr(){if(atttr<-14){atttr=-14;}if(atttr>0){atttr=0;}}
 void att_tl(){if(atttl<-14){atttl=-14;}if(atttl>0){atttl=0;}}
 void att_fr(){if(attfr<-14){attfr=-14;}if(attfr>0){attfr=0;}}
 void att_lf(){if(attfl<-14){attfl=-14;}if(attfl>0){attfl=0;}}
 void tembr(){if(tembro>4){tembro=0;}if(tembro<0){tembro=4;}}
 void treb_conf(){if(treb<-7){treb=-7;}if(treb>7){treb=7;}}
 void mid_conf(){if(mid<-7){mid=-7;}if(mid>7){mid=7;}}
 void bass_conf(){if(bass<-7){bass=-7;}if(bass>7){bass=7;}}
 void vol_conf(){if(vol>79){vol=79;}if(vol<0){vol=0;}}
 void cl(){ir.value=0;delay(100);}
 void cl1(){ir.value=0;delay(300);lcd.clear();}
 
 void audio_in(){
  pt0.setInput(in); 
  pt0.setMute(0,0,0,0,0,0,0); 
  pt0.setFeature(1,1); 
}
 void audio(){
  pt.setFront_lk_att(abs(attfl));// att front L
  pt.setFront_rk_att(abs(attfr));// att front R
  pt.setCenter_att(abs(attcn));  // att center
  pt.setRear_lk_att(abs(atttl)); // att rear L
  pt.setRear_rk_att(abs(atttr)); // att rear R
  pt.setSub_att(abs(attsub));     // att sub
  pt.setFunc(mute,ddd,0); // mute,3d,тембр on/off
  pt.setBass(bass);            // BASS    -14...0...14 dB (int -7...0...7)
  pt.setMiddle(mid);          // MIDDLE  -14...0...14 dB (int -7...0...7)
  pt.setTreble(treb);          // TREBLE  -14...0...14 dB (int -7...0...7)
  pt.setVol(abs(vol)); // -79...0
}