51

Re: PT2323+TDA7448

liman324 пишет:

Регулировка громкости 0...79 единиц? Или делать в процентах?

Если получится в процентах, будет шикарно))

52

Re: PT2323+TDA7448

int x,i,w,w1,menu,menu1=0,vol,vol_d,z,z0,z1,gr1,gr2,in,att1,att2,att3,att4,att5,att6;
поменяйте
int x,i,w,w1=1,menu,menu1=0,vol,vol_d,z,z0,z1,gr1,gr2,in,att1,att2,att3,att4,att5,att6;

53

Re: PT2323+TDA7448

Ничего не изменилось)

54

Re: PT2323+TDA7448

vol_d=map(vol, 0,-79,0 ,48);

55

Re: PT2323+TDA7448

Тоже ничего

56

Re: PT2323+TDA7448

#define IR_8 0xFF21DE // Кнопка MENU (input sel)
#define IR_3 0xFF09F6 // Кнопка > (vol+)
#define IR_4 0xFF29D6 // Кнопка < (vol-)
#define MUTE 0xFF41BE // Кнопка MUTE

#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;
  
void setup(){
   Serial.begin(9600);Wire.begin();irrecv.enableIRIn(); // запускаем модуль IR
   lcd.begin(16, 2);
   pinMode(13,INPUT);// КНОПКА ЭНКОДЕРA
   pinMode(11,OUTPUT); // выход управления MUTE
   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();
   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();
}

void loop(){
  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){
  if(digitalRead(13)==HIGH&&menu!=100){menu++;x++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu>1){menu=0;}}// меню
  if(x>5){menu1=1;menu=100;lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
  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;}}// меню 
  }
  if(ir.value==MUTE&&mute==0){mute=1;gr1=0;gr2=0;cl1();menu=100;menu1=0;lcd.setCursor(6,0);lcd.print("MUTE");digitalWrite(11,HIGH);}
  if(ir.value==MUTE&&mute==1){mute=0;gr1=0;gr2=0;cl1();menu=0;digitalWrite(11,LOW);} 
  
 //////////////////// 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("  VOLUME  ");
  lcd.print("  ");lcd.print(79+vol);lcd.print(" ");lcd.setCursor(14,0);lcd.print("  ");vol_d=map(abs(vol), 79,0,  0,48);
    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(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();w=1;w1=1;in_func();audio_tda();audio_pt();}
 lcd.setCursor(0,0);lcd.print("INPUT  ");
 switch(in){ // пропишите свои названия входов
      case 0: lcd.print("   AUX   "); break;
      case 1: lcd.print("   mp3   "); break;
      case 2: lcd.print("Bluetooth"); break;
      case 3: lcd.print("  radio  "); break;
      case 4: lcd.print(" - 5.1 - "); break;}}


///////////////////////////////////// Att //////////////////////////////////////////
 
 if(menu1==1){
   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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("FL  ");lcd.print(-att1);lcd.print(" dB     ");
 }

  if(menu1==2){
   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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("FR  ");lcd.print(-att2);lcd.print(" dB     ");
 }

  if(menu1==3){
   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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("CT  ");lcd.print(-att3);lcd.print(" dB     ");
 }

  if(menu1==4){
   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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SUB ");lcd.print(-att4);lcd.print(" dB     ");
 }

  if(menu1==5){
   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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SL  ");lcd.print(-att5);lcd.print(" dB     ");
 }

  if(menu1==6){
   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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SR ");lcd.print(-att6);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 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;}

57

Re: PT2323+TDA7448

Все работает и отлично работает! Если я Вам еще не сильно надоел, то появилось еще несколько вопросов:
1. Добавить аттенюатор на пульт. Вход по кнопке MODE, переключение каналов вверх и вниз кнопками CH+/-, регулировка кнопками vol+/-
2. Добавить режим ожидания (выключение и включение с пульта) - если это возможно.

Еще иногда при работе со всем этим железом при перезагрузках на дисплее появляются кракозябры - это как-то можно поправить, полагаю проблема где-то с какими-то помехами.

Итоговый на данный момент скетч:

#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

#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;
  
void setup(){
   Serial.begin(9600);Wire.begin();irrecv.enableIRIn(); // запускаем модуль IR
   lcd.begin(16, 2);
   pinMode(13,INPUT);// КНОПКА ЭНКОДЕРA
   pinMode(11,OUTPUT); // выход управления MUTE
   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();
   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();
}

void loop(){
  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){
  if(digitalRead(13)==HIGH&&menu!=100){menu++;x++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu>1){menu=0;}}// меню
  if(x>5){menu1=1;menu=100;lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
  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;}}// меню 
  }
  if(ir.value==MUTE&&mute==0){mute=1;gr1=0;gr2=0;cl1();menu=100;menu1=0;lcd.setCursor(0,0);lcd.print("      MUTE      ");digitalWrite(11,HIGH);}
  if(ir.value==MUTE&&mute==1){mute=0;gr1=0;gr2=0;cl1();menu=0;digitalWrite(11,LOW);} 
  
 //////////////////// 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("  VOLUME  ");
  lcd.print("  ");lcd.print(79+vol);lcd.print(" ");lcd.setCursor(14,0);lcd.print("  ");vol_d=map(abs(vol), 79,0,  0,48);
    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(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();w=1;w1=1;in_func();audio_tda();audio_pt();}
 lcd.setCursor(0,0);lcd.print("INPUT  ");
 switch(in){ // пропишите свои названия входов
      case 0: lcd.print("   AUX   "); break;
      case 1: lcd.print("   mp3   "); break;
      case 2: lcd.print("Bluetooth"); break;
      case 3: lcd.print("  radio  "); break;
      case 4: lcd.print(" - 5.1 - "); break;}}


///////////////////////////////////// Att //////////////////////////////////////////
 
 if(menu1==1){
   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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("FL  ");lcd.print(-att1);lcd.print(" dB     ");
 }

  if(menu1==2){
   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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("FR  ");lcd.print(-att2);lcd.print(" dB     ");
 }

  if(menu1==3){
   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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("CT  ");lcd.print(-att3);lcd.print(" dB     ");
 }

  if(menu1==4){
   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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SUB ");lcd.print(-att4);lcd.print(" dB     ");
 }

  if(menu1==5){
   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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SL  ");lcd.print(-att5);lcd.print(" dB     ");
 }

  if(menu1==6){
   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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SR ");lcd.print(-att6);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 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;}

58

Re: PT2323+TDA7448

Тестирование

1. Добавить аттенюатор на пульт. Вход по кнопке MODE, переключение каналов вверх и вниз кнопками CH+/-, регулировка кнопками vol+/-

#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

#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;
  
void setup(){
   Serial.begin(9600);Wire.begin();irrecv.enableIRIn(); // запускаем модуль IR
   lcd.begin(16, 2);
   pinMode(13,INPUT);// КНОПКА ЭНКОДЕРA
   pinMode(11,OUTPUT); // выход управления MUTE
   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();
   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();
}

void loop(){
  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){
  if(digitalRead(13)==HIGH&&menu!=100){menu++;x++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu>1){menu=0;}}// меню
  if(x>5){menu1=1;menu=100;lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
  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;}}// меню 
  
  if(ir.value==MODE){menu1=1;menu=100;cl1();lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
  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){mute=1;gr1=0;gr2=0;cl1();menu=100;menu1=0;lcd.setCursor(0,0);lcd.print("      MUTE      ");digitalWrite(11,HIGH);}
  if(ir.value==MUTE&&mute==1){mute=0;gr1=0;gr2=0;cl1();menu=0;digitalWrite(11,LOW);} 
  
 //////////////////// 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("  VOLUME  ");
  lcd.print("  ");lcd.print(79+vol);lcd.print(" ");lcd.setCursor(14,0);lcd.print("  ");vol_d=map(abs(vol), 79,0,  0,48);
    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(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();w=1;w1=1;in_func();audio_tda();audio_pt();}
 lcd.setCursor(0,0);lcd.print("INPUT  ");
 switch(in){ // пропишите свои названия входов
      case 0: lcd.print("   AUX   "); break;
      case 1: lcd.print("   mp3   "); break;
      case 2: lcd.print("Bluetooth"); break;
      case 3: lcd.print("  radio  "); break;
      case 4: lcd.print(" - 5.1 - "); break;}}


///////////////////////////////////// Att //////////////////////////////////////////
 
 if(menu1==1){
     if(ir.value==IR_3){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_4){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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("FL  ");lcd.print(-att1);lcd.print(" dB     ");
 }

  if(menu1==2){
     if(ir.value==IR_3){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_4){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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("FR  ");lcd.print(-att2);lcd.print(" dB     ");
 }

  if(menu1==3){
     if(ir.value==IR_3){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_4){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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("CT  ");lcd.print(-att3);lcd.print(" dB     ");
 }

  if(menu1==4){
     if(ir.value==IR_3){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_4){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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SUB ");lcd.print(-att4);lcd.print(" dB     ");
 }

  if(menu1==5){
     if(ir.value==IR_3){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_4){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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SL  ");lcd.print(-att5);lcd.print(" dB     ");
 }

  if(menu1==6){
     if(ir.value==IR_3){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_4){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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SR ");lcd.print(-att6);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 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;}

59

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

#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;
  
void setup(){
   Serial.begin(9600);Wire.begin();irrecv.enableIRIn(); // запускаем модуль IR
   lcd.begin(16, 2);
   pinMode(13,INPUT);// КНОПКА ЭНКОДЕРA
   pinMode(11,OUTPUT); // выход управления MUTE
   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();
   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();
}

void loop(){
  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){
  if(digitalRead(13)==HIGH&&menu!=100){menu++;x++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu>1){menu=0;}}// меню
  if(x>5){menu1=1;menu=100;lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
  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;}}// меню 
  
  if(ir.value==MODE){menu1=1;menu=100;cl1();lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
  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){mute=1;gr1=0;gr2=0;cl1();menu=100;menu1=0;lcd.setCursor(0,0);lcd.print("      MUTE      ");digitalWrite(11,HIGH);}
  if(ir.value==MUTE&&mute==1){mute=0;gr1=0;gr2=0;cl1();menu=0;digitalWrite(11,LOW);} 
  
 //////////////////// 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("  VOLUME  ");
  lcd.print("  ");lcd.print(79+vol);lcd.print(" ");lcd.setCursor(14,0);lcd.print("  ");vol_d=map(abs(vol), 79,0,  0,48);
    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(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();w=1;w1=1;in_func();audio_tda();audio_pt();}
 lcd.setCursor(0,0);lcd.print("INPUT  ");
 switch(in){ // пропишите свои названия входов
      case 0: lcd.print("   AUX   "); break;
      case 1: lcd.print("   mp3   "); break;
      case 2: lcd.print("Bluetooth"); break;
      case 3: lcd.print("  radio  "); break;
      case 4: lcd.print(" - 5.1 - "); break;}}


///////////////////////////////////// Att //////////////////////////////////////////
 
 if(menu1==1){
     if(ir.value==IR_3){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_4){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(" ATTENUATOR     ");
   lcd.setCursor(0,1);lcd.print(" FL  ");lcd.print(-att1);lcd.print(" dB     ");
 }

  if(menu1==2){
     if(ir.value==IR_3){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_4){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(" ATTENUATOR     ");
   lcd.setCursor(0,1);lcd.print(" FR  ");lcd.print(-att2);lcd.print(" dB     ");
 }

  if(menu1==3){
     if(ir.value==IR_3){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_4){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(" ATTENUATOR     ");
   lcd.setCursor(0,1);lcd.print(" CT  ");lcd.print(-att3);lcd.print(" dB     ");
 }

  if(menu1==4){
     if(ir.value==IR_3){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_4){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(" ATTENUATOR     ");
   lcd.setCursor(0,1);lcd.print(" SUB ");lcd.print(-att4);lcd.print(" dB     ");
 }

  if(menu1==5){
     if(ir.value==IR_3){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_4){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(" ATTENUATOR     ");
   lcd.setCursor(0,1);lcd.print(" SL  ");lcd.print(-att5);lcd.print(" dB     ");
 }

  if(menu1==6){
     if(ir.value==IR_3){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_4){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(" ATTENUATOR     ");
   lcd.setCursor(0,1);lcd.print(" SR  ");lcd.print(-att6);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 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;}

60

Re: PT2323+TDA7448

Были перепутаны кнопки регулировки громкости на аттенюаторе.

В этих строка стоит защита от перебора, Вы убавляете параметр, а защита стоит на прибавление


     if(ir.value==IR_3){att1--;gr1=1;gr2=0;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка >

Надо было просто поменять местами коды пульта.

#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

#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;
  
void setup(){
   Serial.begin(9600);Wire.begin();irrecv.enableIRIn(); // запускаем модуль IR
   lcd.begin(16, 2);
   pinMode(13,INPUT);// КНОПКА ЭНКОДЕРA
   pinMode(11,OUTPUT); // выход управления MUTE
   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();
   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();
}

void loop(){
  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){
  if(digitalRead(13)==HIGH&&menu!=100){menu++;x++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu>1){menu=0;}}// меню
  if(x>5){menu1=1;menu=100;lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
  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;}}// меню 
  
  if(ir.value==MODE){menu1=1;menu=100;cl1();lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
  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){mute=1;gr1=0;gr2=0;cl1();menu=100;menu1=0;lcd.setCursor(0,0);lcd.print("      MUTE      ");digitalWrite(11,HIGH);}
  if(ir.value==MUTE&&mute==1){mute=0;gr1=0;gr2=0;cl1();menu=0;digitalWrite(11,LOW);} 
  
 //////////////////// 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("  VOLUME  ");
  lcd.print("  ");lcd.print(79+vol);lcd.print(" ");lcd.setCursor(14,0);lcd.print("  ");vol_d=map(abs(vol), 79,0,  0,48);
    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(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();w=1;w1=1;in_func();audio_tda();audio_pt();}
 lcd.setCursor(0,0);lcd.print("INPUT  ");
 switch(in){ // пропишите свои названия входов
      case 0: lcd.print("   AUX   "); break;
      case 1: lcd.print("   mp3   "); break;
      case 2: lcd.print("Bluetooth"); break;
      case 3: lcd.print("  radio  "); break;
      case 4: lcd.print(" - 5.1 - "); break;}}


///////////////////////////////////// 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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("FL  ");lcd.print(-att1);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("FR  ");lcd.print(-att2);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("CT  ");lcd.print(-att3);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SUB ");lcd.print(-att4);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SL  ");lcd.print(-att5);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SR ");lcd.print(-att6);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 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;}

61

Re: PT2323+TDA7448

Тестирование Standby

Что за кнопка RESET, для перезагрузки? Если у Вас подвиснет ардуино, то эта кнопка не будет работать.

#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

#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;
  
void setup(){
   Serial.begin(9600);Wire.begin();irrecv.enableIRIn(); // запускаем модуль IR
   lcd.begin(16, 2);
   pinMode(13,INPUT);// КНОПКА ЭНКОДЕРA
   pinMode(11,OUTPUT); // выход управления MUTE
   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();
   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();
}

void loop(){
  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;}}// меню
  if(x>5){menu1=1;menu=100;lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
  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;}}// меню 
  
  if(ir.value==MODE){menu1=1;menu=100;cl1();lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
  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;cl();menu=100;menu1=0;lcd.setCursor(0,0);lcd.print("      MUTE      ");digitalWrite(11,HIGH);}
  if(ir.value==MUTE&&mute==1 && power==0){mute=0;gr1=0;gr2=0;cl();menu=0;digitalWrite(11,LOW);} 
//// POWER 
  if(power==1){digitalWrite(11,HIGH);}else{digitalWrite(11,LOW);}
  if(ir.value==STBY&&power==0){power=1;gr1=0;gr2=0;cl();menu=100;menu1=0;analogWrite(6,LOW);lcd.setCursor(4,0);lcd.print("POWER OFF");delay(2000);cl();}  
  if(ir.value==STBY&&power==1){power=0;gr1=0;gr2=0;cl();menu=0;analogWrite(6,HIGH);cl();lcd.setCursor(4,0);lcd.print("POWER  ON");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("  VOLUME  ");
  lcd.print("  ");lcd.print(79+vol);lcd.print(" ");lcd.setCursor(14,0);lcd.print("  ");vol_d=map(abs(vol), 79,0,  0,48);
    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(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();w=1;w1=1;in_func();audio_tda();audio_pt();}
 lcd.setCursor(0,0);lcd.print("INPUT  ");
 switch(in){ // пропишите свои названия входов
      case 0: lcd.print("   AUX   "); break;
      case 1: lcd.print("   mp3   "); break;
      case 2: lcd.print("Bluetooth"); break;
      case 3: lcd.print("  radio  "); break;
      case 4: lcd.print(" - 5.1 - "); break;}}


///////////////////////////////////// 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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("FL  ");lcd.print(-att1);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("FR  ");lcd.print(-att2);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("CT  ");lcd.print(-att3);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SUB ");lcd.print(-att4);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SL  ");lcd.print(-att5);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SR ");lcd.print(-att6);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 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;}

62 (2022-01-09 15:20:38 отредактировано Dapox11)

Re: PT2323+TDA7448

liman324 пишет:

Что за кнопка RESET, для перезагрузки?

Не знаю, просто добавил на будущее

ВЫКЛючение работает, только подсветка дисплея не гаснет, потому что напрямую от ардуинки запитано. Можно на свободный 12й контакт повесить и вообще добавить регулировку подсветки с пульта - кнопки еще есть))

А вот ВКЛючение работает, но с белибердой на экране

http://forum.rcl-radio.ru/uploads/images/2022/01/bf51624711278f59604ba0b541176354.jpg http://forum.rcl-radio.ru/uploads/images/2022/01/b5e606e6b7592dcff84ff5361350e449.jpg http://forum.rcl-radio.ru/uploads/images/2022/01/b422be30630d7cb8bd3a4e625f5cab30.jpg

63

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

#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;
  
void setup(){
   Serial.begin(9600);Wire.begin();irrecv.enableIRIn(); // запускаем модуль IR
   lcd.begin(16, 2);
   pinMode(13,INPUT);// КНОПКА ЭНКОДЕРA
   pinMode(11,OUTPUT); // выход управления MUTE
   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();
   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();
}

void loop(){
  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;}}// меню
  if(x>5){menu1=1;menu=100;lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
  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;}}// меню 
  
  if(ir.value==MODE){menu1=1;menu=100;cl1();lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
  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;cl();menu=100;menu1=0;lcd.setCursor(0,0);lcd.print("      MUTE      ");digitalWrite(11,HIGH);}
  if(ir.value==MUTE&&mute==1 && power==0){mute=0;gr1=0;gr2=0;cl();menu=0;digitalWrite(11,LOW);} 
//// POWER 
  if(power==1){digitalWrite(11,HIGH);}else{digitalWrite(11,LOW);}
  if(ir.value==STBY&&power==0){power=1;gr1=0;gr2=0;cl();menu=100;menu1=0;lcd.setCursor(4,0);lcd.print("POWER OFF");delay(2000);cl();}  
  if(ir.value==STBY&&power==1){power=0;gr1=0;gr2=0;cl();menu=0;cl();lcd.setCursor(4,0);lcd.print("POWER  ON");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("  VOLUME  ");
  lcd.print("  ");lcd.print(79+vol);lcd.print(" ");lcd.setCursor(14,0);lcd.print("  ");vol_d=map(abs(vol), 79,0,  0,48);
    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(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();w=1;w1=1;in_func();audio_tda();audio_pt();}
 lcd.setCursor(0,0);lcd.print("INPUT  ");
 switch(in){ // пропишите свои названия входов
      case 0: lcd.print("   AUX   "); break;
      case 1: lcd.print("   mp3   "); break;
      case 2: lcd.print("Bluetooth"); break;
      case 3: lcd.print("  radio  "); break;
      case 4: lcd.print(" - 5.1 - "); break;}}


///////////////////////////////////// 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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("FL  ");lcd.print(-att1);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("FR  ");lcd.print(-att2);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("CT  ");lcd.print(-att3);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SUB ");lcd.print(-att4);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SL  ");lcd.print(-att5);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SR ");lcd.print(-att6);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 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;}

64

Re: PT2323+TDA7448

Для управления подсветкой нужно ставить транзисторный ключ или использовать питание подсветки от пина ардуино, но нужно ограничить ток подсветки до 20 мА, подберите резистор 200-500 Ом для подсветки, что бы ток подсветки был не более 20 мА (можно и до 40 мА, но это уже предел).

65

Re: PT2323+TDA7448

Можно сделать регулируемую яркость подсветки, но нужен ШИМ, ШИМ работает на пинах 9, 10, 11, но они у Вас заняты, можно перекинуть MUTE на A0.

66 (2022-01-09 15:39:02 отредактировано Dapox11)

Re: PT2323+TDA7448

ВКЛючение теперь все ОК.

Плюс питания подсветки дисплея сейчас подключен через 1кОм

С добавлением включения MUTE перестал работать, только сейчас заметил
MUTE можно без проблем перекинуть, а почему на A0, а не на D12? Я не придираюсь, интересно для общего развития))

67

Re: PT2323+TDA7448

Сейчас Mute должно работать, так же проверьте в режиме STBY mute тоже должно срабатывать.

#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

#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;
  
void setup(){
   Serial.begin(9600);Wire.begin();irrecv.enableIRIn(); // запускаем модуль IR
   lcd.begin(16, 2);
   pinMode(13,INPUT);// КНОПКА ЭНКОДЕРA
   pinMode(11,OUTPUT); // выход управления MUTE
   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();
   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();
}

void loop(){
  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;}}// меню
  if(x>5){menu1=1;menu=100;lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
  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;}}// меню 
  
  if(ir.value==MODE){menu1=1;menu=100;cl1();lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
  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;cl();menu=100;menu1=0;lcd.setCursor(0,0);lcd.print("      MUTE      ");digitalWrite(11,HIGH);}
  if(ir.value==MUTE&&mute==1 && power==0){mute=0;gr1=0;gr2=0;cl();menu=0;digitalWrite(11,LOW);} 
//// POWER 
  if(ir.value==STBY&&power==0){power=1;gr1=0;gr2=0;cl();menu=100;menu1=0;lcd.setCursor(4,0);lcd.print("POWER OFF");digitalWrite(11,LOW);delay(2000);cl();}  
  if(ir.value==STBY&&power==1){power=0;gr1=0;gr2=0;cl();menu=0;cl();lcd.setCursor(4,0);lcd.print("POWER  ON");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("  VOLUME  ");
  lcd.print("  ");lcd.print(79+vol);lcd.print(" ");lcd.setCursor(14,0);lcd.print("  ");vol_d=map(abs(vol), 79,0,  0,48);
    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(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();w=1;w1=1;in_func();audio_tda();audio_pt();}
 lcd.setCursor(0,0);lcd.print("INPUT  ");
 switch(in){ // пропишите свои названия входов
      case 0: lcd.print("   AUX   "); break;
      case 1: lcd.print("   mp3   "); break;
      case 2: lcd.print("Bluetooth"); break;
      case 3: lcd.print("  radio  "); break;
      case 4: lcd.print(" - 5.1 - "); break;}}


///////////////////////////////////// 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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("FL  ");lcd.print(-att1);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("FR  ");lcd.print(-att2);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("CT  ");lcd.print(-att3);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SUB ");lcd.print(-att4);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SL  ");lcd.print(-att5);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SR ");lcd.print(-att6);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 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;}

68

Re: PT2323+TDA7448

MUTE можно без проблем перекинуть, а почему на A0, а не на D12?

Можно и D12, я просто посчитал что этот пин занят.

69

Re: PT2323+TDA7448

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

70

Re: PT2323+TDA7448

Все работает, только звук не выключался при выключении, но выключался при включении (HIGH и LOW были перепутаны). Сделал так, все заработало:

//// POWER 
  if(ir.value==STBY&&power==0){power=1;gr1=0;gr2=0;cl();menu=100;menu1=0;lcd.setCursor(4,0);lcd.print("POWER OFF");digitalWrite(11,HIGH);delay(2000);cl();}  
  if(ir.value==STBY&&power==1){power=0;gr1=0;gr2=0;cl();menu=0;cl();lcd.setCursor(4,0);lcd.print("POWER  ON");digitalWrite(11,LOW);delay(2000);cl();} 
liman324 пишет:

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

Отключение в режиме STBY точно нужно! А вот про регулировку не уверен - думал просто ее тусклее делать вечером, чтобы в глаза на светила, но она и так не сильно яркая)

71

Re: PT2323+TDA7448

Я поправил MUTE
Перенес выход MUTE на D12
D11 выход питания подсветки, это ШИМ подсветка, можете установить яркость от 0 до 255:
#define BRIG_H 250 // в обычном режиме
#define BRIG_L 0     // в режиме STBY

#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 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;
  
void setup(){
   Serial.begin(9600);Wire.begin();irrecv.enableIRIn(); // запускаем модуль IR
   lcd.begin(16, 2);
   pinMode(13,INPUT);    // КНОПКА ЭНКОДЕРA
   pinMode(12,OUTPUT);   // выход управления MUTE
   pinMode(11,OUTPUT);   // PWM output
   analogWrite(11,BRIG_H);
   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();
   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();
   digitalWrite(12,HIGH);
}

void loop(){
  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;}}// меню
  if(x>5){menu1=1;menu=100;lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
  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;}}// меню 
  
  if(ir.value==MODE){menu1=1;menu=100;cl1();lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
  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;cl();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;cl();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(4,0);lcd.print("POWER OFF");digitalWrite(12,LOW);analogWrite(11,BRIG_L);delay(2000);cl();}  
  if(ir.value==STBY&&power==1){power=0;gr1=0;gr2=0;cl();menu=0;cl();lcd.setCursor(4,0);lcd.print("POWER  ON");digitalWrite(12,HIGH);analogWrite(11,BRIG_H);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("  VOLUME  ");
  lcd.print("  ");lcd.print(79+vol);lcd.print(" ");lcd.setCursor(14,0);lcd.print("  ");vol_d=map(abs(vol), 79,0,  0,48);
    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(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();w=1;w1=1;in_func();audio_tda();audio_pt();}
 lcd.setCursor(0,0);lcd.print("INPUT  ");
 switch(in){ // пропишите свои названия входов
      case 0: lcd.print("   AUX   "); break;
      case 1: lcd.print("   mp3   "); break;
      case 2: lcd.print("Bluetooth"); break;
      case 3: lcd.print("  radio  "); break;
      case 4: lcd.print(" - 5.1 - "); break;}}


///////////////////////////////////// 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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("FL  ");lcd.print(-att1);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("FR  ");lcd.print(-att2);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("CT  ");lcd.print(-att3);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SUB ");lcd.print(-att4);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SL  ");lcd.print(-att5);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SR ");lcd.print(-att6);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 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;}

72 (2022-01-09 17:12:46 отредактировано Dapox11)

Re: PT2323+TDA7448

Подсветка не работает, не появляются +5В на 11-м контакте
И при включении на 12-м контакте сразу 5В (сразу включен MUTE), звук включается двойным нажатием на MUTE пульта)

Если изменить параметр на digitalWrite(11,LOW) и digitalWrite(11,HIGH), то все включается без подсветки и так же после двойного нажатия STBY все работает нормально

73

Re: PT2323+TDA7448

MUTE поправил

Подсветку экрана к D11 подключали?

#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 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;
  
void setup(){
   Serial.begin(9600);Wire.begin();irrecv.enableIRIn(); // запускаем модуль IR
   lcd.begin(16, 2);
   pinMode(13,INPUT);    // КНОПКА ЭНКОДЕРA
   pinMode(12,OUTPUT);   // выход управления MUTE
   pinMode(11,OUTPUT);   // PWM output
   analogWrite(11,BRIG_H);
   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();
   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();
   digitalWrite(12,LOW);
}

void loop(){
  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;}}// меню
  if(x>5){menu1=1;menu=100;lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
  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;}}// меню 
  
  if(ir.value==MODE){menu1=1;menu=100;cl1();lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
  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;cl();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;cl();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(4,0);lcd.print("POWER OFF");digitalWrite(12,LOW);analogWrite(11,BRIG_L);delay(2000);cl();}  
  if(ir.value==STBY&&power==1){power=0;gr1=0;gr2=0;cl();menu=0;cl();lcd.setCursor(4,0);lcd.print("POWER  ON");digitalWrite(12,HIGH);analogWrite(11,BRIG_H);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("  VOLUME  ");
  lcd.print("  ");lcd.print(79+vol);lcd.print(" ");lcd.setCursor(14,0);lcd.print("  ");vol_d=map(abs(vol), 79,0,  0,48);
    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(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();w=1;w1=1;in_func();audio_tda();audio_pt();}
 lcd.setCursor(0,0);lcd.print("INPUT  ");
 switch(in){ // пропишите свои названия входов
      case 0: lcd.print("   AUX   "); break;
      case 1: lcd.print("   mp3   "); break;
      case 2: lcd.print("Bluetooth"); break;
      case 3: lcd.print("  radio  "); break;
      case 4: lcd.print(" - 5.1 - "); break;}}


///////////////////////////////////// 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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("FL  ");lcd.print(-att1);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("FR  ");lcd.print(-att2);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("CT  ");lcd.print(-att3);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SUB ");lcd.print(-att4);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SL  ");lcd.print(-att5);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SR ");lcd.print(-att6);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 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;}

74

Re: PT2323+TDA7448

liman324 пишет:

Подсветку экрана к D11 подключали?

Да, если подать команду digitalWrite(11,HIGH), то включается

75

Re: PT2323+TDA7448

Немного разобрался, ШИМ работать на этом пине не будет, так как он занят таймером 2

Тогда просто включение и выключение подсветки

#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

#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;
  
void setup(){
   Serial.begin(9600);Wire.begin();irrecv.enableIRIn(); // запускаем модуль IR
   lcd.begin(16, 2);
   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();
   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();
   digitalWrite(12,LOW);
}

void loop(){
  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;}}// меню
  if(x>5){menu1=1;menu=100;lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
  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;}}// меню 
  
  if(ir.value==MODE){menu1=1;menu=100;cl1();lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
  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;cl();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;cl();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(4,0);lcd.print("POWER OFF");digitalWrite(12,LOW);digitalWrite(11,LOW);delay(2000);cl();}  
  if(ir.value==STBY&&power==1){power=0;gr1=0;gr2=0;cl();menu=0;cl();lcd.setCursor(4,0);lcd.print("POWER  ON");digitalWrite(12,HIGH);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("  VOLUME  ");
  lcd.print("  ");lcd.print(79+vol);lcd.print(" ");lcd.setCursor(14,0);lcd.print("  ");vol_d=map(abs(vol), 79,0,  0,48);
    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(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();w=1;w1=1;in_func();audio_tda();audio_pt();}
 lcd.setCursor(0,0);lcd.print("INPUT  ");
 switch(in){ // пропишите свои названия входов
      case 0: lcd.print("   AUX   "); break;
      case 1: lcd.print("   mp3   "); break;
      case 2: lcd.print("Bluetooth"); break;
      case 3: lcd.print("  radio  "); break;
      case 4: lcd.print(" - 5.1 - "); break;}}


///////////////////////////////////// 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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("FL  ");lcd.print(-att1);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("FR  ");lcd.print(-att2);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("CT  ");lcd.print(-att3);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SUB ");lcd.print(-att4);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SL  ");lcd.print(-att5);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(1,0);lcd.print("ATTENUATOR");
   lcd.setCursor(1,1);lcd.print("SR ");lcd.print(-att6);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 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;}