176

Re: PT2323+TDA7448

Сегодня вечером все еще раз посмотрю и вам отпишусь

177 (2022-04-23 22:18:31 отредактировано nora11)

Re: PT2323+TDA7448

Залил скетч последний. Появляется надпись POWER OFF, потом POWER ON и так по кругу и все...

1.По поводу режима 2.1. Работают только фронты и саб. НО можно этот режим вообще пропустить и с кнопкой OUT  тоже не заморачиваться. Главное, что бы был выход полноценного 5.1 и все...
2. что означает эта строка "........ // кнопка >>>>>>", о какой кнопке речь? И код какой кнопки там надо вставить?
3. Регулировки каналов левый правый тоже не нужна. Ее нет в оригинале и реализовано как вы и написали. Только там отображается уровень от -7 через ноль к +7.
4."...pinMode(13,INPUT_PULLUP); // STANDBY" у меня эта кнопка на 11 ноге

178

Re: PT2323+TDA7448

Появляется надпись POWER OFF, потом POWER ON и так по кругу и все...

У меня собрана схема, все работает без проблем. Замыкаю D13 на GND и функция power работает.

179

Re: PT2323+TDA7448

что означает эта строка "........ // кнопка >>>>>>", о какой кнопке речь? И код какой кнопки там надо вставить?

Это удержание кнопки пульта, там уже стоит код кнопки общий для всех пультов. Коды кнопок пульта вынесены в начало скетча.

4."...pinMode(13,INPUT_PULLUP); // STANDBY" у меня эта кнопка на 11 ноге

На D11 кнопка энкодера, D13 - power. Но это не принципиально, можно изменить подключение как Вам удобно.

180

Re: PT2323+TDA7448

Еще раз перезалил. Тоже самое...постоянная перезагрузка.
Энкодер у меня без кнопки.
Коды кнопок у меня свои.

181

Re: PT2323+TDA7448

Еще раз перезалил. Тоже самое...постоянная перезагрузка.
Энкодер у меня без кнопки.
Коды кнопок у меня свои.

Что у Вас подключено к D13?

182

Re: PT2323+TDA7448

ничего

183

Re: PT2323+TDA7448

Закоментил все строчки,где есть ссылка на 13 ногу и перезагрузка прекратилась

184

Re: PT2323+TDA7448

Вот новый код, укажите в нем новый пин для кнопки POWER

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

#define ENCODER    11      // BUTTON ENCODER
#define MUTE       12      // BUTTON MUTE
#define IN         10      // BUTTON INPUT
#define POWER      13      // BUTTON POWER
#define STAND_OUT   3      // OUTPUT STANDBY


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

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

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

185

Re: PT2323+TDA7448

Проект фактически закончен, все кнопки пульта кроме OUTPUT добавлены, все функции работают, остается только протестировать.

Предлагаю кнопку пульта OUTPUT заменить на регулировку MIDDLE

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

#define ENCODER    11      // BUTTON ENCODER
#define MUTE       12      // BUTTON MUTE
#define IN         10      // BUTTON INPUT
#define POWER      13      // BUTTON POWER
#define STAND_OUT   3      // OUTPUT STANDBY


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

  
    } // mute
  
  if((digitalRead(MUTE)==LOW || ir.value==IR2) && mute==0){mute=1;menu=100;g1=0;g2=0;cl1();time=millis();w=1;w1=1;audio();lcd.setCursor(6,0);lcd.print("MUTE");delay(500);}
  if((digitalRead(MUTE)==LOW || ir.value==IR2) && mute==1){mute=0;menu=0;  g1=0;g2=0;cl1();time=millis();w=1;w1=1;audio();}
 }// power
  if((digitalRead(POWER)==LOW || ir.value==IR7) && power==0){power=1;menu=100;g1=0;g2=0;cl1();time=millis();w=1;w1=1;mute=1;audio();lcd.setCursor(3,0);lcd.print("POWER OFF");delay(1000);lcd.noBacklight();}
  if((digitalRead(POWER)==LOW || ir.value==IR7) && power==1){power=0;menu=0;  g1=0;g2=0;cl1();time=millis();w=1;w1=1;mute=0;audio();lcd.backlight();lcd.setCursor(3,0);lcd.print("POWER ON ");delay(1000);cl1();}

  if(mute==1||power==1){digitalWrite(STAND_OUT,HIGH);}else{digitalWrite(STAND_OUT,LOW);}// standby out pin D3
  
  if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);time=millis();w=1;w1=1;irrecv.resume();}// IR приемник  
  
   
 //////////////////////////////////////// Громкость -79...0 дБ //////////////////////////////////////
 if(menu==0){   
     if(ir.value==IR5){vol++;g1=1;g2=0;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка VOL+  0xFFA857
     if(ir.value==0xFFFFFFFF and g1==1){vol++;g2=0;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка >>>>>>
     if(ir.value==IR6){vol--;g1=0;g2=1;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){vol--;g1=0;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;vol_conf();audio();}
  lcd.setCursor(0,0);lcd.print("VOLUME ");
  lcd.print(-79+vol);lcd.print(" ");lcd.setCursor(10,0);lcd.print("dB");vol_d=map(vol, 0,79, 0, 48);
  switch(in){
    case 0: lcd.print(" IN");lcd.print(in+1);break;
    case 1: lcd.print(" IN");lcd.print(in+1);break;
    case 2: lcd.print(" IN");lcd.print(in+1);break;
    case 3: lcd.print(" IN");lcd.print(in+1);break;
    case 4: lcd.print(" 6CH");break;
  }
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=vol_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}}}
   
 //////////////////////////////////////// Тембр НЧ +-14 дБ //////////////////////////////////////
 if(menu==1){
     if(ir.value==IR5){bass++;g1=1;g2=0;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){bass++;g2=0;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка >>>>>>
     if(ir.value==IR6){bass--;g1=0;g2=1;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){bass--;g1=0;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    bass=bass+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;bass_conf();audio();}
  lcd.setCursor(0,0);lcd.print("BASS    ");
  lcd.print(" ");lcd.print(bass);lcd.print(" ");lcd.setCursor(13,0);bass_d=(bass+7)*2;
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=bass_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
   
 //////////////////////////////////////// Тембр CЧ +-14 дБ //////////////////////////////////////
 if(menu==2){
     if(ir.value==IR5){mid++;g1=1;g2=0;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){mid++;g2=0;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка >>>>>>
     if(ir.value==IR6){mid--;g1=0;g2=1;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){mid--;g1=0;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    mid=mid+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;mid_conf();audio();}
  lcd.setCursor(0,0);lcd.print("MIDDLE  ");
  lcd.print(" ");lcd.print(mid);lcd.print(" ");lcd.setCursor(13,0);mid_d=(mid+7)*2;
  if(w1==1){w1=0; 
   for(z=0,z0=0,z1=0;z<=mid_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("   ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}} 
   
 //////////////////////////////////////// Тембр BЧ +-14 дБ //////////////////////////////////////
 if(menu==3){
     if(ir.value==IR5){treb++;g1=1;g2=0;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){treb++;g2=0;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка >>>>>>
     if(ir.value==IR6){treb--;g1=0;g2=1;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){treb--;g1=0;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    treb=treb+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;treb_conf();audio();}
  lcd.setCursor(0,0);lcd.print("TREBLE  ");
  lcd.print(" ");lcd.print(treb);lcd.print(" ");lcd.setCursor(13,0);treb_d=(treb+7)*2;
  if(w1==1){w1=0;  
   for(z=0,z0=0,z1=0;z<=treb_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}    
   
   //////////////////////////////////// rock pop classic //////////////////////      
  if(menu==4){
     if(ir.value==IR5){tembro++;g1=1;g2=0;cl();time=millis();w=1;w1=1;tembr();audio();}// кнопка VOL+
     if(ir.value==IR6){tembro--;g1=0;g2=1;cl();time=millis();w=1;w1=1;tembr();audio();}// кнопка VOL-
     if (newPosition != oldPosition) {
    oldPosition = newPosition;
    tembro=tembro+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;tembr();}
    if(w1==1){w1=0;
    lcd.setCursor(0,0);lcd.print(" Preset timbre  ");
    if(tembro==0){lcd.setCursor(0,1);lcd.print("  manual mode  ");}
    if(tembro==1){lcd.setCursor(0,1);lcd.print("      ROCK     ");bass=4,mid=-2;treb=5;x=1;}
    if(tembro==2){lcd.setCursor(0,1);lcd.print("      POP      ");bass=-3,mid=3;treb=-2;x=1;}
    if(tembro==3){lcd.setCursor(0,1);lcd.print("    CLASSIC    ");bass=0,mid=0;treb=-2;x=1;}
    if(tembro==4){lcd.setCursor(0,1);lcd.print("    default    ");bass=0,mid=0;treb=0;x=1;}
    if(x==1){audio();x=0;}
  }}
   
  /////////////////////// ATT FRONT ///////////////////
   if(menu==5){
     if(ir.value==IR5){att_front++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_front_conf();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){att_front++;g2=0;cl();time=millis();w=1;w1=1;att_front_conf();audio();}// кнопка >>>>>>
     if(ir.value==IR6){att_front--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_front_conf();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){att_front--;g1=0;cl();time=millis();w=1;w1=1;att_front_conf();audio();}// кнопка <<<<<<   
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    att_front=att_front+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_front_conf();audio();}
  lcd.setCursor(0,0);lcd.print("ATT FRONT ");
  lcd.print(att_front);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attfl_d=(att_front+14)*2;
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=attfl_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}

     
  /////////////////////// ATT RAER ///////////////////
  if(menu==6){
     if(ir.value==IR5){att_rear++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_rear_conf();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){att_rear++;g2=0;cl();time=millis();w=1;w1=1;att_rear_conf();audio();}// кнопка >>>>>>
     if(ir.value==IR6){att_rear--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_rear_conf();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){att_rear--;g1=0;cl();time=millis();w=1;w1=1;att_rear_conf();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    att_rear=att_rear+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_rear_conf();audio();}
  lcd.setCursor(0,0);lcd.print("ATT REAR  ");
  lcd.print(att_rear);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");atttl_d=(att_rear+14)*2;
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=atttl_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
    
    
 /////////////////////// ATT CN ///////////////////
    if(menu==7){
     if(ir.value==IR5){attcn++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attcn++;g2=0;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка >>>>>>
     if(ir.value==IR6){attcn--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attcn--;g1=0;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attcn=attcn+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_cn();audio();}
  lcd.setCursor(0,0);lcd.print("ATT CN   ");
  lcd.print(" ");lcd.print(attcn);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attcn_d=(attcn+14)*2;
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=attcn_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
     
  /////////////////////// ATT SUB ///////////////////
     if(menu==8){
     if(ir.value==IR5){attsub++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attsub++;g2=0;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка >>>>>>
     if(ir.value==IR6){attsub--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attsub--;g1=0;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attsub=attsub+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_sub();audio();}
  lcd.setCursor(0,0);lcd.print("ATT SUB  ");
  lcd.print(" ");lcd.print(attsub);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attsub_d=(attsub+14)*2;
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=attsub_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}  
   
  //////////////////////////// 3d ///////////////////////////////////////////////
 if(menu==9){
   if (newPosition != oldPosition) {
    oldPosition = newPosition;
    ddd=ddd+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;ddd_conf();audio();}
   lcd.setCursor(0,0);lcd.print("    Surround    "); 
   lcd.setCursor(0,1);if(ddd==0){lcd.print("     3D  ON  ");}else{lcd.print("     3D  OFF  ");}}  

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

186

Re: PT2323+TDA7448

и так...
1. ПРАКТИЧЕСКИ ВСЕ РАБОТАЕТ!!!!!!!
2. Я немного изменил по кнопке POWER и все работает. (я закоментил строки управляющие кнопкой энкодера)
3.При нажатии на пульте кнопки FRONT или REAR режим не включается. Режим SUB включается.
4.Можно увеличить время при переключении режимов входа? ЧТо бы не переключалось на громкость после каждого нажатия. Сделать как при выборе режимов эквалайзера.
5. Вы знаеет регулировка средних не принципиальна. Хватает экавалйзера. Думаю не стоит заморачиваться.

187

Re: PT2323+TDA7448

У меня нет физически входа "case 3". Сложно сделать, чтобы он пропускался при выборе входов?

188

Re: PT2323+TDA7448

Я хочу подключить блютуз трансмитер для наушников,я думаю кнопка OUT  на пульте будет как раз к месту

189

Re: PT2323+TDA7448

2. Я немного изменил по кнопке POWER и все работает. (я закоментил строки управляющие кнопкой энкодера)

Не нужно закоментрировать строки, просто укажите пин который Вы хотите использовать:

#define ENCODER    11      // BUTTON ENCODER
#define MUTE       12      // BUTTON MUTE
#define IN         10      // BUTTON INPUT
#define POWER      13      // BUTTON POWER
#define STAND_OUT   3      // OUTPUT STANDBY

3.При нажатии на пульте кнопки FRONT или REAR режим не включается. Режим SUB включается.

У меня все работает, при нажатии на эти кнопки происходит переход в соотведствующее меню и регулировка осуществляется кнопками  громкости

4.Можно увеличить время при переключении режимов входа? ЧТо бы не переключалось на громкость после каждого нажатия.

Не совсем понял вопрос, увеличить время индикации при выборе входа? Совсем убрать возврат в меню громкости не возможно, у Вас в пульте нет перехода в меню громкости.

У меня нет физически входа "case 3". Сложно сделать, чтобы он пропускался при выборе входов?

Подумаю как это сделать

190

Re: PT2323+TDA7448

Убрал не задействованный вход, увеличил время индикации выбора входа

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

#define ENCODER    11      // BUTTON ENCODER
#define MUTE       12      // BUTTON MUTE
#define IN         10      // BUTTON INPUT
#define POWER      13      // BUTTON POWER
#define STAND_OUT   3      // OUTPUT STANDBY


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

  
    } // mute
  
  if((digitalRead(MUTE)==LOW || ir.value==IR2) && mute==0){mute=1;menu=100;g1=0;g2=0;cl1();time=millis();w=1;w1=1;audio();lcd.setCursor(6,0);lcd.print("MUTE");delay(500);}
  if((digitalRead(MUTE)==LOW || ir.value==IR2) && mute==1){mute=0;menu=0;  g1=0;g2=0;cl1();time=millis();w=1;w1=1;audio();}
 }// power
  if((digitalRead(POWER)==LOW || ir.value==IR7) && power==0){power=1;menu=100;g1=0;g2=0;cl1();time=millis();w=1;w1=1;mute=1;audio();lcd.setCursor(3,0);lcd.print("POWER OFF");delay(1000);lcd.noBacklight();}
  if((digitalRead(POWER)==LOW || ir.value==IR7) && power==1){power=0;menu=0;  g1=0;g2=0;cl1();time=millis();w=1;w1=1;mute=0;audio();lcd.backlight();lcd.setCursor(3,0);lcd.print("POWER ON ");delay(1000);cl1();}

  if(mute==1||power==1){digitalWrite(STAND_OUT,HIGH);}else{digitalWrite(STAND_OUT,LOW);}// standby out pin D3
  
  if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);time=millis();w=1;w1=1;irrecv.resume();}// IR приемник  
  
   
 //////////////////////////////////////// Громкость -79...0 дБ //////////////////////////////////////
 if(menu==0){   
     if(ir.value==IR5){vol++;g1=1;g2=0;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка VOL+  0xFFA857
     if(ir.value==0xFFFFFFFF and g1==1){vol++;g2=0;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка >>>>>>
     if(ir.value==IR6){vol--;g1=0;g2=1;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){vol--;g1=0;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;vol_conf();audio();}
  lcd.setCursor(0,0);lcd.print("VOLUME ");
  lcd.print(-79+vol);lcd.print(" ");lcd.setCursor(10,0);lcd.print("dB");vol_d=map(vol, 0,79, 0, 48);
  switch(in){
    case 0: lcd.print(" IN");lcd.print(in+1);break;
    case 1: lcd.print(" IN");lcd.print(in+1);break;
    case 2: lcd.print(" IN");lcd.print(in+1);break;
    case 3: lcd.print(" IN");lcd.print(in+1);break;
    case 4: lcd.print(" 6CH");break;
  }
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=vol_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}}}
   
 //////////////////////////////////////// Тембр НЧ +-14 дБ //////////////////////////////////////
 if(menu==1){
     if(ir.value==IR5){bass++;g1=1;g2=0;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){bass++;g2=0;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка >>>>>>
     if(ir.value==IR6){bass--;g1=0;g2=1;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){bass--;g1=0;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    bass=bass+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;bass_conf();audio();}
  lcd.setCursor(0,0);lcd.print("BASS    ");
  lcd.print(" ");lcd.print(bass);lcd.print(" ");lcd.setCursor(13,0);bass_d=(bass+7)*2;
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=bass_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
   
 //////////////////////////////////////// Тембр CЧ +-14 дБ //////////////////////////////////////
 if(menu==2){
     if(ir.value==IR5){mid++;g1=1;g2=0;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){mid++;g2=0;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка >>>>>>
     if(ir.value==IR6){mid--;g1=0;g2=1;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){mid--;g1=0;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    mid=mid+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;mid_conf();audio();}
  lcd.setCursor(0,0);lcd.print("MIDDLE  ");
  lcd.print(" ");lcd.print(mid);lcd.print(" ");lcd.setCursor(13,0);mid_d=(mid+7)*2;
  if(w1==1){w1=0; 
   for(z=0,z0=0,z1=0;z<=mid_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("   ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}} 
   
 //////////////////////////////////////// Тембр BЧ +-14 дБ //////////////////////////////////////
 if(menu==3){
     if(ir.value==IR5){treb++;g1=1;g2=0;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){treb++;g2=0;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка >>>>>>
     if(ir.value==IR6){treb--;g1=0;g2=1;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){treb--;g1=0;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    treb=treb+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;treb_conf();audio();}
  lcd.setCursor(0,0);lcd.print("TREBLE  ");
  lcd.print(" ");lcd.print(treb);lcd.print(" ");lcd.setCursor(13,0);treb_d=(treb+7)*2;
  if(w1==1){w1=0;  
   for(z=0,z0=0,z1=0;z<=treb_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}    
   
   //////////////////////////////////// rock pop classic //////////////////////      
  if(menu==4){
     if(ir.value==IR5){tembro++;g1=1;g2=0;cl();time=millis();w=1;w1=1;tembr();audio();}// кнопка VOL+
     if(ir.value==IR6){tembro--;g1=0;g2=1;cl();time=millis();w=1;w1=1;tembr();audio();}// кнопка VOL-
     if (newPosition != oldPosition) {
    oldPosition = newPosition;
    tembro=tembro+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;tembr();}
    if(w1==1){w1=0;
    lcd.setCursor(0,0);lcd.print(" Preset timbre  ");
    if(tembro==0){lcd.setCursor(0,1);lcd.print("  manual mode  ");}
    if(tembro==1){lcd.setCursor(0,1);lcd.print("      ROCK     ");bass=4,mid=-2;treb=5;x=1;}
    if(tembro==2){lcd.setCursor(0,1);lcd.print("      POP      ");bass=-3,mid=3;treb=-2;x=1;}
    if(tembro==3){lcd.setCursor(0,1);lcd.print("    CLASSIC    ");bass=0,mid=0;treb=-2;x=1;}
    if(tembro==4){lcd.setCursor(0,1);lcd.print("    default    ");bass=0,mid=0;treb=0;x=1;}
    if(x==1){audio();x=0;}
  }}
   
  /////////////////////// ATT FRONT ///////////////////
   if(menu==5){
     if(ir.value==IR5){att_front++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_front_conf();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){att_front++;g2=0;cl();time=millis();w=1;w1=1;att_front_conf();audio();}// кнопка >>>>>>
     if(ir.value==IR6){att_front--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_front_conf();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){att_front--;g1=0;cl();time=millis();w=1;w1=1;att_front_conf();audio();}// кнопка <<<<<<   
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    att_front=att_front+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_front_conf();audio();}
  lcd.setCursor(0,0);lcd.print("ATT FRONT ");
  lcd.print(att_front);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attfl_d=(att_front+14)*2;
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=attfl_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}

     
  /////////////////////// ATT RAER ///////////////////
  if(menu==6){
     if(ir.value==IR5){att_rear++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_rear_conf();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){att_rear++;g2=0;cl();time=millis();w=1;w1=1;att_rear_conf();audio();}// кнопка >>>>>>
     if(ir.value==IR6){att_rear--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_rear_conf();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){att_rear--;g1=0;cl();time=millis();w=1;w1=1;att_rear_conf();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    att_rear=att_rear+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_rear_conf();audio();}
  lcd.setCursor(0,0);lcd.print("ATT REAR  ");
  lcd.print(att_rear);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");atttl_d=(att_rear+14)*2;
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=atttl_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
    
    
 /////////////////////// ATT CN ///////////////////
    if(menu==7){
     if(ir.value==IR5){attcn++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attcn++;g2=0;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка >>>>>>
     if(ir.value==IR6){attcn--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attcn--;g1=0;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attcn=attcn+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_cn();audio();}
  lcd.setCursor(0,0);lcd.print("ATT CN   ");
  lcd.print(" ");lcd.print(attcn);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attcn_d=(attcn+14)*2;
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=attcn_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
     
  /////////////////////// ATT SUB ///////////////////
     if(menu==8){
     if(ir.value==IR5){attsub++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attsub++;g2=0;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка >>>>>>
     if(ir.value==IR6){attsub--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attsub--;g1=0;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attsub=attsub+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_sub();audio();}
  lcd.setCursor(0,0);lcd.print("ATT SUB  ");
  lcd.print(" ");lcd.print(attsub);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attsub_d=(attsub+14)*2;
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=attsub_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}  
   
  //////////////////////////// 3d ///////////////////////////////////////////////
 if(menu==9){
   if (newPosition != oldPosition) {
    oldPosition = newPosition;
    ddd=ddd+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;ddd_conf();audio();}
   lcd.setCursor(0,0);lcd.print("    Surround    "); 
   lcd.setCursor(0,1);if(ddd==0){lcd.print("     3D  ON  ");}else{lcd.print("     3D  OFF  ");}}  

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

191

Re: PT2323+TDA7448

4.Можно увеличить время при переключении режимов входа? ЧТо бы не переключалось на громкость после каждого нажатия.

Сделал:

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

#define ENCODER    11      // BUTTON ENCODER
#define MUTE       12      // BUTTON MUTE
#define IN         10      // BUTTON INPUT
#define POWER      13      // BUTTON POWER
#define STAND_OUT   3      // OUTPUT STANDBY


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

  
    } // mute
  
  if((digitalRead(MUTE)==LOW || ir.value==IR2) && mute==0){mute=1;menu=100;g1=0;g2=0;cl1();time=millis();w=1;w1=1;audio();lcd.setCursor(6,0);lcd.print("MUTE");delay(500);}
  if((digitalRead(MUTE)==LOW || ir.value==IR2) && mute==1){mute=0;menu=0;  g1=0;g2=0;cl1();time=millis();w=1;w1=1;audio();}
 }// power
  if((digitalRead(POWER)==LOW || ir.value==IR7) && power==0){power=1;menu=100;g1=0;g2=0;cl1();time=millis();w=1;w1=1;mute=1;audio();lcd.setCursor(3,0);lcd.print("POWER OFF");delay(1000);lcd.noBacklight();}
  if((digitalRead(POWER)==LOW || ir.value==IR7) && power==1){power=0;menu=0;  g1=0;g2=0;cl1();time=millis();w=1;w1=1;mute=0;audio();lcd.backlight();lcd.setCursor(3,0);lcd.print("POWER ON ");delay(1000);cl1();}

  if(mute==1||power==1){digitalWrite(STAND_OUT,HIGH);}else{digitalWrite(STAND_OUT,LOW);}// standby out pin D3
  
  if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);time=millis();w=1;w1=1;irrecv.resume();}// IR приемник  

 
 if(menu==10){
  lcd.setCursor(0,0);lcd.print(" INPUT SELECTOR ");
  switch(in){
    case 0: lcd.setCursor(0,1);lcd.print("      IN ");lcd.print(in+1);break;
    case 1: lcd.setCursor(0,1);lcd.print("      IN ");lcd.print(in+1);break;
    case 2: lcd.setCursor(0,1);lcd.print("      IN ");lcd.print(in+1);break;
    case 3: lcd.setCursor(0,1);lcd.print("      IN ");lcd.print(in+1);break;
    case 4: lcd.setCursor(0,1);lcd.print("      6 CH ");break;
    }
    } 
   
 //////////////////////////////////////// Громкость -79...0 дБ //////////////////////////////////////
 if(menu==0){   
     if(ir.value==IR5){vol++;g1=1;g2=0;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка VOL+  0xFFA857
     if(ir.value==0xFFFFFFFF and g1==1){vol++;g2=0;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка >>>>>>
     if(ir.value==IR6){vol--;g1=0;g2=1;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){vol--;g1=0;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;vol_conf();audio();}
  lcd.setCursor(0,0);lcd.print("VOLUME ");
  lcd.print(-79+vol);lcd.print(" ");lcd.setCursor(10,0);lcd.print("dB");vol_d=map(vol, 0,79, 0, 48);
  switch(in){
    case 0: lcd.print(" IN");lcd.print(in+1);break;
    case 1: lcd.print(" IN");lcd.print(in+1);break;
    case 2: lcd.print(" IN");lcd.print(in+1);break;
    case 3: lcd.print(" IN");lcd.print(in+1);break;
    case 4: lcd.print(" 6CH");break;
  }
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=vol_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}}}
   
 //////////////////////////////////////// Тембр НЧ +-14 дБ //////////////////////////////////////
 if(menu==1){
     if(ir.value==IR5){bass++;g1=1;g2=0;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){bass++;g2=0;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка >>>>>>
     if(ir.value==IR6){bass--;g1=0;g2=1;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){bass--;g1=0;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    bass=bass+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;bass_conf();audio();}
  lcd.setCursor(0,0);lcd.print("BASS    ");
  lcd.print(" ");lcd.print(bass);lcd.print(" ");lcd.setCursor(13,0);bass_d=(bass+7)*2;
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=bass_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
   
 //////////////////////////////////////// Тембр CЧ +-14 дБ //////////////////////////////////////
 if(menu==2){
     if(ir.value==IR5){mid++;g1=1;g2=0;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){mid++;g2=0;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка >>>>>>
     if(ir.value==IR6){mid--;g1=0;g2=1;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){mid--;g1=0;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    mid=mid+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;mid_conf();audio();}
  lcd.setCursor(0,0);lcd.print("MIDDLE  ");
  lcd.print(" ");lcd.print(mid);lcd.print(" ");lcd.setCursor(13,0);mid_d=(mid+7)*2;
  if(w1==1){w1=0; 
   for(z=0,z0=0,z1=0;z<=mid_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("   ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}} 
   
 //////////////////////////////////////// Тембр BЧ +-14 дБ //////////////////////////////////////
 if(menu==3){
     if(ir.value==IR5){treb++;g1=1;g2=0;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){treb++;g2=0;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка >>>>>>
     if(ir.value==IR6){treb--;g1=0;g2=1;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){treb--;g1=0;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    treb=treb+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;treb_conf();audio();}
  lcd.setCursor(0,0);lcd.print("TREBLE  ");
  lcd.print(" ");lcd.print(treb);lcd.print(" ");lcd.setCursor(13,0);treb_d=(treb+7)*2;
  if(w1==1){w1=0;  
   for(z=0,z0=0,z1=0;z<=treb_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}    
   
   //////////////////////////////////// rock pop classic //////////////////////      
  if(menu==4){
     if(ir.value==IR5){tembro++;g1=1;g2=0;cl();time=millis();w=1;w1=1;tembr();audio();}// кнопка VOL+
     if(ir.value==IR6){tembro--;g1=0;g2=1;cl();time=millis();w=1;w1=1;tembr();audio();}// кнопка VOL-
     if (newPosition != oldPosition) {
    oldPosition = newPosition;
    tembro=tembro+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;tembr();}
    if(w1==1){w1=0;
    lcd.setCursor(0,0);lcd.print(" Preset timbre  ");
    if(tembro==0){lcd.setCursor(0,1);lcd.print("  manual mode  ");}
    if(tembro==1){lcd.setCursor(0,1);lcd.print("      ROCK     ");bass=4,mid=-2;treb=5;x=1;}
    if(tembro==2){lcd.setCursor(0,1);lcd.print("      POP      ");bass=-3,mid=3;treb=-2;x=1;}
    if(tembro==3){lcd.setCursor(0,1);lcd.print("    CLASSIC    ");bass=0,mid=0;treb=-2;x=1;}
    if(tembro==4){lcd.setCursor(0,1);lcd.print("    default    ");bass=0,mid=0;treb=0;x=1;}
    if(x==1){audio();x=0;}
  }}
   
  /////////////////////// ATT FRONT ///////////////////
   if(menu==5){
     if(ir.value==IR5){att_front++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_front_conf();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){att_front++;g2=0;cl();time=millis();w=1;w1=1;att_front_conf();audio();}// кнопка >>>>>>
     if(ir.value==IR6){att_front--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_front_conf();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){att_front--;g1=0;cl();time=millis();w=1;w1=1;att_front_conf();audio();}// кнопка <<<<<<   
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    att_front=att_front+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_front_conf();audio();}
  lcd.setCursor(0,0);lcd.print("ATT FRONT ");
  lcd.print(att_front);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attfl_d=(att_front+14)*2;
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=attfl_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}

     
  /////////////////////// ATT RAER ///////////////////
  if(menu==6){
     if(ir.value==IR5){att_rear++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_rear_conf();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){att_rear++;g2=0;cl();time=millis();w=1;w1=1;att_rear_conf();audio();}// кнопка >>>>>>
     if(ir.value==IR6){att_rear--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_rear_conf();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){att_rear--;g1=0;cl();time=millis();w=1;w1=1;att_rear_conf();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    att_rear=att_rear+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_rear_conf();audio();}
  lcd.setCursor(0,0);lcd.print("ATT REAR  ");
  lcd.print(att_rear);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");atttl_d=(att_rear+14)*2;
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=atttl_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
    
    
 /////////////////////// ATT CN ///////////////////
    if(menu==7){
     if(ir.value==IR5){attcn++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attcn++;g2=0;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка >>>>>>
     if(ir.value==IR6){attcn--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attcn--;g1=0;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attcn=attcn+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_cn();audio();}
  lcd.setCursor(0,0);lcd.print("ATT CN   ");
  lcd.print(" ");lcd.print(attcn);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attcn_d=(attcn+14)*2;
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=attcn_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
     
  /////////////////////// ATT SUB ///////////////////
     if(menu==8){
     if(ir.value==IR5){attsub++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attsub++;g2=0;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка >>>>>>
     if(ir.value==IR6){attsub--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attsub--;g1=0;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка <<<<<<
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attsub=attsub+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_sub();audio();}
  lcd.setCursor(0,0);lcd.print("ATT SUB  ");
  lcd.print(" ");lcd.print(attsub);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attsub_d=(attsub+14)*2;
  if(w1==1){w1=0;
   for(z=0,z0=0,z1=0;z<=attsub_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}  
   
  //////////////////////////// 3d ///////////////////////////////////////////////
 if(menu==9){
   if (newPosition != oldPosition) {
    oldPosition = newPosition;
    ddd=ddd+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;ddd_conf();audio();}
   lcd.setCursor(0,0);lcd.print("    Surround    "); 
   lcd.setCursor(0,1);if(ddd==0){lcd.print("     3D  ON  ");}else{lcd.print("     3D  OFF  ");}}  

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

192

Re: PT2323+TDA7448

Еще один не понятный момент. Я прописал здесь "..IR7  0x33B800FF // STANDBY" код кнопки включения телевизора, что бы можно было одновремено вкл телевизор и центр. Но схема выключается и тут же включается, возвращаю код родной кнопки и все работает, прописал код кнопки OUT все тоже прекрасно работает. Почему такое может происходить?

193

Re: PT2323+TDA7448

Не могу точно сказать почему так происходит, при нажатии кнопки POWER идет пауза в 1 с, что не дает использовать повторное нажатие кнопки POWER

194

Re: PT2323+TDA7448

Проверил монитор порта при нажатии кнопки с пульта телевизора, за одно нажатие может вывалить несколько кодов. Попробовал коротко нажать, схема работает норамльно.Чуть передержал и все

195

Re: PT2323+TDA7448

Бывают такие пульты

В строчку:

  if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);time=millis();w=1;w1=1;irrecv.resume();}// IR приемник 

добавьте паузу, возможно поможет

  if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);time=millis();w=1;w1=1;irrecv.resume();delay(300);}// IR приемник

196

Re: PT2323+TDA7448

Это не помогло. Заметил другое. Нажимаю кнопку на пульте ТВ. Проходит код, сразу же закрываю рукой светодиод пульта, еще раз в мониторе проходит тот же код. как так?

197

Re: PT2323+TDA7448

Тут все от пульта зависит, опрос ик датчика происходит несколько раз в секунду, а вывод в монитор порта с задержкой.

198

Re: PT2323+TDA7448

Есть вариант это как-то решить? Например что бы он один раз только принял код в течении скажем 2 секунд не реагировал ни на что?

Залил последний скетч и что-то опять не так пошло. Все бежит меняется моргает...

Предлагаю на сегодня сделать перерыв....

199

Re: PT2323+TDA7448

Я подумаю что можно сделать

200

Re: PT2323+TDA7448

Спасибо большое!!!!