Re: TDA7313 + энкодер + ИК пульт + анализатор спектра
Обратите внимание на компоненты отмеченные красным
Проверьте эту цепь на исправность элементов и монтажа
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
forum.rcl-radio.ru → Тестирование скетчей → TDA7313 + энкодер + ИК пульт + анализатор спектра
Обратите внимание на компоненты отмеченные красным
Проверьте эту цепь на исправность элементов и монтажа
Оказался неисправен разъем 3.5 джек , заиграли все выходы, но левые слабей , ещё заменил 7313 и все одинаково играют
я с платы автомогитолы
Обратите внимание на компоненты отмеченные красным
Проверьте эту цепь на исправность элементов и монтажа
добрый вечер , собрал все в корпус усилителя подключил , а он реагирует на пульт от телевизора , прибавляет громкость или убавляет. как побороть Данный контент доступен только зарегистрированным пользователям.
Архив сохраните в ZIP или опубликуйте скетч без сжатия.
добавил в скетч, проблема решилась if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта
Архив сохраните в ZIP или опубликуйте скетч без сжатия.
Mute с пульта исправил
#define IR_1 0xFD8A75 // Кнопка MENU #define IR_3 0xFD7887 // Кнопка + #define IR_4 0xFD4AB5 // Кнопка - #define IR_5 0xFD18E7 // Кнопка IN/AUX #define IR_6 0xFD629D // Кнопка MUTE #define IR_7 0xFD28D7 // Кнопка POWER #define IR_8 0xFD22DD // Кнопка BT #define IR_9 0xFDB04F // Кнопка Radio #include <Wire.h> #include <MsTimer2.h> #include <LiquidCrystal_I2C.h> #include <Encoder.h> #include <EEPROM.h> #include <TDA7313.h> #include <boarddefs.h> #include <IRremote.h> IRrecv irrecv(10); // указываем вывод модуля IR приемника TDA7313 tda; decode_results ir; Encoder myEnc(3, 2);//CLK, DT подключение энкодера LiquidCrystal_I2C lcd(0x3F,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,time1,oldPosition = -999; int vol,w1,w2=1,gr1,gr2,vol_d,menu,w,z,z0,z1,bass_d,bass,treb_d,treb,i,loud,in,mute,power,gain,gain1,gain2,gain3,lr,rr,lf,rf,kkk,vol_old,inp,inp1; void setup(){ Serial.begin(9600); Wire.begin();irrecv.enableIRIn(); // запускаем модуль I2C,IR lcd.init();lcd.backlight(); lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3); pinMode(15,INPUT);// КНОПКА ЭНКОДЕРA pinMode(14,INPUT_PULLUP);// КНОПКА IN pinMode(16,INPUT_PULLUP);// КНОПКА MUTE pinMode(12,OUTPUT);//Питание для источника pinMode(13,OUTPUT);//Питание STANDBY MsTimer2::set(3, to_Timer);MsTimer2::start(); vol = EEPROM.read(0);bass = EEPROM.read(1)-7;treb = EEPROM.read(2)-7;in = EEPROM.read(3); gain1 = EEPROM.read(4);gain2 = EEPROM.read(5);gain3 = EEPROM.read(6);loud = EEPROM.read(7); lr = EEPROM.read(8);rr = EEPROM.read(9);lf = EEPROM.read(10);rf = EEPROM.read(11); if(in==0){gain=gain1;} if(in==1){gain=gain2;} if(in==2){gain=gain3;} lcd.setCursor(0,0);lcd.print("TDA7313 IR POWER"); lcd.setCursor(3,1);lcd.print(" Ver. 3 "); delay(2000);audio(); lcd.clear();} void to_Timer(){newPosition = myEnc.read()/4;} void loop(){ // IR приемник if ( irrecv.decode( &ir )){Serial.print("0x");Serial.println( ir.value,HEX); irrecv.resume();time=millis();w=1;w1=1;}// IR приемник - чтение, в мониторе порта отображаются коды кнопок if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта //IR POWER if(ir.value==IR_7&&power==0){power=1;mute=1;audio();gr1=0;gr2=0;cl(); lcd.setCursor(0,0);lcd.print(" STANDBY ");w=0;menu=100;vol=vol_old;audio();delay(1000);}// power off if(ir.value==(IR_7)&&power==1){power=0;mute=0;audio();gr1=0;gr2=0;cl(); menu=0;time=millis();w=1;w2=1;myEnc.write(0);delay(500);}// power on //KEY POWER if(kkk>4){inp=1;kkk=0;} if(inp==1 && power==0){inp=0;power=1;mute=1;audio();gr1=0;gr2=0;cl(); lcd.setCursor(0,0);lcd.print(" STANDBY ");w=0;menu=100;vol=vol_old;audio();delay(1000);}// power off if(digitalRead(14)==LOW && power==1){inp1=0;inp=0;power=0;mute=0;audio();gr1=0;gr2=0;cl(); menu=0;time=millis();w=1;w2=1;myEnc.write(0);delay(500);}// power on //LED if(in==1&&power==0){digitalWrite(12,HIGH);}else{digitalWrite(12,LOW);} // INPUT POWER if(power==0){digitalWrite(13,HIGH);}else{digitalWrite(13,LOW);} // выход STANDBY //Управление подсветкой if(power==0){lcd.backlight();}else{lcd.noBacklight();} ////////////////////////////////////////////////////////////////////////////////////////////////////////////// if(power==0){ //MENU UP/DOWN KEY if(digitalRead(15)==LOW){menu++;cl();myEnc.write(0);i++;time=millis(); w=1;w2=1;if(menu>5){menu=0;}}// меню //INPUT KEY if(digitalRead(14)==LOW){inp1=1;kkk++;delay(200);} if(digitalRead(14)==HIGH&&inp1==1&&kkk<5){inp1=2;kkk=0;} if(inp1==2&&mute==0){inp1=0;in++;;cl();myEnc.write(0);time=millis();w=1;w2=1;if(in>2){in=0;};audio();}// IN //MUTE KEY if(digitalRead(16)==LOW&&mute==0){mute=1;cl();w=0;w2=1;lcd.print(" MUTE ");menu=100;vol_old=vol;vol=0;audio();}// mute on if(digitalRead(16)==LOW&&mute==1){mute=0;cl();time=millis();w=1;w2=1;menu=0;myEnc.write(0);vol=vol_old;audio();}// mute off //MENU UP/DOWN IR if(ir.value==IR_1){menu++;cl();w=1;w2=1; if(menu>4){menu=0;}}// кнопка меню // if(ir.value==IR_2){menu--;gr1=0;gr2=0;cl();time=millis();w=1;w2=1; // if(menu<0){menu=4;}}// меню кнопка вниз //INPUT IR if(ir.value==IR_5&&mute==0){in=1;gr1=0;gr2=0;cl();time=millis();w=1;w2=1;audio();} if(ir.value==IR_8&&mute==0){in=0;gr1=0;gr2=0;cl();time=millis();w=1;w2=1;audio();} if(ir.value==IR_9&&mute==0){in=2;gr1=0;gr2=0;cl();time=millis();w=1;w2=1;audio();} //MUTE IR if(ir.value==IR_6&&mute==0&&power==0){mute=1;gr1=0;gr2=0;cl();w=0;w2=1; lcd.print(" MUTE ");menu=100;vol_old=vol;vol=0;audio();}// mute on if(ir.value==IR_6&&mute==1&&power==0){mute=0;gr1=0;gr2=0;cl(); time=millis();w=1;w2=1;menu=0;myEnc.write(0);vol=vol_old;audio();}// mute off } //////////////////////////////////////// Volume 0...63 дБ //////////////////////////////////// if(menu==0){ if(ir.value==IR_3){vol++;gr1=1;gr2=0;cl1();w2=1; if(vol<0){vol=0;}if(vol>63){vol=63;}audio();}// кнопка > if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl1();w2=1; if(vol<0){vol=0;}if(vol>63){vol=63;}audio();}// кнопка >>>>>> if(ir.value==IR_4){vol--;gr1=0;gr2=1;cl1();w2=1; if(vol<0){vol=0;}if(vol>63){vol=63;}audio();}// кнопка < if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl1();w2=1; if(vol<0){vol=0;}if(vol>63){vol=63;}audio();}// кнопка <<<<<< if (newPosition != oldPosition) {oldPosition = newPosition; vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1; if(vol>63){vol=63;}if(vol<0){vol=0;}audio();} lcd.setCursor(0,0);lcd.print("Volume "); lcd.print(-78.75+(float)vol*1.25,0); lcd.print(" "); lcd.setCursor(11,0);lcd.print("dB"); lcd.setCursor(14,0); switch(in){ case 0: lcd.print("BT");break; case 1: lcd.print("AU");break; case 2: lcd.print("FM");break; } 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;}} ////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////// индикация тембр НЧ -14...14 дБ ////////////////////////////////////// if(menu==1){ if(ir.value==IR_3){bass++;gr1=1;gr2=0;cl1();w2=1; if(bass>7){bass=7;}if(bass<-7){bass=-7;}audio();}// кнопка > if(ir.value==0xFFFFFFFF and gr1==1){bass++;gr2=0;cl1();w2=1; if(bass>7){bass=7;}if(bass<-7){bass=-7;}audio();}// кнопка >>>>>> if(ir.value==IR_4){bass--;gr1=0;gr2=1;cl1();w2=1; if(bass>7){bass=7;}if(bass<-7){bass=-7;}audio();}// кнопка < if(ir.value==0xFFFFFFFF and gr2==1){bass--;gr1=0;cl1();w2=1; if(bass>7){bass=7;}if(bass<-7){bass=-7;}audio();}// кнопка <<<<<< if (newPosition != oldPosition) { oldPosition = newPosition; bass=bass+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1; if(bass>7){bass=7;}if(bass<-7){bass=-7;}audio();} lcd.setCursor(0,0);lcd.print("Bass "); lcd.print(" ");lcd.print(bass*2);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");bass_d=bass*2+15; if(w2==1){ 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);}w2=0;}} //////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////// индикация тембр ВЧ -14...14 дБ //////////////////////////////////////// if(menu==2){ if(ir.value==IR_3){treb++;gr1=1;gr2=0;cl1();w2=1; if(treb>7){treb=7;}if(treb<-7){treb=-7;}audio();}// кнопка > if(ir.value==0xFFFFFFFF and gr1==1){treb++;gr2=0;cl1();w2=1; if(treb>7){treb=7;}if(treb<-7){treb=-7;}audio();}// кнопка >>>>>> if(ir.value==IR_4){treb--;gr1=0;gr2=1;cl1();w2=1; if(treb>7){treb=7;}if(treb<-7){treb=-7;}audio();}// кнопка < if(ir.value==0xFFFFFFFF and gr2==1){treb--;gr1=0;cl1();w2=1; if(treb>7){treb=7;}if(treb<-7){treb=-7;}audio();}// кнопка <<<<<< if (newPosition != oldPosition) { oldPosition = newPosition; treb=treb+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1; if(treb>7){treb=7;}if(treb<-7){treb=-7;}audio();} lcd.setCursor(0,0);lcd.print("Treble "); lcd.print(" ");lcd.print(treb*2);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");treb_d=treb*2+15; if(w2==1){ 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);}w2=0;}} ////////////////////////////////////// BALANCE ////////////////////////////////////////////// if(menu==3){ if(ir.value==IR_3){lf++;lr++;rf--;rr--;cl1(); lcd.clear();w=1;w2=1;//кнопка > if(lf>10){lf=10;}if(rf<0){rf=0;}if(lr>10){lr=10;}if(rr<0){rr=0;}audio();} if(ir.value==IR_4){lf--;lr--;rf++;rr++;cl1(); lcd.clear();w=1;w2=1;//кнопка < if(lf<0){lf=0;}if(rf>10){rf=10;}if(lr<0){lr=0;}if(rr>10){rr=10;}audio();} if (newPosition != oldPosition){ oldPosition = newPosition; lf=lf+newPosition;lr=lr+newPosition;rf=rf-newPosition;rr=rr-newPosition;myEnc.write(0);newPosition=0; lcd.clear();time=millis();w=1;w2=1; if(lf>10){lf=10;}if(lf<0){lf=0;}if(rf>10){rf=10;}if(rf<0){rf=0;} if(lr>10){lr=10;}if(lr<0){lr=0;}if(rr>10){rr=10;}if(rr<0){rr=0;}audio();} lcd.setCursor(0,0); if(w2==1){ if(lf-5>=0){lcd.print("-");}else{lcd.print("+");} lcd.print(abs(rf-5));lcd.print(" dB "); lcd.print(" <> "); if(rf-5>=0){lcd.print("-");}else{lcd.print("+");} lcd.print(abs(rf-5));lcd.print(" dB "); lcd.setCursor(0,1);lcd.print("L"); lcd.setCursor(15,1);lcd.print("R"); if(lf-5<0){lcd.setCursor(lf-5+7,1);lcd.write((uint8_t)0);} if(lf-5>0){lcd.setCursor(lf-5+8,1);lcd.write((uint8_t)0);} if(lf-5==0){lcd.setCursor(7,1);lcd.write((uint8_t)0);lcd.setCursor(8,1);lcd.write((uint8_t)0);}w2=0;} } /////////////////////////////////// LOUDNESS //////////////////////////////////////// if(menu==4){ if(ir.value==IR_3){loud++;cl1();if(loud>1){loud=0;}w=1;w2=1;audio();} if (newPosition != oldPosition) { oldPosition = newPosition; loud=loud+newPosition;myEnc.write(0);newPosition=0;lcd.clear();time=millis();w=1;w2=1; if(loud>1){loud=0;}if(loud<0){loud=1;}audio();} lcd.setCursor(0,0);lcd.print("LOUDNESS "); if(loud==1){lcd.print("ON ");}else{lcd.print("OFF");} } ///////////////////////////////////// INPUT GAIN ////////////////////////////////////////// if(menu==5){ if(in==0){gain=gain1;} if(in==1){gain=gain2;} if(in==2){gain=gain3;} /* if(ir.value==IR_3);gain++;gr1=1;gr2=0;cl1();w2=1;// кнопка > if(ir.value==IR_4);gain--;gr1=0;gr2=1;cl1();w2=1;// кнопка < if(gain>3){gain=3;}if(gain<0){gain=0;}audio();} */ if (newPosition != oldPosition) { oldPosition = newPosition; gain=gain+newPosition;myEnc.write(0);newPosition=0;lcd.clear();time=millis();w=1;w2=1; if(gain>3){gain=3;}if(gain<0){gain=0;}audio();} if(in==0){gain1=gain;} if(in==1){gain2=gain;} if(in==2){gain3=gain;} lcd.setCursor(0,0);lcd.print(" INPUT ");lcd.print(in+1); lcd.setCursor(0,1);lcd.print(" Gain ");lcd.print((float)gain*3.75);lcd.print(" dB ");} ////////////////////////////////////////////////////////////////////////////////////////// if(millis()-time>5000 && w==1 && power==0 && mute == 0){ EEPROM.update(0,vol); EEPROM.update(1,bass+7); EEPROM.update(2,treb+7); EEPROM.update(3,in); EEPROM.update(4,gain1);EEPROM.update(5,gain2);EEPROM.update(6,gain3); EEPROM.update(7,loud); EEPROM.update(8,lr);EEPROM.update(9,rr);EEPROM.update(10,lf);EEPROM.update(11,rf); // lcd.clear(); w=0,w2=1;menu=0;cl();} }// loop void cl1(){ir.value=0;delay(50);} void cl(){ir.value=0;delay(300);lcd.clear();} void audio(){ tda.setVolume(vol); // громкость 0...63 tda.setAttLR(lr); // аттенюатор LR 0...31 tda.setAttRR(rr); // аттенюатор RR 0...31 tda.setAttLF(lf); // аттенюатор LF 0...31 tda.setAttRF(rf); // аттенюатор RF 0...31 tda.setSwitch(in,loud,gain); // вход 0...2, тонкомпенсация 1 вкл 0 выкл, усиление 0...3 tda.setBass(bass); // тембр НЧ -7...+7 tda.setTreble(treb); // тембр ВЧ -7...+7 }
Всем привет!
А есть уже исправленный и рабочий скетч но под LCD2004?
Выложите плиз, очень нннадо ))))
А с анализатором спектра нету?
нет
у вас есть скйтч для tda7463d
Скетча нет.
Привет) Есть идея использовать 2 а может и 3 аудио процессора ля построения 3хполосной акустики, либо домашнего кинотеатра. но смысл будет в том чтоб отдельно настраивались частоты на каждой стереопаре. регулировалась громкость как всех одновременно стереоканалов так и по отдельности для согласования уровней для каждой стереопары. Я понимаю что в каждом процессоре 4 выходных канала, но нужно только 2 канала от каждого процессора. Можно ли это осуществить ?Думаю задумка интересная, к тому же может быть использована в автозвуке. Ведь магнитолы процессорные стоят от 5-6 тысяч
привет, тут ктото есть? может у кого-то есть скетч с mute и управлением st-by с пульта под плату из статьи но не под i2c дисплей, а под обычный? мпасибо заранее
сам не могу ещё так как только учусь(
Обычный всмысле 1602 но без i2c модуля
#define IR_1 0xFD8A75 // Кнопка MENU
#define IR_3 0xFD7887 // Кнопка +
#define IR_4 0xFD4AB5 // Кнопка -
#define IR_5 0xFD18E7 // Кнопка IN/AUX
#define IR_6 0xFD629D // Кнопка MUTE
#define IR_7 0xFD28D7 // Кнопка POWER
#define IR_8 0xFD22DD // Кнопка BT
#define IR_9 0xFDB04F // Кнопка Radio
#include <Wire.h>
#include <MsTimer2.h>
#include <LiquidCrystal.h>
#include <Encoder.h>
#include <EEPROM.h>
#include <TDA7313.h>
#include <boarddefs.h>
#include <IRremote.h>
IRrecv irrecv(10); // указываем вывод модуля IR приемника
TDA7313 tda;
decode_results ir;
Encoder myEnc(3, 2);//CLK, DT подключение энкодера
LiquidCrystal lcd(4, 5, 6, 7, 8, 9); // номер вывода дисплея:RS,E,D4,D5,D6,D7 | rw=GND
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,time1,oldPosition = -999;
int vol,w1,w2=1,gr1,gr2,vol_d,menu,w,z,z0,z1,bass_d,bass,treb_d,treb,i,loud,in,mute,power,gain,gain1,gain2,gain3,lr,rr,lf,rf,kkk,vol_old,inp,inp1;
void setup(){
Serial.begin(9600);
Wire.begin();irrecv.enableIRIn(); // запускаем модуль I2C,IR
lcd.begin(16, 2);
lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
pinMode(15,INPUT);// КНОПКА ЭНКОДЕРA
pinMode(14,INPUT_PULLUP);// КНОПКА IN
pinMode(16,INPUT_PULLUP);// КНОПКА MUTE
pinMode(12,OUTPUT);//Питание для источника
pinMode(13,OUTPUT);//Питание STANDBY
MsTimer2::set(3, to_Timer);MsTimer2::start();
vol = EEPROM.read(0);bass = EEPROM.read(1)-7;treb = EEPROM.read(2)-7;in = EEPROM.read(3);
gain1 = EEPROM.read(4);gain2 = EEPROM.read(5);gain3 = EEPROM.read(6);loud = EEPROM.read(7);
lr = EEPROM.read(8);rr = EEPROM.read(9);lf = EEPROM.read(10);rf = EEPROM.read(11);
if(in==0){gain=gain1;}
if(in==1){gain=gain2;}
if(in==2){gain=gain3;}
lcd.setCursor(0,0);lcd.print("TDA7313 IR POWER");
lcd.setCursor(3,1);lcd.print(" Ver. 3 ");
delay(2000);audio();
lcd.clear();}
void to_Timer(){newPosition = myEnc.read()/4;}
void loop(){
// IR приемник
if ( irrecv.decode( &ir )){Serial.print("0x");Serial.println( ir.value,HEX);
irrecv.resume();time=millis();w=1;w1=1;}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта
//IR POWER
if(ir.value==IR_7&&power==0){power=1;mute=1;audio();gr1=0;gr2=0;cl();
lcd.setCursor(0,0);lcd.print(" STANDBY ");w=0;menu=100;vol=vol_old;audio();delay(1000);}// power off
if(ir.value==(IR_7)&&power==1){power=0;mute=0;audio();gr1=0;gr2=0;cl();
menu=0;time=millis();w=1;w2=1;myEnc.write(0);delay(500);}// power on
//KEY POWER
if(kkk>4){inp=1;kkk=0;}
if(inp==1 && power==0){inp=0;power=1;mute=1;audio();gr1=0;gr2=0;cl();
lcd.setCursor(0,0);lcd.print(" STANDBY ");w=0;menu=100;vol=vol_old;audio();delay(1000);}// power off
if(digitalRead(14)==LOW && power==1){inp1=0;inp=0;power=0;mute=0;audio();gr1=0;gr2=0;cl();
menu=0;time=millis();w=1;w2=1;myEnc.write(0);delay(500);}// power on
//LED
if(in==1&&power==0){digitalWrite(12,HIGH);}else{digitalWrite(12,LOW);} // INPUT POWER
if(power==0){digitalWrite(13,HIGH);}else{digitalWrite(13,LOW);} // выход STANDBY
//Управление подсветкой
// if(power==0){lcd.backlight();}else{lcd.noBacklight();}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(power==0){
//MENU UP/DOWN KEY
if(digitalRead(15)==LOW){menu++;cl();myEnc.write(0);i++;time=millis();
w=1;w2=1;if(menu>5){menu=0;}}// меню
//INPUT KEY
if(digitalRead(14)==LOW){inp1=1;kkk++;delay(200);}
if(digitalRead(14)==HIGH&&inp1==1&&kkk<5){inp1=2;kkk=0;}
if(inp1==2&&mute==0){inp1=0;in++;;cl();myEnc.write(0);time=millis();w=1;w2=1;if(in>2){in=0;};audio();}// IN
//MUTE KEY
if(digitalRead(16)==LOW&&mute==0){mute=1;cl();w=0;w2=1;lcd.print(" MUTE ");menu=100;vol_old=vol;vol=0;audio();}// mute on
if(digitalRead(16)==LOW&&mute==1){mute=0;cl();time=millis();w=1;w2=1;menu=0;myEnc.write(0);vol=vol_old;audio();}// mute off
//MENU UP/DOWN IR
if(ir.value==IR_1){menu++;cl();w=1;w2=1;
if(menu>4){menu=0;}}// кнопка меню
// if(ir.value==IR_2){menu--;gr1=0;gr2=0;cl();time=millis();w=1;w2=1;
// if(menu<0){menu=4;}}// меню кнопка вниз
//INPUT IR
if(ir.value==IR_5&&mute==0){in=1;gr1=0;gr2=0;cl();time=millis();w=1;w2=1;audio();}
if(ir.value==IR_8&&mute==0){in=0;gr1=0;gr2=0;cl();time=millis();w=1;w2=1;audio();}
if(ir.value==IR_9&&mute==0){in=2;gr1=0;gr2=0;cl();time=millis();w=1;w2=1;audio();}
//MUTE IR
if(ir.value==IR_6&&mute==0&&power==0){mute=1;gr1=0;gr2=0;cl();w=0;w2=1;
lcd.print(" MUTE ");menu=100;vol_old=vol;vol=0;audio();}// mute on
if(ir.value==IR_6&&mute==1&&power==0){mute=0;gr1=0;gr2=0;cl();
time=millis();w=1;w2=1;menu=0;myEnc.write(0);vol=vol_old;audio();}// mute off
}
//////////////////////////////////////// Volume 0...63 дБ ////////////////////////////////////
if(menu==0){
if(ir.value==IR_3){vol++;gr1=1;gr2=0;cl1();w2=1;
if(vol<0){vol=0;}if(vol>63){vol=63;}audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl1();w2=1;
if(vol<0){vol=0;}if(vol>63){vol=63;}audio();}// кнопка >>>>>>
if(ir.value==IR_4){vol--;gr1=0;gr2=1;cl1();w2=1;
if(vol<0){vol=0;}if(vol>63){vol=63;}audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl1();w2=1;
if(vol<0){vol=0;}if(vol>63){vol=63;}audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {oldPosition = newPosition;
vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;
if(vol>63){vol=63;}if(vol<0){vol=0;}audio();}
lcd.setCursor(0,0);lcd.print("Volume ");
lcd.print(-78.75+(float)vol*1.25,0);
lcd.print(" ");
lcd.setCursor(11,0);lcd.print("dB");
lcd.setCursor(14,0);
switch(in){
case 0: lcd.print("BT");break;
case 1: lcd.print("AU");break;
case 2: lcd.print("FM");break;
}
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;}}
//////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////// индикация тембр НЧ -14...14 дБ //////////////////////////////////////
if(menu==1){
if(ir.value==IR_3){bass++;gr1=1;gr2=0;cl1();w2=1;
if(bass>7){bass=7;}if(bass<-7){bass=-7;}audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){bass++;gr2=0;cl1();w2=1;
if(bass>7){bass=7;}if(bass<-7){bass=-7;}audio();}// кнопка >>>>>>
if(ir.value==IR_4){bass--;gr1=0;gr2=1;cl1();w2=1;
if(bass>7){bass=7;}if(bass<-7){bass=-7;}audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){bass--;gr1=0;cl1();w2=1;
if(bass>7){bass=7;}if(bass<-7){bass=-7;}audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
bass=bass+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;
if(bass>7){bass=7;}if(bass<-7){bass=-7;}audio();}
lcd.setCursor(0,0);lcd.print("Bass ");
lcd.print(" ");lcd.print(bass*2);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");bass_d=bass*2+15;
if(w2==1){
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);}w2=0;}}
////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////// индикация тембр ВЧ -14...14 дБ ////////////////////////////////////////
if(menu==2){
if(ir.value==IR_3){treb++;gr1=1;gr2=0;cl1();w2=1;
if(treb>7){treb=7;}if(treb<-7){treb=-7;}audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){treb++;gr2=0;cl1();w2=1;
if(treb>7){treb=7;}if(treb<-7){treb=-7;}audio();}// кнопка >>>>>>
if(ir.value==IR_4){treb--;gr1=0;gr2=1;cl1();w2=1;
if(treb>7){treb=7;}if(treb<-7){treb=-7;}audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){treb--;gr1=0;cl1();w2=1;
if(treb>7){treb=7;}if(treb<-7){treb=-7;}audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
treb=treb+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;
if(treb>7){treb=7;}if(treb<-7){treb=-7;}audio();}
lcd.setCursor(0,0);lcd.print("Treble ");
lcd.print(" ");lcd.print(treb*2);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");treb_d=treb*2+15;
if(w2==1){
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);}w2=0;}}
////////////////////////////////////// BALANCE //////////////////////////////////////////////
if(menu==3){
if(ir.value==IR_3){lf++;lr++;rf--;rr--;cl1();
lcd.clear();w=1;w2=1;//кнопка >
if(lf>10){lf=10;}if(rf<0){rf=0;}if(lr>10){lr=10;}if(rr<0){rr=0;}audio();}
if(ir.value==IR_4){lf--;lr--;rf++;rr++;cl1();
lcd.clear();w=1;w2=1;//кнопка <
if(lf<0){lf=0;}if(rf>10){rf=10;}if(lr<0){lr=0;}if(rr>10){rr=10;}audio();}
if (newPosition != oldPosition){
oldPosition = newPosition;
lf=lf+newPosition;lr=lr+newPosition;rf=rf-newPosition;rr=rr-newPosition;myEnc.write(0);newPosition=0;
lcd.clear();time=millis();w=1;w2=1;
if(lf>10){lf=10;}if(lf<0){lf=0;}if(rf>10){rf=10;}if(rf<0){rf=0;}
if(lr>10){lr=10;}if(lr<0){lr=0;}if(rr>10){rr=10;}if(rr<0){rr=0;}audio();}
lcd.setCursor(0,0);
if(w2==1){
if(lf-5>=0){lcd.print("-");}else{lcd.print("+");}
lcd.print(abs(rf-5));lcd.print(" dB ");
lcd.print(" <> ");
if(rf-5>=0){lcd.print("-");}else{lcd.print("+");}
lcd.print(abs(rf-5));lcd.print(" dB ");
lcd.setCursor(0,1);lcd.print("L");
lcd.setCursor(15,1);lcd.print("R");
if(lf-5<0){lcd.setCursor(lf-5+7,1);lcd.write((uint8_t)0);}
if(lf-5>0){lcd.setCursor(lf-5+8,1);lcd.write((uint8_t)0);}
if(lf-5==0){lcd.setCursor(7,1);lcd.write((uint8_t)0);lcd.setCursor(8,1);lcd.write((uint8_t)0);}w2=0;}
}
/////////////////////////////////// LOUDNESS ////////////////////////////////////////
if(menu==4){
if(ir.value==IR_3){loud++;cl1();if(loud>1){loud=0;}w=1;w2=1;audio();}
if (newPosition != oldPosition) {
oldPosition = newPosition;
loud=loud+newPosition;myEnc.write(0);newPosition=0;lcd.clear();time=millis();w=1;w2=1;
if(loud>1){loud=0;}if(loud<0){loud=1;}audio();}
lcd.setCursor(0,0);lcd.print("LOUDNESS ");
if(loud==1){lcd.print("ON ");}else{lcd.print("OFF");}
}
///////////////////////////////////// INPUT GAIN //////////////////////////////////////////
if(menu==5){
if(in==0){gain=gain1;}
if(in==1){gain=gain2;}
if(in==2){gain=gain3;}
/*
if(ir.value==IR_3);gain++;gr1=1;gr2=0;cl1();w2=1;// кнопка >
if(ir.value==IR_4);gain--;gr1=0;gr2=1;cl1();w2=1;// кнопка <
if(gain>3){gain=3;}if(gain<0){gain=0;}audio();}
*/
if (newPosition != oldPosition) {
oldPosition = newPosition;
gain=gain+newPosition;myEnc.write(0);newPosition=0;lcd.clear();time=millis();w=1;w2=1;
if(gain>3){gain=3;}if(gain<0){gain=0;}audio();}
if(in==0){gain1=gain;}
if(in==1){gain2=gain;}
if(in==2){gain3=gain;}
lcd.setCursor(0,0);lcd.print(" INPUT ");lcd.print(in+1);
lcd.setCursor(0,1);lcd.print(" Gain ");lcd.print((float)gain*3.75);lcd.print(" dB ");}
//////////////////////////////////////////////////////////////////////////////////////////
if(millis()-time>5000 && w==1 && power==0 && mute == 0){
EEPROM.update(0,vol);
EEPROM.update(1,bass+7);
EEPROM.update(2,treb+7);
EEPROM.update(3,in);
EEPROM.update(4,gain1);EEPROM.update(5,gain2);EEPROM.update(6,gain3);
EEPROM.update(7,loud);
EEPROM.update(8,lr);EEPROM.update(9,rr);EEPROM.update(10,lf);EEPROM.update(11,rf);
// lcd.clear();
w=0,w2=1;menu=0;cl();}
}// loop
void cl1(){ir.value=0;delay(50);}
void cl(){ir.value=0;delay(300);lcd.clear();}
void audio(){
tda.setVolume(vol); // громкость 0...63
tda.setAttLR(lr); // аттенюатор LR 0...31
tda.setAttRR(rr); // аттенюатор RR 0...31
tda.setAttLF(lf); // аттенюатор LF 0...31
tda.setAttRF(rf); // аттенюатор RF 0...31
tda.setSwitch(in,loud,gain); // вход 0...2, тонкомпенсация 1 вкл 0 выкл, усиление 0...3
tda.setBass(bass); // тембр НЧ -7...+7
tda.setTreble(treb); // тембр ВЧ -7...+7
}
Опубликуйте скетч который надо изменить.
здраствуйте можно сектч переделать под дисплей без I2C . Сделать режим стэндбай включающий отдельной кнопкой и пин включающий подсведку и он же включение унч,без энкодера и продублировать пультом все кнопки (например кнопка +,- стенбай отдельная от всех, меню основное и дополнительное,муте ,все кнопки на GND.Есть два процессора 7313 и 7719 собираю оба .Такое же сообщение отправил в тему про 7719.Так что не подумайте ,что ошибся. По изночальной схеме собирал
#define IR_1 0xFD8A75 // Кнопка MENU
#define IR_3 0xFD7887 // Кнопка +
#define IR_4 0xFD4AB5 // Кнопка -
#define IR_5 0xFD18E7 // Кнопка IN/AUX
#define IR_6 0xFD629D // Кнопка MUTE
#define IR_7 0xFD28D7 // Кнопка POWER
#define IR_8 0xFD22DD // Кнопка BT
#define IR_9 0xFDB04F // Кнопка Radio
#include <Wire.h>
#include <MsTimer2.h>
#include <LiquidCrystal.h>
#include <Encoder.h>
#include <EEPROM.h>
#include <TDA7313.h>
#include <boarddefs.h>
#include <IRremote.h>
IRrecv irrecv(10); // указываем вывод модуля IR приемника
TDA7313 tda;
decode_results ir;
Encoder myEnc(3, 2);//CLK, DT подключение энкодера
LiquidCrystal lcd(4, 5, 6, 7, 8, 9); // номер вывода дисплея:RS,E,D4,D5,D6,D7 | rw=GND
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,time1,oldPosition = -999;
int vol,w1,w2=1,gr1,gr2,vol_d,menu,w,z,z0,z1,bass_d,bass,treb_d,treb,i,loud,in,mute,power,gain,gain1,gain2,gain3,lr,rr,lf,rf,kkk,vol_old,inp,inp1;
void setup(){
Serial.begin(9600);
Wire.begin();irrecv.enableIRIn(); // запускаем модуль I2C,IR
lcd.begin(16, 2);
lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
pinMode(15,INPUT);// КНОПКА ЭНКОДЕРA
pinMode(14,INPUT_PULLUP);// КНОПКА IN
pinMode(16,INPUT_PULLUP);// КНОПКА MUTE
pinMode(12,OUTPUT);//Питание для источника
pinMode(13,OUTPUT);//Питание STANDBY
MsTimer2::set(3, to_Timer);MsTimer2::start();
vol = EEPROM.read(0);bass = EEPROM.read(1)-7;treb = EEPROM.read(2)-7;in = EEPROM.read(3);
gain1 = EEPROM.read(4);gain2 = EEPROM.read(5);gain3 = EEPROM.read(6);loud = EEPROM.read(7);
lr = EEPROM.read(8);rr = EEPROM.read(9);lf = EEPROM.read(10);rf = EEPROM.read(11);
if(in==0){gain=gain1;}
if(in==1){gain=gain2;}
if(in==2){gain=gain3;}
lcd.setCursor(0,0);lcd.print("TDA7313 IR POWER");
lcd.setCursor(3,1);lcd.print(" Ver. 3 ");
delay(2000);audio();
lcd.clear();}
void to_Timer(){newPosition = myEnc.read()/4;}
void loop(){
// IR приемник
if ( irrecv.decode( &ir )){Serial.print("0x");Serial.println( ir.value,HEX);
irrecv.resume();time=millis();w=1;w1=1;}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта
//IR POWER
if(ir.value==IR_7&&power==0){power=1;mute=1;audio();gr1=0;gr2=0;cl();
lcd.setCursor(0,0);lcd.print(" STANDBY ");w=0;menu=100;vol=vol_old;audio();delay(1000);}// power off
if(ir.value==(IR_7)&&power==1){power=0;mute=0;audio();gr1=0;gr2=0;cl();
menu=0;time=millis();w=1;w2=1;myEnc.write(0);delay(500);}// power on
//KEY POWER
if(kkk>4){inp=1;kkk=0;}
if(inp==1 && power==0){inp=0;power=1;mute=1;audio();gr1=0;gr2=0;cl();
lcd.setCursor(0,0);lcd.print(" STANDBY ");w=0;menu=100;vol=vol_old;audio();delay(1000);}// power off
if(digitalRead(14)==LOW && power==1){inp1=0;inp=0;power=0;mute=0;audio();gr1=0;gr2=0;cl();
menu=0;time=millis();w=1;w2=1;myEnc.write(0);delay(500);}// power on
//LED
if(in==1&&power==0){digitalWrite(12,HIGH);}else{digitalWrite(12,LOW);} // INPUT POWER
if(power==0){digitalWrite(13,HIGH);}else{digitalWrite(13,LOW);} // выход STANDBY
//Управление подсветкой
// if(power==0){lcd.backlight();}else{lcd.noBacklight();}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(power==0){
//MENU UP/DOWN KEY
if(digitalRead(15)==LOW){menu++;cl();myEnc.write(0);i++;time=millis();
w=1;w2=1;if(menu>5){menu=0;}}// меню
//INPUT KEY
if(digitalRead(14)==LOW){inp1=1;kkk++;delay(200);}
if(digitalRead(14)==HIGH&&inp1==1&&kkk<5){inp1=2;kkk=0;}
if(inp1==2&&mute==0){inp1=0;in++;;cl();myEnc.write(0);time=millis();w=1;w2=1;if(in>2){in=0;};audio();}// IN
//MUTE KEY
if(digitalRead(16)==LOW&&mute==0){mute=1;cl();w=0;w2=1;lcd.print(" MUTE ");menu=100;vol_old=vol;vol=0;audio();}// mute on
if(digitalRead(16)==LOW&&mute==1){mute=0;cl();time=millis();w=1;w2=1;menu=0;myEnc.write(0);vol=vol_old;audio();}// mute off
//MENU UP/DOWN IR
if(ir.value==IR_1){menu++;cl();w=1;w2=1;
if(menu>4){menu=0;}}// кнопка меню
// if(ir.value==IR_2){menu--;gr1=0;gr2=0;cl();time=millis();w=1;w2=1;
// if(menu<0){menu=4;}}// меню кнопка вниз
//INPUT IR
if(ir.value==IR_5&&mute==0){in=1;gr1=0;gr2=0;cl();time=millis();w=1;w2=1;audio();}
if(ir.value==IR_8&&mute==0){in=0;gr1=0;gr2=0;cl();time=millis();w=1;w2=1;audio();}
if(ir.value==IR_9&&mute==0){in=2;gr1=0;gr2=0;cl();time=millis();w=1;w2=1;audio();}
//MUTE IR
if(ir.value==IR_6&&mute==0&&power==0){mute=1;gr1=0;gr2=0;cl();w=0;w2=1;
lcd.print(" MUTE ");menu=100;vol_old=vol;vol=0;audio();}// mute on
if(ir.value==IR_6&&mute==1&&power==0){mute=0;gr1=0;gr2=0;cl();
time=millis();w=1;w2=1;menu=0;myEnc.write(0);vol=vol_old;audio();}// mute off
}
//////////////////////////////////////// Volume 0...63 дБ ////////////////////////////////////
if(menu==0){
if(ir.value==IR_3){vol++;gr1=1;gr2=0;cl1();w2=1;
if(vol<0){vol=0;}if(vol>63){vol=63;}audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl1();w2=1;
if(vol<0){vol=0;}if(vol>63){vol=63;}audio();}// кнопка >>>>>>
if(ir.value==IR_4){vol--;gr1=0;gr2=1;cl1();w2=1;
if(vol<0){vol=0;}if(vol>63){vol=63;}audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl1();w2=1;
if(vol<0){vol=0;}if(vol>63){vol=63;}audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {oldPosition = newPosition;
vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;
if(vol>63){vol=63;}if(vol<0){vol=0;}audio();}
lcd.setCursor(0,0);lcd.print("Volume ");
lcd.print(-78.75+(float)vol*1.25,0);
lcd.print(" ");
lcd.setCursor(11,0);lcd.print("dB");
lcd.setCursor(14,0);
switch(in){
case 0: lcd.print("BT");break;
case 1: lcd.print("AU");break;
case 2: lcd.print("FM");break;
}
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;}}
//////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////// индикация тембр НЧ -14...14 дБ //////////////////////////////////////
if(menu==1){
if(ir.value==IR_3){bass++;gr1=1;gr2=0;cl1();w2=1;
if(bass>7){bass=7;}if(bass<-7){bass=-7;}audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){bass++;gr2=0;cl1();w2=1;
if(bass>7){bass=7;}if(bass<-7){bass=-7;}audio();}// кнопка >>>>>>
if(ir.value==IR_4){bass--;gr1=0;gr2=1;cl1();w2=1;
if(bass>7){bass=7;}if(bass<-7){bass=-7;}audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){bass--;gr1=0;cl1();w2=1;
if(bass>7){bass=7;}if(bass<-7){bass=-7;}audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
bass=bass+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;
if(bass>7){bass=7;}if(bass<-7){bass=-7;}audio();}
lcd.setCursor(0,0);lcd.print("Bass ");
lcd.print(" ");lcd.print(bass*2);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");bass_d=bass*2+15;
if(w2==1){
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);}w2=0;}}
////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////// индикация тембр ВЧ -14...14 дБ ////////////////////////////////////////
if(menu==2){
if(ir.value==IR_3){treb++;gr1=1;gr2=0;cl1();w2=1;
if(treb>7){treb=7;}if(treb<-7){treb=-7;}audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){treb++;gr2=0;cl1();w2=1;
if(treb>7){treb=7;}if(treb<-7){treb=-7;}audio();}// кнопка >>>>>>
if(ir.value==IR_4){treb--;gr1=0;gr2=1;cl1();w2=1;
if(treb>7){treb=7;}if(treb<-7){treb=-7;}audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){treb--;gr1=0;cl1();w2=1;
if(treb>7){treb=7;}if(treb<-7){treb=-7;}audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
treb=treb+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;
if(treb>7){treb=7;}if(treb<-7){treb=-7;}audio();}
lcd.setCursor(0,0);lcd.print("Treble ");
lcd.print(" ");lcd.print(treb*2);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");treb_d=treb*2+15;
if(w2==1){
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);}w2=0;}}
////////////////////////////////////// BALANCE //////////////////////////////////////////////
if(menu==3){
if(ir.value==IR_3){lf++;lr++;rf--;rr--;cl1();
lcd.clear();w=1;w2=1;//кнопка >
if(lf>10){lf=10;}if(rf<0){rf=0;}if(lr>10){lr=10;}if(rr<0){rr=0;}audio();}
if(ir.value==IR_4){lf--;lr--;rf++;rr++;cl1();
lcd.clear();w=1;w2=1;//кнопка <
if(lf<0){lf=0;}if(rf>10){rf=10;}if(lr<0){lr=0;}if(rr>10){rr=10;}audio();}
if (newPosition != oldPosition){
oldPosition = newPosition;
lf=lf+newPosition;lr=lr+newPosition;rf=rf-newPosition;rr=rr-newPosition;myEnc.write(0);newPosition=0;
lcd.clear();time=millis();w=1;w2=1;
if(lf>10){lf=10;}if(lf<0){lf=0;}if(rf>10){rf=10;}if(rf<0){rf=0;}
if(lr>10){lr=10;}if(lr<0){lr=0;}if(rr>10){rr=10;}if(rr<0){rr=0;}audio();}
lcd.setCursor(0,0);
if(w2==1){
if(lf-5>=0){lcd.print("-");}else{lcd.print("+");}
lcd.print(abs(rf-5));lcd.print(" dB ");
lcd.print(" <> ");
if(rf-5>=0){lcd.print("-");}else{lcd.print("+");}
lcd.print(abs(rf-5));lcd.print(" dB ");
lcd.setCursor(0,1);lcd.print("L");
lcd.setCursor(15,1);lcd.print("R");
if(lf-5<0){lcd.setCursor(lf-5+7,1);lcd.write((uint8_t)0);}
if(lf-5>0){lcd.setCursor(lf-5+8,1);lcd.write((uint8_t)0);}
if(lf-5==0){lcd.setCursor(7,1);lcd.write((uint8_t)0);lcd.setCursor(8,1);lcd.write((uint8_t)0);}w2=0;}
}
/////////////////////////////////// LOUDNESS ////////////////////////////////////////
if(menu==4){
if(ir.value==IR_3){loud++;cl1();if(loud>1){loud=0;}w=1;w2=1;audio();}
if (newPosition != oldPosition) {
oldPosition = newPosition;
loud=loud+newPosition;myEnc.write(0);newPosition=0;lcd.clear();time=millis();w=1;w2=1;
if(loud>1){loud=0;}if(loud<0){loud=1;}audio();}
lcd.setCursor(0,0);lcd.print("LOUDNESS ");
if(loud==1){lcd.print("ON ");}else{lcd.print("OFF");}
}
///////////////////////////////////// INPUT GAIN //////////////////////////////////////////
if(menu==5){
if(in==0){gain=gain1;}
if(in==1){gain=gain2;}
if(in==2){gain=gain3;}
/*
if(ir.value==IR_3);gain++;gr1=1;gr2=0;cl1();w2=1;// кнопка >
if(ir.value==IR_4);gain--;gr1=0;gr2=1;cl1();w2=1;// кнопка <
if(gain>3){gain=3;}if(gain<0){gain=0;}audio();}
*/
if (newPosition != oldPosition) {
oldPosition = newPosition;
gain=gain+newPosition;myEnc.write(0);newPosition=0;lcd.clear();time=millis();w=1;w2=1;
if(gain>3){gain=3;}if(gain<0){gain=0;}audio();}
if(in==0){gain1=gain;}
if(in==1){gain2=gain;}
if(in==2){gain3=gain;}
lcd.setCursor(0,0);lcd.print(" INPUT ");lcd.print(in+1);
lcd.setCursor(0,1);lcd.print(" Gain ");lcd.print((float)gain*3.75);lcd.print(" dB ");}
//////////////////////////////////////////////////////////////////////////////////////////
if(millis()-time>5000 && w==1 && power==0 && mute == 0){
EEPROM.update(0,vol);
EEPROM.update(1,bass+7);
EEPROM.update(2,treb+7);
EEPROM.update(3,in);
EEPROM.update(4,gain1);EEPROM.update(5,gain2);EEPROM.update(6,gain3);
EEPROM.update(7,loud);
EEPROM.update(8,lr);EEPROM.update(9,rr);EEPROM.update(10,lf);EEPROM.update(11,rf);
// lcd.clear();
w=0,w2=1;menu=0;cl();}
}// loop
void cl1(){ir.value=0;delay(50);}
void cl(){ir.value=0;delay(300);lcd.clear();}
void audio(){
tda.setVolume(vol); // громкость 0...63
tda.setAttLR(lr); // аттенюатор LR 0...31
tda.setAttRR(rr); // аттенюатор RR 0...31
tda.setAttLF(lf); // аттенюатор LF 0...31
tda.setAttRF(rf); // аттенюатор RF 0...31
tda.setSwitch(in,loud,gain); // вход 0...2, тонкомпенсация 1 вкл 0 выкл, усиление 0...3
tda.setBass(bass); // тембр НЧ -7...+7
tda.setTreble(treb); // тембр ВЧ -7...+7
В ближайшие дни возьмусь Вашим вопросом.
Тестируйте:
#define IR_1 0x2FDB24D // Кнопка MENU
#define IR_3 0x2FD906F // Кнопка +
#define IR_4 0x2FDF20D // Кнопка -
#define IR_5 0x2FD629D // Кнопка IN1
#define IR_6 0x2FDEA15 // Кнопка MUTE
#define IR_7 0x2FD00FF // Кнопка POWER
#define IR_8 0x2FD22DD // Кнопка IN2
#define IR_9 0x2FD40BF // Кнопка IN3
#include <Wire.h>
#include <LiquidCrystal.h>
#include <EEPROM.h>
#include <TDA7313.h>
#include <boarddefs.h>
#include <IRremote.h>
IRrecv irrecv(10); // указываем вывод модуля IR приемника
TDA7313 tda;
decode_results ir;
LiquidCrystal lcd(4, 5, 6, 7, 8, 9); // номер вывода дисплея:RS,E,D4,D5,D6,D7 | rw=GND
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,time1,oldPosition = -999;
int vol,w1,w2=1,gr1,gr2,vol_d,menu,w,z,z0,z1,bass_d,bass,treb_d,treb,i,loud,in,mute,power,gain,gain1,gain2,gain3,lr,rr,lf,rf,kkk,vol_old,inp,inp1;
void setup(){
Serial.begin(9600);
Wire.begin();irrecv.enableIRIn(); // запускаем модуль I2C,IR
lcd.begin(16, 2);
lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
pinMode(2,INPUT_PULLUP);// КНОПКА UP
pinMode(3,INPUT_PULLUP);// КНОПКА DW
pinMode(A1,INPUT_PULLUP);// КНОПКА MENU
pinMode(A0,INPUT_PULLUP);// КНОПКА IN
pinMode(A2,INPUT_PULLUP);// КНОПКА MUTE
pinMode(A3,INPUT_PULLUP);// КНОПКА POWER
pinMode(12,OUTPUT);//Питание для источника
pinMode(13,OUTPUT);//Питание STANDBY
vol = EEPROM.read(0);bass = EEPROM.read(1)-7;treb = EEPROM.read(2)-7;in = EEPROM.read(3);
gain1 = EEPROM.read(4);gain2 = EEPROM.read(5);gain3 = EEPROM.read(6);loud = EEPROM.read(7);
lr = EEPROM.read(8);rr = EEPROM.read(9);lf = EEPROM.read(10);rf = EEPROM.read(11);
if(in==0){gain=gain1;}
if(in==1){gain=gain2;}
if(in==2){gain=gain3;}
lcd.setCursor(0,0);lcd.print("TDA7313 IR POWER");
lcd.setCursor(3,1);lcd.print(" Ver. 3 ");
delay(2000);audio();
lcd.clear();}
void loop(){
// IR приемник
if ( irrecv.decode( &ir )){Serial.print("0x");Serial.println( ir.value,HEX);
irrecv.resume();time=millis();w=1;w1=1;}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта
// POWER
if((ir.value==IR_7||digitalRead(A3)==LOW)&&power==0){power=1;mute=1;audio();gr1=0;gr2=0;cl();
lcd.setCursor(0,0);lcd.print(" POWER OFF ");w=0;menu=100;vol_old=vol;vol=0;audio();delay(1000);}// power off
if((ir.value==(IR_7)||digitalRead(A3)==LOW)&&power==1){power=0;mute=0;vol=vol_old;audio();gr1=0;gr2=0;cl();
menu=0;time=millis();w=1;w2=1;delay(500);}// power on
//LED
if(power==0){digitalWrite(12,HIGH);}else{digitalWrite(12,LOW);} // INPUT POWER
if(power==0){digitalWrite(13,HIGH);}else{digitalWrite(13,LOW);} // выход STANDBY
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(power==0){
//MENU
if(ir.value==IR_1||digitalRead(A1)==LOW){menu++;cl();i++;time=millis();w=1;w2=1;if(menu>5){menu=0;}}// меню
//INPUT KEY
if(digitalRead(A0)==LOW){in++;cl();time=millis();w=1;w2=1;if(in>2){in=0;};audio();}// IN
//MUTE KEY
if(digitalRead(A2)==LOW&&mute==0){mute=1;cl();w=0;w2=1;lcd.print(" MUTE ");menu=100;vol_old=vol;vol=0;audio();}// mute on
if(digitalRead(A2)==LOW&&mute==1){mute=0;cl();time=millis();w=1;w2=1;menu=0;vol=vol_old;audio();}// mute off
//INPUT IR
if(ir.value==IR_5&&mute==0){in=1;gr1=0;gr2=0;cl();time=millis();w=1;w2=1;audio();}
if(ir.value==IR_8&&mute==0){in=0;gr1=0;gr2=0;cl();time=millis();w=1;w2=1;audio();}
if(ir.value==IR_9&&mute==0){in=2;gr1=0;gr2=0;cl();time=millis();w=1;w2=1;audio();}
//MUTE IR
if(ir.value==IR_6&&mute==0&&power==0){mute=1;gr1=0;gr2=0;cl();w=0;w2=1;
lcd.print(" MUTE ");menu=100;vol_old=vol;vol=0;audio();}// mute on
if(ir.value==IR_6&&mute==1&&power==0){mute=0;gr1=0;gr2=0;cl();
time=millis();w=1;w2=1;menu=0;vol=vol_old;audio();}// mute off
}
//////////////////////////////////////// Volume 0...63 дБ ////////////////////////////////////
if(menu==0){
if(ir.value==IR_3 || digitalRead(2)==LOW){vol++;gr1=1;gr2=0;cl1();time=millis();w=1;w2=1;if(vol<0){vol=0;}if(vol>63){vol=63;}audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl1();time=millis();w=1;w2=1;if(vol<0){vol=0;}if(vol>63){vol=63;}audio();}// кнопка >>>>>>
if(ir.value==IR_4 || digitalRead(3)==LOW){vol--;gr1=0;gr2=1;cl1();time=millis();w=1;w2=1;if(vol<0){vol=0;}if(vol>63){vol=63;}audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl1();time=millis();w=1;w2=1;if(vol<0){vol=0;}if(vol>63){vol=63;}audio();}// кнопка <<<<<<
lcd.setCursor(0,0);lcd.print("Volume ");
lcd.print(-78.75+(float)vol*1.25,0);
lcd.print(" ");
lcd.setCursor(10,0);lcd.print("dB ");
lcd.setCursor(13,0);
switch(in){
case 0: lcd.print("IN1");break;
case 1: lcd.print("IN2");break;
case 2: lcd.print("IN3");break;
}
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;}}
//////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////// индикация тембр НЧ -14...14 дБ //////////////////////////////////////
if(menu==1){
if(ir.value==IR_3 || digitalRead(2)==LOW){bass++;gr1=1;gr2=0;cl1();time=millis();w=1;w2=1;if(bass>7){bass=7;}if(bass<-7){bass=-7;}audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){bass++;gr2=0;cl1();time=millis();w=1;w2=1;if(bass>7){bass=7;}if(bass<-7){bass=-7;}audio();}// кнопка >>>>>>
if(ir.value==IR_4 || digitalRead(3)==LOW){bass--;gr1=0;gr2=1;cl1();time=millis();w=1;w2=1;if(bass>7){bass=7;}if(bass<-7){bass=-7;}audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){bass--;gr1=0;cl1();time=millis();w=1;w2=1;if(bass>7){bass=7;}if(bass<-7){bass=-7;}audio();}// кнопка <<<<<<
lcd.setCursor(0,0);lcd.print("Bass ");
lcd.print(" ");lcd.print(bass*2);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");bass_d=bass*2+15;
if(w2==1){
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);}w2=0;}}
////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////// индикация тембр ВЧ -14...14 дБ ////////////////////////////////////////
if(menu==2){
if(ir.value==IR_3 || digitalRead(2)==LOW){treb++;gr1=1;gr2=0;cl1();time=millis();w=1;w2=1;if(treb>7){treb=7;}if(treb<-7){treb=-7;}audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){treb++;gr2=0;cl1();time=millis();w=1;w2=1;if(treb>7){treb=7;}if(treb<-7){treb=-7;}audio();}// кнопка >>>>>>
if(ir.value==IR_4 || digitalRead(3)==LOW){treb--;gr1=0;gr2=1;cl1();time=millis();w=1;w2=1;if(treb>7){treb=7;}if(treb<-7){treb=-7;}audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){treb--;gr1=0;cl1();time=millis();w=1;w2=1;if(treb>7){treb=7;}if(treb<-7){treb=-7;}audio();}// кнопка <<<<<<
lcd.setCursor(0,0);lcd.print("Treble ");
lcd.print(" ");lcd.print(treb*2);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");treb_d=treb*2+15;
if(w2==1){
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);}w2=0;}}
////////////////////////////////////// BALANCE //////////////////////////////////////////////
if(menu==3){
if(ir.value==IR_3 || digitalRead(2)==LOW){lf++;lr++;rf--;rr--;cl1();lcd.clear();time=millis();w=1;w2=1;if(lf>10){lf=10;}if(rf<0){rf=0;}if(lr>10){lr=10;}if(rr<0){rr=0;}audio();}
if(ir.value==IR_4 || digitalRead(3)==LOW){lf--;lr--;rf++;rr++;cl1();lcd.clear();time=millis();w=1;w2=1;if(lf<0){lf=0;}if(rf>10){rf=10;}if(lr<0){lr=0;}if(rr>10){rr=10;}audio();}
lcd.setCursor(0,0);
if(w2==1){
if(lf-5>=0){lcd.print("-");}else{lcd.print("+");}
lcd.print(abs(rf-5));lcd.print(" dB ");
lcd.print(" <> ");
if(rf-5>=0){lcd.print("-");}else{lcd.print("+");}
lcd.print(abs(rf-5));lcd.print(" dB ");
lcd.setCursor(0,1);lcd.print("L");
lcd.setCursor(15,1);lcd.print("R");
if(lf-5<0){lcd.setCursor(lf-5+7,1);lcd.write((uint8_t)0);}
if(lf-5>0){lcd.setCursor(lf-5+8,1);lcd.write((uint8_t)0);}
if(lf-5==0){lcd.setCursor(7,1);lcd.write((uint8_t)0);lcd.setCursor(8,1);lcd.write((uint8_t)0);}w2=0;}
}
/////////////////////////////////// LOUDNESS ////////////////////////////////////////
if(menu==4){
if(ir.value==IR_3 || digitalRead(2)==LOW){loud++;cl1();if(loud>1){loud=0;}time=millis();w=1;w2=1;audio();}
if(ir.value==IR_4 || digitalRead(3)==LOW){loud--;cl1();if(loud<0){loud=1;}time=millis();w=1;w2=1;audio();}
lcd.setCursor(0,0);lcd.print("LOUDNESS ");
if(loud==1){lcd.print("ON ");}else{lcd.print("OFF");}
}
///////////////////////////////////// INPUT GAIN //////////////////////////////////////////
if(menu==5){
if(in==0){gain=gain1;}
if(in==1){gain=gain2;}
if(in==2){gain=gain3;}
if(ir.value==IR_3 || digitalRead(2)==LOW){gain++;cl();time=millis();w=1;w2=1;if(gain>3){gain=3;}audio();}
if(ir.value==IR_4 || digitalRead(3)==LOW){gain--;cl();time=millis();w=1;w2=1;if(gain<0){gain=0;}audio();}
if(in==0){gain1=gain;}
if(in==1){gain2=gain;}
if(in==2){gain3=gain;}
lcd.setCursor(0,0);lcd.print(" INPUT ");lcd.print(in+1);
lcd.setCursor(0,1);lcd.print(" Gain ");lcd.print((float)gain*3.75);lcd.print(" dB ");}
//////////////////////////////////////////////////////////////////////////////////////////
if(millis()-time>5000 && w==1 && power==0 && mute == 0){
EEPROM.update(0,vol);
EEPROM.update(1,bass+7);
EEPROM.update(2,treb+7);
EEPROM.update(3,in);
EEPROM.update(4,gain1);EEPROM.update(5,gain2);EEPROM.update(6,gain3);
EEPROM.update(7,loud);
EEPROM.update(8,lr);EEPROM.update(9,rr);EEPROM.update(10,lf);EEPROM.update(11,rf);
// lcd.clear();
w=0,w2=1;menu=0;cl();}
delay(100);
}// loop
void cl1(){ir.value=0;delay(50);}
void cl(){ir.value=0;delay(300);lcd.clear();}
void audio(){
tda.setVolume(vol); // громкость 0...63
tda.setAttLR(lr); // аттенюатор LR 0...31
tda.setAttRR(rr); // аттенюатор RR 0...31
tda.setAttLF(lf); // аттенюатор LF 0...31
tda.setAttRF(rf); // аттенюатор RF 0...31
tda.setSwitch(in,loud,gain); // вход 0...2, тонкомпенсация 1 вкл 0 выкл, усиление 0...3
tda.setBass(bass); // тембр НЧ -7...+7
tda.setTreble(treb); // тембр ВЧ -7...+7
}
forum.rcl-radio.ru → Тестирование скетчей → TDA7313 + энкодер + ИК пульт + анализатор спектра
Форум работает на PunBB, при поддержке Informer Technologies, Inc
|