1

Тема: TDA8425 + энкодер + пульт + STANDBY

Основная статья - http://rcl-radio.ru/?p=51737

http://rcl-radio.ru/wp-content/uploads/ … Timer2.zip
http://rcl-radio.ru/wp-content/uploads/ … ncoder.zip
http://rcl-radio.ru/wp-content/uploads/ … remote.zip
Данный контент доступен только зарегистрированным пользователям.


  #include <Wire.h>
  #include <TDA8425.h>
  #include <Encoder.h>
  #include <LiquidCrystal.h>
  #include <EEPROM.h>
  #include <MsTimer2.h>
  #include <boarddefs.h>
  #include <IRremote.h>
   IRrecv irrecv(9); // указываем вывод модуля IR приемника
   Encoder myEnc(11, 10);//CLK, DT
   decode_results ir;
   TDA8425 tda;
   LiquidCrystal lcd(7, 6, 2, 3, 4, 5);// RS,E,D4,D5,D6,D7
    byte a1[8]={0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101};
    byte a2[8]={0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100};
    byte a3[8]={0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000};
   int menu,vol,vol_d,balans,bass,bass_d,treb,treb_d,in,mute,sss;
   byte w,w2,standby=1,www,z,z0,z1,gr1,gr2;
   unsigned long time,oldPosition  = -999,newPosition;
 
void setup() {
   Serial.begin(9600);lcd.begin(16, 2);
   irrecv.enableIRIn(); // запускаем модуль IR
   pinMode(12,INPUT);// меню кнопка энкодера SW
   pinMode(A0,INPUT);// кнопка POWER
   pinMode(8,OUTPUT);// выход управления STANDBY
   pinMode(A1,INPUT);// MUTE
   digitalWrite(8,LOW);
   lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
   vol = EEPROM.read(0);// vol eeprom
   bass = EEPROM.read(1);// bass eeprom
   treb = EEPROM.read(2);// treb eeprom
   in = EEPROM.read(3);// in eeprom
   balans = EEPROM.read(4)-4;// balans eeprom
   lcd.setCursor(4,0);lcd.print("TDA8425");delay(1000);
   MsTimer2::set(3, to_Timer);MsTimer2::start();
   audio();
}

void loop() {delay(10);
   if(standby==1){menu=100;lcd.setCursor(0,0);lcd.print("   POWER OFF    ");}
   if(analogRead(A0)>900&&standby==1){standby=0;lcd.clear();lcd.setCursor(0,0);lcd.print("   POWER ON     ");digitalWrite(8,HIGH);delay(2000);menu=0;w2=1;}
   if(analogRead(A0)>900&&standby==0){standby=1;lcd.clear();digitalWrite(8,LOW);delay(500);menu=100;}

   if(analogRead(A1)>900&&mute==0&&standby==0){mute=1;cl();menu=100;lcd.setCursor(0,0);lcd.print("      MUTE      ");delay(500);}
   if(analogRead(A1)>900&&mute==1&&standby==0){mute=0;cl();delay(100);menu=0;w2=1;}
   
   if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);time=millis();w=1;w2=1;irrecv.resume();}// IR приемник
   if(digitalRead(12)==LOW&&standby==0){menu++;cl();myEnc.write(0);time=millis();w=1;w2=1;if(menu>4){menu=0;}}// меню
 
    if(ir.value==0x2FDD02F&&standby==0){menu++;gr1=0;gr2=0;cl1();time=millis();w=1;w2=1;if(menu>4){menu=0;}}// IR меню кнопка вверх
    if(ir.value==0x2FD32CD&&standby==0){menu--;gr1=0;gr2=0;cl1();time=millis();w=1;w2=1;if(menu<0){menu=4;}}// IR меню кнопка вниз
    
    if(ir.value==0x2FD00FF&&standby==1){standby=0;gr1=0;gr2=0;cl();lcd.setCursor(0,0);lcd.print("   POWER ON     ");digitalWrite(8,HIGH);delay(2000);menu=0;w2=1;}//IR power on
    if(ir.value==0x2FD00FF&&standby==0){standby=1;gr1=0;gr2=0;cl();digitalWrite(8,LOW);delay(500);menu=100;}//IR power off

    if(ir.value==0x2FD708F&&mute==0&&standby==0){mute=1;cl();menu=100;lcd.setCursor(0,0);lcd.print("      MUTE      ");delay(500);}// IR MUTE
    if(ir.value==0x2FD708F&&mute==1&&standby==0){mute=0;cl();menu=0;w2=1;}//IR MUTE

    
/////////////////////// VOLUME ///////////////////////////////////
  if(menu==0){ 
     if(ir.value==0x2FD906F){vol++;gr1=1;gr2=0;cl();w2=1;ogr_vol();audio();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl();w2=1;ogr_vol();audio();}// кнопка >>>>>>
     if(ir.value==0x2FDF20D){vol--;gr1=0;gr2=1;cl();w2=1;ogr_vol();audio();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl();w2=1;ogr_vol();audio();}// кнопка <<<<<<
     
    if (newPosition != oldPosition){oldPosition = newPosition;
    vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;ogr_vol();audio();} 
    
   lcd.setCursor(0,0);lcd.print("VOLUME  ");
   lcd.print(" ");lcd.print((-60+vol)*2);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");vol_d=vol-15;
   if(w2==1){
   for(z=0,z0=0,z1=0;z<=vol_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print("   ");}}
   if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}w2=0;}}

//////////////// BASS /////////////////////////////////////
  if(menu==1){ 
     if(ir.value==0x2FD906F){bass++;gr1=1;gr2=0;cl();w2=1;ogr_bass();audio();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){bass++;gr2=0;cl();w2=1;ogr_bass();audio();}// кнопка >>>>>>
     if(ir.value==0x2FDF20D){bass--;gr1=0;gr2=1;cl();w2=1;ogr_bass();audio();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){bass--;gr1=0;cl();w2=1;ogr_bass();audio();}// кнопка <<<<<<
     
    if (newPosition != oldPosition){oldPosition = newPosition;
    bass=bass+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;ogr_bass();audio();} 

     lcd.setCursor(0,0);lcd.print("BASS      ");
  switch(bass){
    case 11: bass_d=15;break;
    case 10: bass_d=12;break;
    case 9:  bass_d=9;break;
    case 8:  bass_d=6;break;
    case 7:  bass_d=3;break;
    case 6:  bass_d=0;break;
    case 5:  bass_d=-3;break;
    case 4:  bass_d=-6;break;
    case 3:  bass_d=-9;break;
    case 2:  bass_d=-12;break;
    }
   if(bass_d>=0){lcd.print("+");}else{lcd.print("-");}
   if(bass_d>-10&&bass_d<=0||bass_d<10&&bass_d>0){{lcd.print(" ");}}
  lcd.print(abs(bass_d));lcd.print(" dB   ");
    if(w2==1){bass_d=bass_d+12;
    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+3+1,1);lcd.print("   ");}}
    if(bass_d==0){lcd.setCursor(0,1);lcd.print("                ");}w2=0;}}

/////////////////////// TREBLE //////////////////////////////////////////////////////
  if(menu==2){ 
     if(ir.value==0x2FD906F){treb++;gr1=1;gr2=0;cl();w2=1;ogr_treb();audio();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){treb++;gr2=0;cl();w2=1;ogr_treb();audio();}// кнопка >>>>>>
     if(ir.value==0x2FDF20D){treb--;gr1=0;gr2=1;cl();w2=1;ogr_treb();audio();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){treb--;gr1=0;cl();w2=1;ogr_treb();audio();}// кнопка <<<<<<
     
    if (newPosition != oldPosition){oldPosition = newPosition;
    treb=treb+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;ogr_treb();audio();} 

     lcd.setCursor(0,0);lcd.print("TREBLE    ");
  switch(treb){
    case 10: treb_d=12;break;
    case 9:  treb_d=9;break;
    case 8:  treb_d=6;break;
    case 7:  treb_d=3;break;
    case 6:  treb_d=0;break;
    case 5:  treb_d=-3;break;
    case 4:  treb_d=-6;break;
    case 3:  treb_d=-9;break;
    case 2:  treb_d=-12;break;
    }
   if(treb_d>=0){lcd.print("+");}else{lcd.print("-");}
   if(treb_d>-10&&treb_d<=0||treb_d<10&&treb_d>0){{lcd.print(" ");}}
  lcd.print(abs(treb_d));lcd.print(" dB   ");
    if(w2==1){treb_d=treb_d+12;
    for(z=0,z0=0,z1=0;z<=treb_d;z++,z1++){if(z1>2){z1=0;z0++;}
    if(z1==1){lcd.setCursor(z0+4,1);lcd.write((uint8_t)0);lcd.setCursor(z0+4+1,1);lcd.print("   ");}}
    if(treb_d==0){lcd.setCursor(0,1);lcd.print("                ");}w2=0;}}

//////////////// BALANCE /////////////////////////////////////
   if(menu==3){ 
     if(ir.value==0x2FD906F){balans++;gr1=1;gr2=0;cl();w2=1;ogr_balans();audio();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){balans++;gr2=0;cl();w2=1;ogr_balans();audio();}// кнопка >>>>>>
     if(ir.value==0x2FDF20D){balans--;gr1=0;gr2=1;cl();w2=1;ogr_balans();audio();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){balans--;gr1=0;cl();w2=1;ogr_balans();audio();}// кнопка <<<<<<
     
    if (newPosition != oldPosition){oldPosition = newPosition;
    balans=balans+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;lcd.clear();ogr_balans();audio();} 

    lcd.setCursor(0,0);
   if(balans*2>=0){lcd.print("-");}else{lcd.print("+");}
  lcd.print(abs(balans*2));lcd.print(" dB ");
  lcd.print(" <>  ");
   if(balans*2>=0){lcd.print("+");}else{lcd.print("-");}
  lcd.print(abs(balans*2));lcd.print(" dB ");
  lcd.setCursor(0,1);lcd.print("L");
  lcd.setCursor(15,1);lcd.print("R");
   if(balans<0){lcd.setCursor(balans+7,1);lcd.write((uint8_t)0);}
   if(balans>0){lcd.setCursor(balans+8,1);lcd.write((uint8_t)0);}
   if(balans==0){lcd.setCursor(7,1);lcd.write((uint8_t)0);lcd.setCursor(8,1);lcd.write((uint8_t)0);}}

  ///////////////////////// input /////////////////////////////
  if(menu==4){
     if(ir.value==0x2FD906F){in++;gr1=1;gr2=0;cl1();w2=1;ogr_in();audio();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){in++;gr2=0;cl1();w2=1;ogr_in();audio();}// кнопка >>>>>>
     if(ir.value==0x2FDF20D){in--;gr1=0;gr2=1;cl1();w2=1;ogr_in();audio();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){in--;gr1=0;cl1();w2=1;ogr_in();audio();}// кнопка <<<<<<
    
if (newPosition != oldPosition) {
    oldPosition = newPosition;
    in=in+newPosition;myEnc.write(0);newPosition=0;audio();lcd.clear();time=millis();w=1;ogr_in();audio();}
 
  lcd.setCursor(0,0);lcd.print("Source selector");
  lcd.setCursor(0,1);lcd.print("INPUT: ");lcd.print(in);
 }
////////////////////////////////////////////////////////////////

    if(millis()-time>10000 && w==1){// сохранение всех настроек в eeprom через 10 сек неактивности
     EEPROM.update(0,vol);
     EEPROM.update(4,balans+4);
     EEPROM.update(1,bass);
     EEPROM.update(2,treb);
     EEPROM.update(3,in);
     w=0;w2=1;menu=0;cl(); }


}//loop
void ogr_in(){if(in>1){in=0;}if(in<0){in=1;}}
void ogr_balans(){if(balans>4){balans=4;}if(balans<-4){balans=-4;}}
void ogr_treb(){if(treb>10){treb=10;}if(treb<2){treb=2;}}
void ogr_bass(){if(bass>11){bass=11;}if(bass<2){bass=2;}}
void ogr_vol(){if(vol<0){vol=0;}if(vol>63){vol=63;}}
void cl(){ir.value=0;delay(200);lcd.clear();}
void cl1(){ir.value=0;delay(400);lcd.clear();}
void to_Timer(){newPosition = myEnc.read()/4;}
void audio(){
  tda.setVolumeL(vol+balans);
  tda.setVolumeR(vol-balans);
  tda.setBass(bass);
  tda.setTreble(treb);
  tda.setMute(mute);
  tda.setSource(in);
 }

2

Re: TDA8425 + энкодер + пульт + STANDBY

Здравствуйте , я не спец в программировании . У меня вопрос , можно ли подключить дисплей по шине i2c ?

3

Re: TDA8425 + энкодер + пульт + STANDBY

Замените строки(первую на вторую):

//#include <LiquidCrystal.h>
#include <LiquidCrystal_I2C.h> // http://forum.rcl-radio.ru/misc.php?acti … download=1

// LiquidCrystal lcd(7, 6, 2, 3, 4, 5);// RS,E,D4,D5,D6,D7
  LiquidCrystal_I2C lcd(0x27,16,2);

// lcd.begin(16, 2);
lcd.init();lcd.backlight();

4 (2020-03-13 12:56:46 отредактировано folks)

Re: TDA8425 + энкодер + пульт + STANDBY

Спасибо , буду пробовать .
Все получилось , большое спасибо за помощь .

5

Re: TDA8425 + энкодер + пульт + STANDBY

У меня еще один вопрос , можно ли изменить названия входов in0,in1 на свое ? Я пытался , но ничего не получается. Хотел , что бы было например aux, tuner .

6

Re: TDA8425 + энкодер + пульт + STANDBY

lcd.setCursor(0,1);lcd.print("INPUT: ");lcd.print(in);
заменить на:
lcd.setCursor(0,1);lcd.print("INPUT: ");
if(in==0){lcd.print("AUX  ");}
if(in==1){lcd.print("TUNER");}

7

Re: TDA8425 + энкодер + пульт + STANDBY

Большое спасибо за помощь .

8

Re: TDA8425 + энкодер + пульт + STANDBY

Возможно ли на дисплее с i2c реализовать регулировку яркости через lcd.setBacklight ?

9

Re: TDA8425 + энкодер + пульт + STANDBY

Посмотрите как реализована подсветка с изменяемой яркостью - http://rcl-radio.ru/?p=76005

10

Re: TDA8425 + энкодер + пульт + STANDBY

Сегодня ,на ясную голову все получилось .

11

Re: TDA8425 + энкодер + пульт + STANDBY

Здравствуйте. Возможно ли сделать чтобы при включении входа in1 , например, на каком нибудь выходе мк появилась логическая 1. Для включения доп. устройства (тюнера). И прямое регулирование тембра отдельными кнопками пульта, не листая меню. Заранее спасибо за ответ.

12

Re: TDA8425 + энкодер + пульт + STANDBY

Здравствуйте. Возможно ли сделать чтобы при включении входа in1 , например, на каком нибудь выходе мк появилась логическая 1. Для включения доп. устройства (тюнера)

В основной цикл вставьте:

if(in==1){digitalWrite(13,HIGH);}else{digitalWrite(13,LOW);}

И прямое регулирование тембра отдельными кнопками пульта, не листая меню. Заранее спасибо за ответ.

Вот пример кода:

if(ir.value==0x2FD906F){bass++;gr1=1;gr2=0;cl();w2=1;ogr_bass();audio();}// кнопка >
     if(ir.value==0xFFFFFFFF and gr1==1){bass++;gr2=0;cl();w2=1;ogr_bass();audio();}// кнопка >>>>>>
     if(ir.value==0x2FDF20D){bass--;gr1=0;gr2=1;cl();w2=1;ogr_bass();audio();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){bass--;gr1=0;cl();w2=1;ogr_bass();audio();}// кнопка <<<<<<

добавьте еще одну кнопку для BASS++:

if(ir.value==0x2FD906F||ir.value==0xНОВАЯ_КНОПКА){bass++;gr1=1;gr2=0;cl();w2=1;ogr_bass();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){bass++;gr2=0;cl();w2=1;ogr_bass();audio();}// кнопка >>>>>>

аналогично для BASS-- и treble

13

Re: TDA8425 + энкодер + пульт + STANDBY

Дополнительно в любое место основного цикла вставить для BASS:

if(ir.value==0xНОВАЯ_КНОПКА){menu=1;bass++;gr1=1;gr2=0;cl();ogr_bass();audio();}// кнопка

14

Re: TDA8425 + энкодер + пульт + STANDBY

А tft дисплей сюда сложно будет подключить ?

15

Re: TDA8425 + энкодер + пульт + STANDBY

Фактически весь код надо переписывать.

16

Re: TDA8425 + энкодер + пульт + STANDBY

Ясно. А так бы дисплей смотрелся конечно классно .

17

Re: TDA8425 + энкодер + пульт + STANDBY

Слишком мало параметров, нет смысла на TFT делать. Есть примеры на TDA7419 и TDA7719, там был смысл делать на  TFT, очень много параметров.

18

Re: TDA8425 + энкодер + пульт + STANDBY

Здравствуйте. TDA8425 еще имеет режимы стерео, моно и псевдо стерео. По умолчанию включен режим стерео?

19

Re: TDA8425 + энкодер + пульт + STANDBY

По умолчанию стерео, другие режимы скетч не поддерживает

20 (2020-10-18 01:53:56 отредактировано djozes)

Re: TDA8425 + энкодер + пульт + STANDBY

Уже часов 5 ковыряюмь но не понимаю почему у меня  пульт при тесте через программу

#include <IRremote.h>



   IRrecv irrecv(9); // указываем вывод модуля IR приемника
   decode_results ir;
   
void setup() {
  Serial.begin(9600);  
  irrecv.enableIRIn();
}



void loop() {
  if (irrecv.decode(&ir)) {  Serial.println(ir.value, HEX);
    irrecv.resume();
  }

}

нормально пишет в монитор порта коды кнопок, а в  нутри полной прошивки

 #include <Wire.h>
  #include <TDA8425.h>
  #include <Encoder.h>
  #include <LiquidCrystal_I2C.h> // 
  #include <EEPROM.h>
  #include <MsTimer2.h>
  #include <boarddefs.h>
  #include <IRremote.h>
   IRrecv irrecv(9); // указываем вывод модуля IR приемника
   decode_results ir;
   Encoder myEnc(11, 10);//CLK, DT
   TDA8425 tda;
   LiquidCrystal_I2C lcd(0x3F,16,2);
    byte a1[8]={0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101};
    byte a2[8]={0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100};
    byte a3[8]={0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000};
   int menu,vol,vol_d,balans,bass,bass_d,treb,treb_d,in,mute,sss;
   byte w,w2,standby=1,www,z,z0,z1,gr1,gr2;
   unsigned long time,oldPosition  = -999,newPosition;
 
void setup() {
   Serial.begin(9600);
   irrecv.enableIRIn(); // запускаем модуль IR
   lcd.init();
   lcd.backlight();
   pinMode(12,INPUT);// меню кнопка энкодера SW
   pinMode(A0,INPUT);// кнопка POWER
   pinMode(8,OUTPUT);// выход управления STANDBY
   pinMode(A1,INPUT);// MUTE
   digitalWrite(8,LOW);
   lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
   vol = EEPROM.read(0);// vol eeprom
   bass = EEPROM.read(1);// bass eeprom
   treb = EEPROM.read(2);// treb eeprom
   in = EEPROM.read(3);// in eeprom
   balans = EEPROM.read(4)-4;// balans eeprom
   lcd.setCursor(4,0);lcd.print("Evgeniy");delay(500);
   lcd.setCursor(2,1);lcd.print("Fedorovskiy");delay(1700);
   lcd.clear();
   lcd.setCursor(4,1);lcd.print("TDA8425");delay(1000);
   lcd.clear();
   MsTimer2::set(3, to_Timer);MsTimer2::start();
   audio();
}



void loop() {
   if(standby==1){menu=100;lcd.setCursor(0,0);lcd.print("   POWER OFF    ");}
   if(analogRead(A0)>900&&standby==1){standby=0;lcd.clear();lcd.setCursor(0,0);lcd.print("   POWER ON     ");digitalWrite(8,HIGH);delay(1000);menu=0;w2=1;}
   if(analogRead(A0)>900&&standby==0){standby=1;lcd.clear();digitalWrite(8,LOW);delay(500);menu=100;}

   if(analogRead(A1)>900&&mute==0&&standby==0){mute=1;cl();menu=100;lcd.setCursor(0,0);lcd.print("      MUTE      ");delay(500);}
   if(analogRead(A1)>900&&mute==1&&standby==0){mute=0;cl();delay(100);menu=0;w2=1;}
   
   if ( irrecv.decode(&ir)) {Serial.print("0x");Serial.println(ir.value,HEX);time=millis();w=1;w2=1;irrecv.resume();} // IR приемник

   if(digitalRead(12)==LOW&&standby==0){menu++;cl();myEnc.write(0);time=millis();w=1;w2=1;if(menu>4){menu=0;}}// меню
 
    if(ir.value==0xFFA956&&standby==0){menu++;gr1=0;gr2=0;cl1();time=millis();w=1;w2=1;if(menu>4){menu=0;}}// IR меню кнопка вверх
    if(ir.value==0xFF59A6&&standby==0){menu--;gr1=0;gr2=0;cl1();time=millis();w=1;w2=1;if(menu<0){menu=4;}}// IR меню кнопка вниз
    
    if(ir.value==0xFF11EE&&standby==1){standby=0;gr1=0;gr2=0;cl();lcd.setCursor(0,0);lcd.print("   POWER ON     ");digitalWrite(8,HIGH);delay(1000);menu=0;w2=1;}//IR power on
    if(ir.value==0xFF11EE&&standby==0){standby=1;gr1=0;gr2=0;cl();digitalWrite(8,LOW);delay(500);menu=100;}//IR power off

    if(ir.value==0xFF7986&&mute==0&&standby==0){mute=1;cl();menu=100;lcd.setCursor(0,0);lcd.print("      MUTE      ");delay(500);}// IR MUTE
    if(ir.value==0xFF7986&&mute==1&&standby==0){mute=0;cl();menu=0;w2=1;}//IR MUTE

    
/////////////////////// VOLUME ///////////////////////////////////
  if(menu==0){ 
     if(ir.value==0xFF9966){vol++;gr1=1;gr2=0;cl();w2=1;ogr_vol();audio();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl();w2=1;ogr_vol();audio();}// кнопка >>>>>>
     if(ir.value==0xFFD926){vol--;gr1=0;gr2=1;cl();w2=1;ogr_vol();audio();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl();w2=1;ogr_vol();audio();}// кнопка <<<<<<
     
    if (newPosition != oldPosition){oldPosition = newPosition;
    vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;ogr_vol();audio();} 
    
   lcd.setCursor(0,0);lcd.print("VOLUME  ");
   lcd.print(" ");lcd.print((-60+vol)*2);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");vol_d=vol-15;
   if(w2==1){
   for(z=0,z0=0,z1=0;z<=vol_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print("   ");}}
   if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}w2=0;}}

//////////////// BASS /////////////////////////////////////
  if(menu==1){ 
     if(ir.value==0xFF9966){bass++;gr1=1;gr2=0;cl();w2=1;ogr_bass();audio();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){bass++;gr2=0;cl();w2=1;ogr_bass();audio();}// кнопка >>>>>>
     if(ir.value==0xFFD926){bass--;gr1=0;gr2=1;cl();w2=1;ogr_bass();audio();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){bass--;gr1=0;cl();w2=1;ogr_bass();audio();}// кнопка <<<<<<
     
    if (newPosition != oldPosition){oldPosition = newPosition;
    bass=bass+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;ogr_bass();audio();} 

     lcd.setCursor(0,0);lcd.print("BASS      ");
  switch(bass){
    case 11: bass_d=15;break;
    case 10: bass_d=12;break;
    case 9:  bass_d=9;break;
    case 8:  bass_d=6;break;
    case 7:  bass_d=3;break;
    case 6:  bass_d=0;break;
    case 5:  bass_d=-3;break;
    case 4:  bass_d=-6;break;
    case 3:  bass_d=-9;break;
    case 2:  bass_d=-12;break;
    }
   if(bass_d>=0){lcd.print("+");}else{lcd.print("-");}
   if(bass_d>-10&&bass_d<=0||bass_d<10&&bass_d>0){{lcd.print(" ");}}
  lcd.print(abs(bass_d));lcd.print(" dB   ");
    if(w2==1){bass_d=bass_d+12;
    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+3+1,1);lcd.print("   ");}}
    if(bass_d==0){lcd.setCursor(0,1);lcd.print("                ");}w2=0;}}

/////////////////////// TREBLE //////////////////////////////////////////////////////
  if(menu==2){ 
     if(ir.value==0xFF9966){treb++;gr1=1;gr2=0;cl();w2=1;ogr_treb();audio();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){treb++;gr2=0;cl();w2=1;ogr_treb();audio();}// кнопка >>>>>>
     if(ir.value==0xFFD926){treb--;gr1=0;gr2=1;cl();w2=1;ogr_treb();audio();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){treb--;gr1=0;cl();w2=1;ogr_treb();audio();}// кнопка <<<<<<
     
    if (newPosition != oldPosition){oldPosition = newPosition;
    treb=treb+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;ogr_treb();audio();} 

     lcd.setCursor(0,0);lcd.print("TREBLE    ");
  switch(treb){
    case 10: treb_d=12;break;
    case 9:  treb_d=9;break;
    case 8:  treb_d=6;break;
    case 7:  treb_d=3;break;
    case 6:  treb_d=0;break;
    case 5:  treb_d=-3;break;
    case 4:  treb_d=-6;break;
    case 3:  treb_d=-9;break;
    case 2:  treb_d=-12;break;
    }
   if(treb_d>=0){lcd.print("+");}else{lcd.print("-");}
   if(treb_d>-10&&treb_d<=0||treb_d<10&&treb_d>0){{lcd.print(" ");}}
  lcd.print(abs(treb_d));lcd.print(" dB   ");
    if(w2==1){treb_d=treb_d+12;
    for(z=0,z0=0,z1=0;z<=treb_d;z++,z1++){if(z1>2){z1=0;z0++;}
    if(z1==1){lcd.setCursor(z0+4,1);lcd.write((uint8_t)0);lcd.setCursor(z0+4+1,1);lcd.print("   ");}}
    if(treb_d==0){lcd.setCursor(0,1);lcd.print("                ");}w2=0;}}

//////////////// BALANCE /////////////////////////////////////
   if(menu==3){ 
     if(ir.value==0xFF9966){balans++;gr1=1;gr2=0;cl();w2=1;ogr_balans();audio();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){balans++;gr2=0;cl();w2=1;ogr_balans();audio();}// кнопка >>>>>>
     if(ir.value==0xFFD926){balans--;gr1=0;gr2=1;cl();w2=1;ogr_balans();audio();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){balans--;gr1=0;cl();w2=1;ogr_balans();audio();}// кнопка <<<<<<
     
    if (newPosition != oldPosition){oldPosition = newPosition;
    balans=balans+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;lcd.clear();ogr_balans();audio();} 

    lcd.setCursor(0,0);
   if(balans*2>=0){lcd.print("-");}else{lcd.print("+");}
  lcd.print(abs(balans*2));lcd.print(" dB ");
  lcd.print(" <>  ");
   if(balans*2>=0){lcd.print("+");}else{lcd.print("-");}
  lcd.print(abs(balans*2));lcd.print(" dB ");
  lcd.setCursor(0,1);lcd.print("L");
  lcd.setCursor(15,1);lcd.print("R");
   if(balans<0){lcd.setCursor(balans+7,1);lcd.write((uint8_t)0);}
   if(balans>0){lcd.setCursor(balans+8,1);lcd.write((uint8_t)0);}
   if(balans==0){lcd.setCursor(7,1);lcd.write((uint8_t)0);lcd.setCursor(8,1);lcd.write((uint8_t)0);}}

  ///////////////////////// input /////////////////////////////
  if(menu==4){
     if(ir.value==0xFF9966){in++;gr1=1;gr2=0;cl1();w2=1;ogr_in();audio();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){in++;gr2=0;cl1();w2=1;ogr_in();audio();}// кнопка >>>>>>
     if(ir.value==0xFFD926){in--;gr1=0;gr2=1;cl1();w2=1;ogr_in();audio();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){in--;gr1=0;cl1();w2=1;ogr_in();audio();}// кнопка <<<<<<
    
if (newPosition != oldPosition) {
    oldPosition = newPosition;
    in=in+newPosition;myEnc.write(0);newPosition=0;audio();lcd.clear();time=millis();w=1;ogr_in();audio();}
 
  lcd.setCursor(0,0);lcd.print("Source selector");
  lcd.setCursor(0,1);lcd.print("INPUT: ");
  if(in==0){lcd.print("Aux in  ");}
  if(in==1){lcd.print("Bluetooth");}
 }
////////////////////////////////////////////////////////////////

    if(millis()-time>10000 && w==1){// сохранение всех настроек в eeprom через 10 сек неактивности
     EEPROM.update(0,vol);
     EEPROM.update(4,balans+4);
     EEPROM.update(1,bass);
     EEPROM.update(2,treb);
     EEPROM.update(3,in);
     w=0;w2=1;menu=0;cl(); }


}//loop
void ogr_in(){if(in>1){in=0;}if(in<0){in=1;}}
void ogr_balans(){if(balans>4){balans=4;}if(balans<-4){balans=-4;}}
void ogr_treb(){if(treb>10){treb=10;}if(treb<2){treb=2;}}
void ogr_bass(){if(bass>11){bass=11;}if(bass<2){bass=2;}}
void ogr_vol(){if(vol<0){vol=0;}if(vol>63){vol=63;}}
void cl(){ir.value=0;delay(200);lcd.clear();}
void cl1(){ir.value=0;delay(400);lcd.clear();}
void to_Timer(){newPosition = myEnc.read()/4;}
void audio(){
  tda.setVolumeL(vol+balans);
  tda.setVolumeR(vol-balans);
  tda.setBass(bass);
  tda.setTreble(treb);
  tda.setMute(mute);
  tda.setSource(in);
 }

Одна и таже кнопка пульта выдает

0x4CB0FADF
0xFF
0x6AD7E284
0xA388EFC7
0x6AD7E284
0xFF
0xD50E5D0F
0x6AD7E284
0xF0EDE213
0x6AD7E284
0x6AD7E284
0xFF
0xAC1B9717
0xB1256267
0xE5A58D02
0xCBA8D2DB
0x85EC5DA7
0x5FBEFCEB
0x2D4F8EE1
0xFF
0x6AD7E284
0xBE3D073A
0x5836A5A3
0xAFAA2D80
0xA5B5D9DB
0x6AD7E284
0x6AD7E284
0xD9508DE6
0xFF
0x6AD7E284

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

21

Re: TDA8425 + энкодер + пульт + STANDBY

Не подносите пульт близко к ИК приемнику. Если сработает, то надо ставить фильтр на ик приемник

Переустановите библиотеку  ИК - http://rcl-radio.ru/wp-content/uploads/ … remote.zip

22

Re: TDA8425 + энкодер + пульт + STANDBY

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

Еще вопрос к автору , что нужно добавить в скетч чтоб добавить звуковой анализатор, так как с этим процесором нет пульта и заукового анализатора, есть или с тем или с тем.

23

Re: TDA8425 + энкодер + пульт + STANDBY

Проверьте скетч с первого поста http://forum.rcl-radio.ru/viewtopic.php?pid=65#p65, он точно рабочий, я по нему видео снимал.

Ни чего в нем не меняйте, поправьте только код для LCD I2C - http://forum.rcl-radio.ru/viewtopic.php?pid=1131#p1131

24

Re: TDA8425 + энкодер + пульт + STANDBY

Попробовал, получаю такие коды

0x1EE9
0xFF
0xFFFFFFFF
0x6AD7E284
0xFF
0xFF
0x6AD7E284
0x6AD7E284
0x6AD7E284
0xFF
0x6AD7E284
0x6AD7E284
0x6AD7E284
0xFF
0x6AD7E284
0x6AD7E284
0x6AD7E284
0xFFFFFFFF
0xFF
0xFFFFFFFF
0xFF
0xFFFFFFFF
0xFF
0x6AD7E284
0xFF
0xFF
0xFF
0xFF
0xFF
0xFF
0x6AD7E284
0x6AD7E284
0xFF
0xFFFFFFFF
0x6AD7E284
0x6AD7E284
0xFF
0x6AD7E284
0x6AD7E284
0xFF
0xFF
0xFFFFFFFF
0xFF11EE
0xFFFFFFFF
0xFF
0xFF11E
0xFF
0xFF11EE
0xFFFFFFFF
0xFF
0xFF
0xFF
0x6AD7E284
0xFF11EE
0xFF
0xFFFFFFFF

Правильный из них

0xFF11EE

25

Re: TDA8425 + энкодер + пульт + STANDBY

В Вашем скетче :

void loop() {

а было

void loop() {delay(10);