Re: TDA7419 + энкодер + ИК пульт + анализатор спектра
Здравствуйте, подскажете пожалуйста а можно изменить скетч для другого экрана 2,4 дюймовый TFT полноцветный экран ST7735 ILI9341 интерфейс драйвера SPI .
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
forum.rcl-radio.ru → Тестирование скетчей → TDA7419 + энкодер + ИК пульт + анализатор спектра
Здравствуйте, подскажете пожалуйста а можно изменить скетч для другого экрана 2,4 дюймовый TFT полноцветный экран ST7735 ILI9341 интерфейс драйвера SPI .
Это сильно напряжно или проект больше не используется.
Скетч надо полностью переписывать.
Это возможно ?
Это возможно, но проект не самый удачный, нет энкодера, нет ИК пульта. Если добавлять энкодер и пульт, то памяти скорее всего не хватит для экрана, нужно будет как то оптимизировать код.
Попробовать можно но у меня аудиопрецессора нет, только дисплей, потребуется тестирование с Вашей стороны.
Процессор есть , а если использовать Uno или ESP 32, либо ESP8266 тогда возможно памяти хватит. Протестировать смогу.
ESP 32, либо ESP8266
Там проблемы с пультом будут и энкодером, я не работал с ними в этом плане.
Остается только Atmega328
Я попробую в выходные начать, но если увижу что памяти совсем нет после активации пульта и энкодера, то нет смысла продолжать.
Хорошо. У Вас ещё есть проект на ESP32 интернет - радио там вроде всё согласуется и стабильно работает.
Там нет пульта
Пульта нет согласен.
Предварительный скетч
#include <Wire.h>
#include <SPI.h>
#include <TDA7419.h> // https://github.com/liman324/TDA7419.git
#include <EEPROM.h>
#include <UTFT.h> // http://rcl-radio.ru/wp-content/uploads/2019/06/UTFT.zip
#include <Encoder.h> // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
#include <MsTimer2.h> // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip
TDA7419 tda;
Encoder myEnc(3, 2);
UTFT tft(TFT01_22SP, 8, 9, 12, 11, 10); // SDI (MOSI), SCK, CS, RESET, DC
extern uint8_t BigFont[];
int menu,menu0=100,vol,treb,mid,bass,bass_q,mid_q,bass_c,treb_c=3,mid_c,sub_c,in,gain,gain1,gain2,gain3;
int lf,rf,lt,rt,sab,att_loun,s_loun;
long oldPosition = -999,newPosition,times;
bool w1=1,w2=1,w3=1,w4=1;
bool st=1,menu_set=0,mute=1,eep,h1=1,h2=1,h3=1,h4=1,in1=1,h5=1,h6=1;
bool w10,w11,w12,w13,w14,w15,w16,w17,w18,w19,w20,w21,w22;
int i;
void setup(){
Serial.begin(9600);
tft.InitLCD(1);
tft.clrScr();
tft.setFont(BigFont);
tft.setColor(0xFFFF);
MsTimer2::set(3, to_Timer);MsTimer2::start();
pinMode(4,INPUT); // SW
pinMode(5,INPUT_PULLUP); // IN
pinMode(6,INPUT_PULLUP); // SET MENU
if(EEPROM.read(100)!=0){for(int i=0;i<101;i++){EEPROM.update(i,0);}}
vol = EEPROM.read(0);treb = EEPROM.read(1)-15;mid = EEPROM.read(2)-15;bass = EEPROM.read(3)-15;
in = EEPROM.read(4);gain1 = EEPROM.read(5);gain2 = EEPROM.read(6);gain3 = EEPROM.read(7);
switch(in){
case 0: gain=gain1;break;
case 1: gain=gain2;break;
case 2: gain=gain3;break;
}
tft.setColor(0xcdcd);tft.drawLine(5, 63, 315, 63);tft.drawLine(5, 82, 315, 82);tft.drawLine(5, 101, 315, 101);tft.drawLine(5, 136, 315, 136);
}
void loop(){
tft.setFont(BigFont);
if(digitalRead(4)==LOW&&menu_set==0){menu++;if(menu>3){menu=0;}times=millis();eep=1;w1=1,w2=1,w3=1,w4=1;}
if(digitalRead(4)==LOW&&menu_set==1){menu0++;if(menu0>12){menu0=0;}h6=1;}
if(digitalRead(5)==LOW){in++;menu=4;in_conf();audio();times=millis();eep=1;in1=1;w1=1,w2=1,w3=1,w4=1;}
if(digitalRead(6)==LOW&&menu_set==0){menu_set=1;menu=100;menu0=0;h6=1;w1=1,w2=1,w3=1,w4=1;delay(200);}
if(digitalRead(6)==LOW&&menu_set==1){menu_set=0;menu=0;menu0=100;times=millis();eep=1;h6=1;w1=1,w2=1,w3=1,w4=1;}
if(menu==0){if(newPosition != oldPosition){enc();vol=vol+newPosition;myEnc.write(0);newPosition=0;times=millis();eep=1;w1=1;h1=1;vol_conf();audio();}}
if(menu==1){if(newPosition != oldPosition){enc();treb=treb+newPosition;myEnc.write(0);newPosition=0;times=millis();eep=1;w2=1;h2=1;treb_conf();audio();}}
if(menu==2){if(newPosition != oldPosition){enc();mid=mid+newPosition;myEnc.write(0);newPosition=0;times=millis();eep=1;w3=1;h3=1;mid_conf();audio();}}
if(menu==3){if(newPosition != oldPosition){enc();bass=bass+newPosition;myEnc.write(0);newPosition=0;times=millis();eep=1;w4=1;h4=1;bass_conf();audio();}}
if(menu0==0){if(newPosition != oldPosition){enc();lf=lf+newPosition;myEnc.write(0);newPosition=0;times=millis();lf_conf();w10=1;audio();}}
if(menu0==1){if(newPosition != oldPosition){enc();rf=rf+newPosition;myEnc.write(0);newPosition=0;times=millis();rf_conf();w11=1;audio();}}
if(menu==4){
switch(in){
case 0: gain=gain1;break;
case 1: gain=gain2;break;
case 2: gain=gain3;break;
}
if(newPosition != oldPosition){enc();gain=gain+newPosition;myEnc.write(0);newPosition=0;times=millis();eep=1;in1=1;gain_conf();audio();}
switch(in){
case 0: gain1=gain;break;
case 1: gain2=gain;break;
case 2: gain3=gain;break;
}
}
//// PRINT TFT
if(w1==1){w1=0; if(menu==0){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}tft.print("VOLUME", 5, 0);}
if(w2==1){w2=0; if(menu==1){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}tft.print("TREBLE", 5, 15);}
if(w3==1){w3=0; if(menu==2){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}tft.print("MIDDLE", 5, 30);}
if(w4==1){w4=0; if(menu==3){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}tft.print("BASS", 5, 45);}
if(h1==1){h1=0;for(i=0;i<vol*2.4;i+=5){tft.setColor(0x07ff);tft.fillRect(110+i,13,112+i,2);}tft.setColor(0);tft.fillRect(110+i+5,13,112+i+5,2);}
if(h2==1){h2=0;for(i=0;i<(treb+15)*6;i+=5){tft.setColor(0x07ff);tft.fillRect(110+i,28,112+i,17);}tft.setColor(0);tft.fillRect(110+i+5,28,112+i+5,17);tft.fillRect(110+i+10,28,112+i+10,17);}
if(h3==1){h3=0;for(i=0;i<(mid+15)*6;i+=5){tft.setColor(0x07ff);tft.fillRect(110+i,43,112+i,32);}tft.setColor(0);tft.fillRect(110+i+5,43,112+i+5,32);tft.fillRect(110+i+10,43,112+i+10,32);}
if(h4==1){h4=0;for(i=0;i<(bass+15)*6;i+=5){tft.setColor(0x07ff);tft.fillRect(110+i,58,112+i,47);}tft.setColor(0);tft.fillRect(110+i+5,58,112+i+5,47);tft.fillRect(110+i+10,58,112+i+10,47);}
if(in1==1){in1=0;
if(menu==4){tft.setColor(0xFFFF);}else{tft.setColor(0xeded);}tft.print("INPUT", 5, 65);tft.printNumI(in+1,95, 65);tft.print("GAIN", 165, 65);tft.printNumI(gain,250, 65);}
if(st==1){st=0;
tft.setColor(0xecad);
tft.print("LF", 5, 84);
tft.print("RF", 65, 84);
tft.print("LT", 125, 84);
tft.print("RT", 185, 84);
tft.print("SUB", 245, 84);
tft.print("Loudness ATT", 5, 103);
tft.print("Loudness FREQ", 5, 118);
tft.print("Treb Center", 5, 139);
tft.print("Midd Center", 5, 156);
tft.print("Bass Center", 5, 173);
tft.print("SUB Freq", 5, 190);
tft.print("Middle Q", 5, 207);
tft.print("Bass Q", 5, 224);
}
if(h6==1||w10==1){w10=0;if(menu0==0){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}tft.printNumI(lf,40, 84);}
if(h6==1||w11==1){w11=0;if(menu0==1){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}tft.printNumI(rf,100, 84);}
if(h6==1||w12==1){w12=0;if(menu0==2){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}tft.printNumI(lt,160, 84);}
if(h6==1||w13==1){w13=0;if(menu0==3){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}tft.printNumI(rt,220, 84);}
if(h6==1||w14==1){w14=0;if(menu0==4){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}tft.printNumI(rt,300, 84);}
if(h6==1||w15==1){w15=0;if(menu0==5){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}tft.printNumI(att_loun,240,103);}
if(h6==1||w16==1){w16=0;if(menu0==6){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}
switch(s_loun){
case 0:tft.print(" FLAT ", 220, 118);break;
case 1:tft.print(" 400Hz", 220, 118);break;
case 2:tft.print(" 800Hz", 220, 118);break;
case 3:tft.print("2.4kHz", 220, 118);break;
}}
if(h6==1||w17==1){w17=0;if(menu0==7){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}
switch(treb_c){
case 0:tft.print("10 kHz", 200, 139);break;
case 1:tft.print("12.5kHz", 200, 139);break;
case 2:tft.print("15 kHz", 200, 139);break;
case 3:tft.print("17.5kHz", 200, 139);break;
}}
if(h6==1||w18==1){w18=0;if(menu0==8){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}
switch(mid_c){
case 0:tft.print("0.5 kHz", 200, 156);break;
case 1:tft.print("1.0 kHz", 200, 156);break;
case 2:tft.print("1.5 kHz", 200, 156);break;
case 3:tft.print("2.5 kHz", 200, 156);break;
}}
if(h6==1||w19==1){w19=0;if(menu0==9){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}
switch(bass_c){
case 0:tft.print("60 Hz", 200, 173);break;
case 1:tft.print("80 Hz", 200, 173);break;
case 2:tft.print("100 Hz", 200, 173);break;
case 3:tft.print("200 Hz", 200, 173);break;
}}
if(h6==1||w20==1){w20=0;if(menu0==10){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}
switch(sub_c){
case 0:tft.print(" FLAT ", 200, 190);break;
case 1:tft.print("80 Hz", 200, 190);break;
case 2:tft.print("120 Hz", 200, 190);break;
case 3:tft.print("160 Hz", 200, 190);break;
}}
if(h6==1||w21==1){w21=0;if(menu0==11){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}
switch(mid_q){
case 0:tft.print(" 0.50 ", 200, 207);break;
case 1:tft.print(" 0.75 ", 200, 207);break;
case 2:tft.print(" 1.00 ", 200, 207);break;
case 3:tft.print(" 1.25 ", 200, 207);break;
}}
if(h6==1||w22==1){w22=0;if(menu0==12){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}
switch(bass_q){
case 0:tft.print(" 1.00 ", 200, 224);break;
case 1:tft.print(" 1.25 ", 200, 224);break;
case 2:tft.print(" 1.50 ", 200, 224);break;
case 3:tft.print(" 2.00 ", 200, 224);break;
}}
if(h6==1){h6=0;}
//// EEPROM
if(millis()-times>3000 && eep==1){eep=0;menu=0;w1=1,w2=1,w3=1,w4=1;in1=1;
EEPROM.update(0,vol);EEPROM.update(1,treb+15);EEPROM.update(2,mid+15);EEPROM.update(3,bass+15);EEPROM.update(4,in);
EEPROM.update(5,gain1);EEPROM.update(6,gain2);EEPROM.update(7,gain3);
}
}
void to_Timer(){newPosition = myEnc.read()/4;}
void enc(){oldPosition = newPosition;if(newPosition>1){newPosition=1;}if(newPosition<-1){newPosition=-1;}}
void vol_conf(){if(vol>80){vol=80;}if(vol<0){vol=0;}}
void treb_conf(){if(treb>15){treb=15;}if(treb<-15){treb=-15;}}
void mid_conf(){if(mid>15){mid=15;}if(mid<-15){mid=-15;}}
void bass_conf(){if(bass>15){bass=15;}if(bass<-15){bass=-15;}}
void in_conf(){if(in>2){in=0;}}
void gain_conf(){if(gain>9){gain=9;}if(gain<0){gain=0;}}
void lf_conf(){if(lf>9){lf=9;}if(lf<0){lf=0;}}
void rf_conf(){if(rf>9){rf=9;}if(rf<0){rf=0;}}
void audio(){
tda.setInput(in+1,gain*2,0); //вх1=1, вх2=2, вх3=3
tda.setInput2(2,0,0); // не используется
tda.setAtt_loudness(att_loun,s_loun,0,0);
tda.setSoft(mute,0,0,0,0);//mute off (не менять)
tda.setVolume(vol-79,0); // общая громкость от 0 до 79 макс
tda.setAtt_LF(79-(lf*2),0); // гром. лк фронт
tda.setAtt_RF(79-(rf*2),0); // гром. пк фронт
tda.setAtt_LT(79-lt,0); // гром. лк тыл
tda.setAtt_RT(79-rt,0); // гром. пк тыл
tda.setAtt_SUB(79-sab,0); // гром. савбуфер
tda.setAtt_Mix(79,0); // не используется
tda.setFilter_Treble(treb,treb_c,0);
tda.setFilter_Middle(mid,mid_q,0);
tda.setFilter_Bass(bass,bass_q,0);
tda.setSub_M_B(sub_c,mid_c,bass_c,0,0);
tda.setMix_Gain_Eff(1,0,0,0,0); // не используется
tda.setSpektor(0,0,0,0,0,0,0);
}
Подскажите какой дисплей я могу подключить . У меня на руках в данный момент TFT 1.8 дюйма с размерами 128*160. В ближайшее время мне подъедет экран с диагональю 2.8 дюйма. Смогу ли я пока протестировать с этим экраном на 1.8 ?
Ардуино нано подойдёт ?
TFT 1.8 дюйма с размерами 128*160 - не подойдет, скетч рассчитан на 240*320
На 2.8 подойдет? Вот такой экран должен подъехать (2,8 дюйма 240x320 SPI TFT 5 В/3,3 В PCB адаптер Micro SD карта / ST7789V ЖК-дисплей для Arduino )
Размер экрана не важен, главное разрешение на 240*320
А какую плату можно использовать ?
Скетч пишется под Arduino Nano
Ясно, как приедет экран сразу отпишусь. Заранее огромное спасибо !!! И ещё один вопрос , у Вас есть проект ЦАПа на ресивере CS8416 http://rcl-radio.ru/?p=91050, а можно к нему добавить отображение частоты дискретизации и битности входного сигнала.
Проект уже старый, это надо было сразу делать, а сейчас я уже не помню что там да как.
А если сделать новый проект за основу взять цап Аманеро а на выходе PCM5102.
Я сейчас аудио ЦАПами не занимаюсь, нет интереса у пользователей к этой теме.
Тем более 2000 это дорого для проекта, максимум что я трачу на проект это не больше 250 р.
Понятно, а что посоветуете в плане отображения сигнала.
IR пока не сделал
// ENCODER
#define CLK_ENC 3
#define TD_ENC 2
#define SW_ENC 4
// BUTTON
#define IN 5
#define SET 6
#define MUTE 7
// OUTPUT_LED_MUTE
#define OUT_MUTE 13
#include <Wire.h>
#include <TDA7419.h> // https://github.com/liman324/TDA7419.git
#include <EEPROM.h>
#include <UTFT.h> // http://rcl-radio.ru/wp-content/uploads/2019/06/UTFT.zip
#include <Encoder.h> // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
#include <MsTimer2.h> // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip
TDA7419 tda;
Encoder myEnc(CLK_ENC, TD_ENC);
UTFT tft(TFT01_22SP, 8, 9, 12, 11, 10); // SDI (MOSI), SCK, CS, RESET, DC
extern uint8_t BigFont[];
int menu,menu0=100,vol,treb,mid,bass,bass_q,mid_q,bass_c,treb_c=3,mid_c,sub_c,in,gain,gain1,gain2,gain3;
int lf,rf,lt,rt,sab,att_loun,s_loun;
long oldPosition = -999,newPosition,times;
bool w1=1,w2=1,w3=1,w4=1;
bool st=1,menu_set=0,mute=1,eep,h1=1,h2=1,h3=1,h4=1,in1=1,h5=1,h6=1;
bool ss=0,w10,w11,w12,w13,w14,w15,w16,w17,w18,w19,w20,w21,w22;
int i;
void setup(){
Serial.begin(9600);
tft.InitLCD(1);
tft.clrScr();
tft.setFont(BigFont);
tft.setColor(0xFFFF);
MsTimer2::set(3, to_Timer);MsTimer2::start();
pinMode(SW_ENC,INPUT); // SW
pinMode(IN,INPUT_PULLUP); // IN
pinMode(SET,INPUT_PULLUP); // SET MENU
pinMode(MUTE,INPUT_PULLUP); // MUTE
pinMode(OUT_MUTE,OUTPUT); // OUT_MUTE
if(EEPROM.read(100)!=0){for(int i=0;i<101;i++){EEPROM.update(i,0);}}
vol = EEPROM.read(0);treb = EEPROM.read(1)-15;mid = EEPROM.read(2)-15;bass = EEPROM.read(3)-15;
in = EEPROM.read(4);gain1 = EEPROM.read(5);gain2 = EEPROM.read(6);gain3 = EEPROM.read(7);
lf = EEPROM.read(8);lt = EEPROM.read(9);rf = EEPROM.read(10);rt = EEPROM.read(11);sab = EEPROM.read(12);
att_loun = EEPROM.read(13);s_loun = EEPROM.read(14);treb_c = EEPROM.read(15);mid_c = EEPROM.read(16);bass_c = EEPROM.read(17);
sub_c = EEPROM.read(18);mid_q = EEPROM.read(19);bass_q = EEPROM.read(20);
switch(in){
case 0: gain=gain1;break;
case 1: gain=gain2;break;
case 2: gain=gain3;break;
}
audio();
}
void loop(){
if(mute==1){
if(digitalRead(SW_ENC)==LOW&&menu_set==0){menu++;if(menu>3){menu=0;}times=millis();ss=1;eep=1;w1=1,w2=1,w3=1,w4=1;}
if(digitalRead(SW_ENC)==LOW&&menu_set==1){menu0++;if(menu0>12){menu0=0;}h6=1;}
if(digitalRead(IN)==LOW){in++;menu=4;in_conf();audio();times=millis();ss=1;eep=1;in1=1;w1=1,w2=1,w3=1,w4=1;}
if(digitalRead(SET)==LOW&&menu_set==0&&ss==0){menu_set=1;menu=100;menu0=0;w10=1;w1=1;delay(200);}
if(digitalRead(SET)==LOW&&menu_set==1){menu_set=0;menu=0;menu0=100;h6=1;w1=1;}
}
if(digitalRead(MUTE)==LOW&&mute==1){mute=0;menu=0;menu0=100;h6=1;w1=1;audio();delay(200);}
if(digitalRead(MUTE)==LOW&&mute==0){mute=1;menu=0;menu0=100;h6=1;w1=1;audio();delay(200);}
if(mute==0){digitalWrite(OUT_MUTE,HIGH);}else{digitalWrite(OUT_MUTE,LOW);}
if(mute==1){
if(menu==0){if(newPosition != oldPosition){enc();vol=vol+newPosition;myEnc.write(0);newPosition=0;times=millis();eep=1;h1=1;vol_conf();audio();}}
if(menu==1){if(newPosition != oldPosition){enc();treb=treb+newPosition;myEnc.write(0);newPosition=0;times=millis();eep=1;h2=1;treb_conf();audio();}}
if(menu==2){if(newPosition != oldPosition){enc();mid=mid+newPosition;myEnc.write(0);newPosition=0;times=millis();eep=1;h3=1;mid_conf();audio();}}
if(menu==3){if(newPosition != oldPosition){enc();bass=bass+newPosition;myEnc.write(0);newPosition=0;times=millis();eep=1;h4=1;bass_conf();audio();}}
if(menu0==0){if(newPosition != oldPosition){enc();lf=lf+newPosition;myEnc.write(0);newPosition=0;times=millis();lf_conf();w10=1;audio();}}
if(menu0==1){if(newPosition != oldPosition){enc();rf=rf+newPosition;myEnc.write(0);newPosition=0;times=millis();rf_conf();w11=1;audio();}}
if(menu0==2){if(newPosition != oldPosition){enc();lt=lt+newPosition;myEnc.write(0);newPosition=0;times=millis();lt_conf();w12=1;audio();}}
if(menu0==3){if(newPosition != oldPosition){enc();rt=rt+newPosition;myEnc.write(0);newPosition=0;times=millis();rt_conf();w13=1;audio();}}
if(menu0==4){if(newPosition != oldPosition){enc();sab=sab+newPosition;myEnc.write(0);newPosition=0;times=millis();sab_conf();w14=1;audio();}}
if(menu0==5){if(newPosition != oldPosition){enc();att_loun=att_loun+newPosition;myEnc.write(0);newPosition=0;times=millis();att_loun_conf();w15=1;audio();}}
if(menu0==6){if(newPosition != oldPosition){enc();s_loun=s_loun+newPosition;myEnc.write(0);newPosition=0;times=millis();s_loun_conf();w16=1;audio();}}
if(menu0==7){if(newPosition != oldPosition){enc();treb_c=treb_c+newPosition;myEnc.write(0);newPosition=0;times=millis();treb_c_conf();w17=1;audio();}}
if(menu0==8){if(newPosition != oldPosition){enc();mid_c=mid_c+newPosition;myEnc.write(0);newPosition=0;times=millis();mid_c_conf();w18=1;audio();}}
if(menu0==9){if(newPosition != oldPosition){enc();bass_c=bass_c+newPosition;myEnc.write(0);newPosition=0;times=millis();bass_c_conf();w19=1;audio();}}
if(menu0==10){if(newPosition != oldPosition){enc();sub_c=sub_c+newPosition;myEnc.write(0);newPosition=0;times=millis();sub_c_conf();w20=1;audio();}}
if(menu0==11){if(newPosition != oldPosition){enc();mid_q=mid_q+newPosition;myEnc.write(0);newPosition=0;times=millis();mid_q_conf();w21=1;audio();}}
if(menu0==12){if(newPosition != oldPosition){enc();bass_q=bass_q+newPosition;myEnc.write(0);newPosition=0;times=millis();bass_q_conf();w22=1;audio();}}
}
if(menu==4){
switch(in){
case 0: gain=gain1;break;
case 1: gain=gain2;break;
case 2: gain=gain3;break;
}
if(newPosition != oldPosition){enc();gain=gain+newPosition;myEnc.write(0);newPosition=0;times=millis();eep=1;in1=1;gain_conf();audio();}
switch(in){
case 0: gain1=gain;break;
case 1: gain2=gain;break;
case 2: gain3=gain;break;
}
}
//// PRINT TFT
if(w1==1){w1=0; if(menu==0){tft.setColor(0xFFFF);}else{tft.setColor(0xfecd);}if(mute==1){tft.print("VOLUME", 5, 0);}if(mute==0){tft.print("MUTE ", 5, 0);}}
if(w2==1){w2=0; if(menu==1){tft.setColor(0xFFFF);}else{tft.setColor(0xfecd);}tft.print("TREBLE", 5, 15);}
if(w3==1){w3=0; if(menu==2){tft.setColor(0xFFFF);}else{tft.setColor(0xfecd);}tft.print("MIDDLE", 5, 30);}
if(w4==1){w4=0; if(menu==3){tft.setColor(0xFFFF);}else{tft.setColor(0xfecd);}tft.print("BASS", 5, 45);}
if(h1==1){h1=0;for(i=0;i<vol*2.4;i+=5){tft.setColor(0x07ff);tft.fillRect(110+i,13,112+i,2);}tft.setColor(0);tft.fillRect(110+i+5,13,112+i+5,2);}
if(h2==1){h2=0;for(i=0;i<(treb+15)*6;i+=5){tft.setColor(0x07ff);tft.fillRect(110+i,28,112+i,17);}tft.setColor(0);tft.fillRect(110+i+5,28,112+i+5,17);tft.fillRect(110+i+10,28,112+i+10,17);}
if(h3==1){h3=0;for(i=0;i<(mid+15)*6;i+=5){tft.setColor(0x07ff);tft.fillRect(110+i,43,112+i,32);}tft.setColor(0);tft.fillRect(110+i+5,43,112+i+5,32);tft.fillRect(110+i+10,43,112+i+10,32);}
if(h4==1){h4=0;for(i=0;i<(bass+15)*6;i+=5){tft.setColor(0x07ff);tft.fillRect(110+i,58,112+i,47);}tft.setColor(0);tft.fillRect(110+i+5,58,112+i+5,47);tft.fillRect(110+i+10,58,112+i+10,47);}
if(in1==1){in1=0;if(menu==4){tft.setColor(0xFFFF);}else{tft.setColor(0xdfcf);}tft.print("INPUT", 5, 65);tft.printNumI(in+1,95, 65);tft.printNumI(gain,250, 65);}
if(st==1){st=0;
tft.setColor(0xcdcd);tft.drawLine(5, 63, 315, 63);tft.drawLine(5, 82, 315, 82);tft.drawLine(5, 101, 315, 101);tft.drawLine(5, 136, 315, 136);
tft.setColor(0xdfcf);
tft.print("Gain", 165, 65);
tft.setColor(0xffaf);
tft.print("LF", 5, 84);
tft.print("RF", 65, 84);
tft.print("LT", 125, 84);
tft.print("RT", 185, 84);
tft.print("SUB", 245, 84);
tft.print("Loudness Att", 5, 103);
tft.print("Loudness Freq", 5, 118);
tft.print("Treb Center", 5, 139);
tft.print("Midd Center", 5, 156);
tft.print("Bass Center", 5, 173);
tft.print("SUB Freq", 5, 190);
tft.print("Middle Q", 5, 207);
tft.print("Bass Q", 5, 224);
}
if(h6==1||w10==1){w10=0;if(menu0==0){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}tft.printNumI(lf,40, 84);}
if(h6==1||w11==1){w11=0;if(menu0==1){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}tft.printNumI(rf,100, 84);}
if(h6==1||w12==1){w12=0;if(menu0==2){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}tft.printNumI(lt,160, 84);}
if(h6==1||w13==1){w13=0;if(menu0==3){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}tft.printNumI(rt,220, 84);}
if(h6==1||w14==1){w14=0;if(menu0==4){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}tft.printNumI(sab,300, 84);}
if(h6==1||w15==1){w15=0;if(menu0==5){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}tft.printNumI(att_loun,240,103);}
if(h6==1||w16==1){w16=0;if(menu0==6){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}
switch(s_loun){
case 0:tft.print(" FLAT ", 220, 118);break;
case 1:tft.print(" 400Hz", 220, 118);break;
case 2:tft.print(" 800Hz", 220, 118);break;
case 3:tft.print("2400Hz", 220, 118);break;
}}
if(h6==1||w17==1){w17=0;if(menu0==7){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}
switch(treb_c){
case 0:tft.print("10.0kHz", 200, 139);break;
case 1:tft.print("12.5kHz", 200, 139);break;
case 2:tft.print("15.0kHz", 200, 139);break;
case 3:tft.print("17.5kHz", 200, 139);break;
}}
if(h6==1||w18==1){w18=0;if(menu0==8){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}
switch(mid_c){
case 0:tft.print("0.5kHz", 210, 156);break;
case 1:tft.print("1.0kHz", 210, 156);break;
case 2:tft.print("1.5kHz", 210, 156);break;
case 3:tft.print("2.5kHz", 210, 156);break;
}}
if(h6==1||w19==1){w19=0;if(menu0==9){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}
switch(bass_c){
case 0:tft.print("60 Hz", 220, 173);break;
case 1:tft.print("80 Hz", 220, 173);break;
case 2:tft.print("100Hz", 220, 173);break;
case 3:tft.print("200Hz", 200, 173);break;
}}
if(h6==1||w20==1){w20=0;if(menu0==10){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}
switch(sub_c){
case 0:tft.print("FLAT ", 220, 190);break;
case 1:tft.print("80 Hz", 220, 190);break;
case 2:tft.print("120Hz", 220, 190);break;
case 3:tft.print("160Hz", 220, 190);break;
}}
if(h6==1||w21==1){w21=0;if(menu0==11){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}
switch(mid_q){
case 0:tft.print("0.50", 220, 207);break;
case 1:tft.print("0.75", 220, 207);break;
case 2:tft.print("1.00", 220, 207);break;
case 3:tft.print("1.25", 220, 207);break;
}}
if(h6==1||w22==1){w22=0;if(menu0==12){tft.setColor(0xFFFF);}else{tft.setColor(0xcdcd);}
switch(bass_q){
case 0:tft.print("1.00", 220, 224);break;
case 1:tft.print("1.25", 220, 224);break;
case 2:tft.print("1.50", 220, 224);break;
case 3:tft.print("2.00", 220, 224);break;
}}
if(h6==1){h6=0;}
if(menu0<100){menu=100;}
//// EEPROM
if(millis()-times>3000 && eep==1){eep=0;menu=0;w1=1,w2=1,w3=1,w4=1;in1=1;ss=0;
EEPROM.update(0,vol);EEPROM.update(1,treb+15);EEPROM.update(2,mid+15);EEPROM.update(3,bass+15);EEPROM.update(4,in);
EEPROM.update(5,gain1);EEPROM.update(6,gain2);EEPROM.update(7,gain3);
EEPROM.update(8,lf);EEPROM.update(9,lt);EEPROM.update(10,rf);EEPROM.update(11,rt);EEPROM.update(12,sab);
EEPROM.update(13,att_loun);EEPROM.update(14,s_loun);EEPROM.update(15,treb_c);EEPROM.update(16,mid_c);EEPROM.update(17,bass_c);
EEPROM.update(18,sub_c);EEPROM.update(19,mid_q);EEPROM.update(20,bass_q);
}
}
void to_Timer(){newPosition = myEnc.read()/4;}
void enc(){oldPosition = newPosition;if(newPosition>1){newPosition=1;}if(newPosition<-1){newPosition=-1;}}
void vol_conf(){if(vol>80){vol=80;}if(vol<0){vol=0;}}
void treb_conf(){if(treb>15){treb=15;}if(treb<-15){treb=-15;}}
void mid_conf(){if(mid>15){mid=15;}if(mid<-15){mid=-15;}}
void bass_conf(){if(bass>15){bass=15;}if(bass<-15){bass=-15;}}
void in_conf(){if(in>2){in=0;}}
void gain_conf(){if(gain>9){gain=9;}if(gain<0){gain=0;}}
void lf_conf(){if(lf>9){lf=9;}if(lf<0){lf=0;}}
void rf_conf(){if(rf>9){rf=9;}if(rf<0){rf=0;}}
void lt_conf(){if(lt>9){lt=9;}if(lt<0){lt=0;}}
void rt_conf(){if(rt>9){rt=9;}if(rt<0){rt=0;}}
void sab_conf(){if(sab>9){sab=9;}if(sab<0){sab=0;}}
void att_loun_conf(){if(att_loun>9){att_loun=9;}if(att_loun<0){att_loun=0;}}
void s_loun_conf(){if(s_loun>3){s_loun=3;}if(s_loun<0){s_loun=0;}}
void treb_c_conf(){if(treb_c>3){treb_c=3;}if(treb_c<0){treb_c=0;}}
void mid_c_conf(){if(mid_c>3){mid_c=3;}if(mid_c<0){mid_c=0;}}
void bass_c_conf(){if(bass_c>3){bass_c=3;}if(bass_c<0){bass_c=0;}}
void sub_c_conf(){if(sub_c>3){sub_c=3;}if(sub_c<0){sub_c=0;}}
void mid_q_conf(){if(mid_q>3){mid_q=3;}if(mid_q<0){mid_q=0;}}
void bass_q_conf(){if(bass_q>3){bass_q=3;}if(bass_q<0){bass_q=0;}}
void audio(){
tda.setInput(in+1,gain*2,0); //вх1=1, вх2=2, вх3=3
tda.setInput2(2,0,0); // не используется
tda.setAtt_loudness(att_loun,s_loun,0,0);
tda.setSoft(mute,0,0,0,0);//mute off (не менять)
tda.setVolume(vol-79,0); // общая громкость от 0 до 79 макс
tda.setAtt_LF(79-(lf*2),0); // гром. лк фронт
tda.setAtt_RF(79-(rf*2),0); // гром. пк фронт
tda.setAtt_LT(79-(lt*2),0); // гром. лк тыл
tda.setAtt_RT(79-(rt*2),0); // гром. пк тыл
tda.setAtt_SUB(79-(sab*2),0); // гром. савбуфер
tda.setAtt_Mix(79,0); // не используется
tda.setFilter_Treble(treb,treb_c,0);
tda.setFilter_Middle(mid,mid_q,0);
tda.setFilter_Bass(bass,bass_q,0);
tda.setSub_M_B(sub_c,mid_c,bass_c,0,0);
tda.setMix_Gain_Eff(1,0,0,0,0); // не используется
tda.setSpektor(0,0,0,0,0,0,0);
}
forum.rcl-radio.ru → Тестирование скетчей → TDA7419 + энкодер + ИК пульт + анализатор спектра
Форум работает на PunBB, при поддержке Informer Technologies, Inc
|