201

Re: PT2323+TDA7448

Добрый день! С праздником Вас!
В общем и целом я доделал все как хотел, но есть некоторые моменты касаемо регулировки тембров и поканальной громкости.Я сделал что бы регулировка фронт тыл саб центр были через 0 от -7 до +7, но видимо что-то не так прописал в параметрах и получается, что максимум саб выдает при 0, а должен вроде как бы при +7. При установке эквалайзера в режим DISCO звук раскрывается только если я нажму кнопке TREBLE. В оригинале регулировка высоких и низких идет от -14 до +14,а поканальная регулировка -7 до+7.Короче говоря как-то звук не очень выдается. Проверьте мой скетч,может что-то где то напортачил.
Ну и если удастся решить проблему с кнопкой включения от пульта телевтзора,то тогда вообще класс будет. Спасибо


#define IR1  16478351 // INPUT
#define IR2  16459991 // MUTE
#define IR3  16492631 // 3D
#define IR4  16494671 // EQ
#define IR5  16449791 // UP VOL
#define IR6  16482431 // DW VOL
#define IR7  16476311  // STANDBY
#define IR8  16474271 // TREBLE
#define IR9  16457951 // BASS
#define IR10 16470191 // FRONT
#define IR11 16453871 // REAR
#define IR12 16490591 // CENTER
#define IR13 16486511 // SUB
#define IR14 16462031 // OUTPUT

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

  if(mute==1||power==1){digitalWrite(3,HIGH);}else{digitalWrite(3,LOW);}// standby out pin D3
  
  if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);time=millis();w=1;w1=1;irrecv.resume();}// IR приемник  
  
   
 //////////////////////////////////////// Громкость -79...0 дБ //////////////////////////////////////
 if(menu==0){   
     if(ir.value==IR5){vol++;g1=1;g2=0;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка VOL+  16449791
     if(ir.value==4294967295 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-  16482431
     if(ir.value==4294967295 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(vol);lcd.print("  ");vol_d=map(vol, 0,79, 0, 48);
  switch(in){
    case 0: lcd.print("  CD");break;
    case 1: lcd.print("TAPE");break;
    case 2: lcd.print("  TV");break;
    //case 3: lcd.print(" IN");break;
    case 4: lcd.print("AC-3");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+ 16449791
     if(ir.value==4294967295 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- 16449791
     if(ir.value==4294967295 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==4294967295 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==4294967295 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==4294967295 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==4294967295 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(3,0);lcd.print("Preset EQ");
    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("     DISCO    ");bass=6,mid=0;treb=7;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(3,0);lcd.print("FRONT ");
  lcd.print(att_front);lcd.print(" ");lcd.setCursor(13,0);attfl_d=(att_front+7)*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 REAR ///////////////////
  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(3,0);lcd.print("REAR  ");
  lcd.print(att_rear);lcd.print(" ");lcd.setCursor(13,0);atttl_d=(att_rear+7)*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==9){
     if(ir.value==IR5){attcn++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка VOL+
     if(ir.value==4294967295 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==4294967295 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(3,0);lcd.print("CENTER ");
  lcd.print(" ");lcd.print(attcn);lcd.print(" ");lcd.setCursor(13,0);attcn_d=(attcn+7)*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==4294967295 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==4294967295 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(3,0);lcd.print("SUB  ");
  lcd.print(" ");lcd.print(attsub);lcd.print(" ");lcd.setCursor(13,0);attsub_d=(attsub+7)*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);
     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<-7){attsub=-7;}if(attsub>7){attsub=7;}}
 void att_cn(){if(attcn<-7){attcn=-7;}if(attcn>7){attcn=7;}}
 void att_rear_conf(){if(att_rear<-7){att_rear=-7;}if(att_rear>7){att_rear=7;}}
 void att_front_conf(){if(att_front<-7){att_front=-7;}if(att_front>7){att_front=7;}}
 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
}

202

Re: PT2323+TDA7448

Загрузите последний мой скетч, там решена проблема с переключением входов, все подключение прописано в:

#define IR1  16478351 // INPUT
#define IR2  16459991 // MUTE
#define IR3  16492631 // 3D
#define IR4  16494671 // EQ
#define IR5  16449791 // UP VOL
#define IR6  16482431 // DW VOL
#define IR7  16476311  // STANDBY
#define IR8  16474271 // TREBLE
#define IR9  16457951 // BASS
#define IR10 16470191 // FRONT
#define IR11 16453871 // REAR
#define IR12 16490591 // CENTER
#define IR13 16486511 // SUB
#define IR14 16462031 // 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

Тембр идет от -7 до +7 это выражено в относительных единицах, по факту это от -14 до +14 дБ

При установке эквалайзера в режим DISCO звук раскрывается только если я нажму кнопке TREBLE.

Это я исправлю

203

Re: PT2323+TDA7448

При установке эквалайзера в режим DISCO звук раскрывается только если я нажму кнопке TREBLE.

Исправил, при подачи питания должен применяться уровни тембра

#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);
    if(tembro==1){bass=4,mid=-2;treb=5;}
    if(tembro==2){bass=-3,mid=3;treb=-2;}
    if(tembro==3){bass=0,mid=0;treb=-2;}
    if(tembro==4){bass=0,mid=0;treb=0;}
  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
}

204

Re: PT2323+TDA7448

С входами решили.
Аттенюаторы в оригинале идут -7 через 0 до +7. При нуле у всех один уровень и можно регулировать относительно 0 все между собой. Я так понимаю они взяли середину от -14дб и 0 и от этого регулируют.

if(tembro==1){bass=4,mid=-2;treb=5;}. - это относительные единицы?

205

Re: PT2323+TDA7448

.Я сделал что бы регулировка фронт тыл саб центр были через 0 от -7 до +7, но видимо что-то не так прописал в параметрах и получается, что максимум саб выдает при 0, а должен вроде как бы при +7.

По даташиту от -15 до 0 дБ

http://forum.rcl-radio.ru/uploads/images/2022/04/c334e7d76dd88d68465cc538d5bce089.png

206

Re: PT2323+TDA7448

С входами решили.
Аттенюаторы в оригинале идут -7 через 0 до +7. При нуле у всех один уровень и можно регулировать относительно 0 все между собой. Я так понимаю они взяли середину от -14дб и 0 и от этого регулируют.

Получается что так

if(tembro==1){bass=4,mid=-2;treb=5;}. - это относительные единицы?

Относительные, я убрал дБ по Вашей просьбе, шаг регулировки 2 дБ

http://forum.rcl-radio.ru/uploads/images/2022/04/c219d8f4eff453d98446e4024c7adc83.png

207

Re: PT2323+TDA7448

Я вас понял. Ну тогда если получится, то решить проблему с кнопкой пульта тв и основная работа закончена.

208

Re: PT2323+TDA7448

Я постараюсь решить эту проблему, только используйте мой последний скетч, там учтены все последние правки.

У Вас пульт от ТВ не поддерживает формат NEC, который используется в аудиоцентре, в формате NEC после удержания кнопки пульта всегда идет код 0xFFFFFFFF для всех кнопок пульта, повторно код кнопки при удержании не отсылается.

209

Re: PT2323+TDA7448

ну да, с пульта центра проходит такой код.

210

Re: PT2323+TDA7448

По пульту:
Вы используете только одну кнопку ТВ для включения?
Вы можете использовать для включения две кнопки, с пульта от аудиоцентра и  от ТВ, но надо для этого внести испраления в скетч.

211

Re: PT2323+TDA7448

Я просто хотел что бы телевизор и центр вкл и выкл одной кнопкой, удобно...

212

Re: PT2323+TDA7448

В вашем скетче Вы используете названия входов, номер входа я вывел в меню громкости, но там всего 3 знакоместа, можно все поправить, например убрать надпись дБ и перевести громкость в отностительные единицы, например регулировка будет от 0 до 79. 

    case 0: lcd.setCursor(0,1);lcd.print("       CD ");break;
    case 1: lcd.setCursor(0,1);lcd.print("      TAPE ");break;
    case 2: lcd.setCursor(0,1);lcd.print("       TV");break;
    //case 3: lcd.setCursor(0,1);lcd.print("       IN ");break;
    case 4: lcd.setCursor(0,1);lcd.print("      AC-3 ");break;

213

Re: PT2323+TDA7448

Опубликуйте код кнопки POWER от ТВ

214

Re: PT2323+TDA7448

Я это уже все сделал и все красиво получилось.

Код пульта ТВ - 3772793023

215

Re: PT2323+TDA7448

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

#define IR1  16478351 // INPUT
#define IR2  16459991 // MUTE
#define IR3  16492631 // 3D
#define IR4  16494671 // EQ
#define IR5  16449791 // UP VOL
#define IR6  16482431 // DW VOL
#define IR7  16476311  // STANDBY
#define IR8  16474271 // TREBLE
#define IR9  16457951 // BASS
#define IR10 16470191 // FRONT
#define IR11 16453871 // REAR
#define IR12 16490591 // CENTER
#define IR13 16486511 // SUB
#define IR14 16462031 // OUTPUT
#define IR15 3772793023 // STANDBY TV


#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,times_ir;
   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;
   int w_ir;
   
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);
    if(tembro==1){bass=4,mid=-2;treb=5;}
    if(tembro==2){bass=-3,mid=3;treb=-2;}
    if(tembro==3){bass=0,mid=0;treb=-2;}
    if(tembro==4){bass=0,mid=0;treb=0;}
  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 || ir.value==IR15) && 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 || ir.value==IR15) && 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 )&& millis()-times_ir>1000) {Serial.print("0x");Serial.println( ir.value,HEX);time=millis();w=1;w1=1;irrecv.resume();}// IR приемник 
  if(ir.value==IR15){times_ir=millis();}
  
 
 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
}

216

Re: PT2323+TDA7448

Сейчас проверю

217

Re: PT2323+TDA7448

К сожалению не получилось.  С родного пульта все работает, со второго выключает и потом опять включает

218

Re: PT2323+TDA7448

А этот вариант не подойдет?
https://radioprog.ru/post/251

219

Re: PT2323+TDA7448

При однократном нажатии кнопки пульта ТВ сколько раз повторяется код кнопки и сколько примерно по времени?

220

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 IR15 3772793023 // STANDBY TV
*/

#define IR1  16478351 // INPUT
#define IR2  16459991 // MUTE
#define IR3  16492631 // 3D
#define IR4  16494671 // EQ
#define IR5  16449791 // UP VOL
#define IR6  16482431 // DW VOL
#define IR7  16476311 // STANDBY
#define IR8  16474271 // TREBLE
#define IR9  16457951 // BASS
#define IR10 16470191 // FRONT
#define IR11 16453871 // REAR
#define IR12 16490591 // CENTER
#define IR13 16486511 // SUB
#define IR14 16462031 // OUTPUT
#define IR15 3772793023 // STANDBY TV


#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,times_ir;
   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;
   int w_ir;
   
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);
    if(tembro==1){bass=4,mid=-2;treb=5;}
    if(tembro==2){bass=-3,mid=3;treb=-2;}
    if(tembro==3){bass=0,mid=0;treb=-2;}
    if(tembro==4){bass=0,mid=0;treb=0;}
  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 || ir.value==IR15) && 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();cl1();}
  if((digitalRead(POWER)==LOW || ir.value==IR7 || ir.value==IR15) && 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 )&& millis()-times_ir>5000) {Serial.print("0x");Serial.println( ir.value,HEX);time=millis();w=1;w1=1;irrecv.resume();}else{ir.value=0;}
  if(ir.value==IR15){times_ir=millis();}
  
 
 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
}

221

Re: PT2323+TDA7448

Ставлю больше секунды и он уходит в постоянную перезагрузку. При секунде просто вкл и выключает. Код повторяется один раз с интервалом около 1-1.5 сек.
Сейчас попробую последний скетч

222

Re: PT2323+TDA7448

РАБОТАЕТ!!!! ВЫ ВОЛШЕБНИК!!! smile

223

Re: PT2323+TDA7448

Отлично! Если будут еще вопросы, то пишите.

224

Re: PT2323+TDA7448

сейчас как раз готовлю вам...

225

Re: PT2323+TDA7448

Можно я тогда еще озадачу вас последней задачей. smile
И так...
Имеет блютуз-трансмитер. Он получает питание через юсб разъем и имеет обычный aux выход.
Задача следующая.
Нажимаем кнопку OUT на пульте, подается питание на модуль, включается режим MUTE без индикации и система переводится в режим 2.1 тоже без индикации. На модуле есть светодиод, который в режиме поиска моргает и при подключении к наушникам горит постоянно. Это надо перевести в надпись на дисплее.
Как видится мне , то все это вполне просто реализуемо до момента, пока становится не понятным откуда взять звук.
в режиме 2.1 работают фронты и саб. Можно было бы подключиться к выводам 2323 фронтов, но тогда мы потеряем НЧ составляющую звука. В перспективе (это следующая основная задача) я хочу запихнуть туда процессор, что бы с оптики получить 5.1
Что можете подсказать? как получить полноценный звук, с учетом, что будет полноценный вход 5.1.
Спасибо еще раз!