Тема: PT2323+TDA7448
Привет гуру скетчей))),ребята помогите пожалуйста совместить 2 скетча,PT2323 b TDA7448,навернулся сабвуфер AREON-300, после разбора выяснилось что сгорела плата управления а именно процессор, много времени ковырялся в тырнете пытался пересобрать все в кучу но все чего добился это просто запустить звук на всю громкость))) наткнулся на этот сайт,как на последнюю надежду воскресить этот деревянный гроб с динамиком))
нужно из первого скетча выкинуть управление процессором PT2322 и вставить управление TDA7448,а как это сделать не получается.....перепробовал кучу вариантов...в один момент даже решил резать дорожки и делать 2 дисплея и управление по отдельности...но получиться что выход с PT2323 нужно будет искать каждый раз в настройках TDA 7448....
первый скетч PT2323
#include <Wire.h>
#include <PT2323.h>
#include <PT2322.h>
#include <LiquidCrystal.h>
#include <EEPROM.h>
PT2323 pt0;
PT2322 pt1;
LiquidCrystal lcd(7, 6, 2, 3, 4, 5);// RS,E,D4,D5,D6,D7 подключение LCD
byte a1[8]={0b00000,0b11011,0b11011,0b11011,0b11011,0b11011,0b11011,0b00000};
byte a2[8]={0b00000,0b11000,0b11000,0b11000,0b11000,0b11000,0b11000,0b00000};
unsigned long time;
int menu,w,vol,vol_d,z,in,bass,bass_d,mid,mid_d,treb,treb_d,attfl,attfl_d,attcn,attcn_d,attsub,attsub_d,ddd,tembro,x,attfr,attfr_d,atttl,atttl_d,atttr,atttr_d,mute;
void setup() {
Wire.begin();Serial.begin(9600);
lcd.begin(16, 2);lcd.createChar(0,a1);lcd.createChar(1,a2);
pinMode(A0,INPUT); // menu
pinMode(A1,INPUT); // +
pinMode(A2,INPUT); // -
pinMode(A3,INPUT); // input
vol = EEPROM.read(0);in = EEPROM.read(1);bass = EEPROM.read(2)-7;mid = EEPROM.read(3)-7;treb = EEPROM.read(4)-7;
attfl = EEPROM.read(5)-14;attcn = EEPROM.read(7)-14;attsub = EEPROM.read(8)-14;ddd = EEPROM.read(9);tembro = EEPROM.read(10);
attfr = EEPROM.read(11)-14;atttl = EEPROM.read(12)-14;atttr = EEPROM.read(13)-14;
delay(500);
audio1();audio2();
}
void loop() {
if(analogRead(A0)>900&&mute!=1){menu++;cl();time=millis();w=1;if(menu>11){menu=0;}}// меню
/////////////////////////////// volume ///////////////////////////////////////////////
if(menu==0){
if(analogRead(A1)>900){vol++;w=1;if(vol>79){vol=79;}audio2();cl();time=millis();}// 79 максимальная громкость
if(analogRead(A2)>900){vol--;w=1;if(vol<0){vol=0;}audio2();cl();time=millis();}// 0 минимум громкости
lcd.setCursor(0,0);lcd.print("Volume ");
lcd.print(-79+vol);lcd.setCursor(13,0);lcd.print("dB");vol_d=vol/2-15;
if(vol_d>=0){for(z=0;z<=vol_d;z++){lcd.setCursor(z/2,1);lcd.write((uint8_t)0);}}
if((vol_d)%2==0){lcd.setCursor(z/2,1);lcd.write((uint8_t)1);}
lcd.setCursor(13,1);lcd.print(vol);lcd.print(" ");}
/////////////////////////////////////////////////////////////////////////////////////
/////////////////////// индикация тембр НЧ + управление кнопками -14...14 дБ ///////////////////
if(menu==1){
if(analogRead(A1)>900){bass++;w=1;if(bass>7){bass=7;}audio2();cl();time=millis();}
if(analogRead(A2)>900){bass--;w=1;if(bass<-7){bass=-7;}audio2();cl();time=millis();}
lcd.setCursor(0,0);lcd.print("Bass ");
lcd.print(bass*2);lcd.setCursor(13,0);lcd.print("dB");bass_d=bass+7;
if(bass_d>=0){for(z=0;z<=bass_d;z++){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)0);}}
if((bass_d)%2==0){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)1);}}
////////////////////////////////////////////////////////////////////////////////////
/////////////////////// индикация тембр CЧ + управление кнопками -14...14 дБ ///////////////////
if(menu==2){
if(analogRead(A1)>900){mid++;w=1;if(mid>7){mid=7;}audio2();cl();time=millis();}
if(analogRead(A2)>900){mid--;w=1;if(mid<-7){mid=-7;}audio2();cl();time=millis();}
lcd.setCursor(0,0);lcd.print("Middle ");
lcd.print(mid*2);lcd.setCursor(13,0);lcd.print("dB");mid_d=mid+7;
if(mid_d>=0){for(z=0;z<=mid_d;z++){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)0);}}
if((mid_d)%2==0){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)1);}}
////////////////////////////////////////////////////////////////////////////////////
/////////////////////// индикация тембр BЧ + управление кнопками -14...14 дБ ///////////////////
if(menu==3){
if(analogRead(A1)>900){treb++;w=1;if(treb>7){treb=7;}audio2();cl();time=millis();}
if(analogRead(A2)>900){treb--;w=1;if(treb<-7){treb=-7;}audio2();cl();time=millis();}
lcd.setCursor(0,0);lcd.print("Treble ");
lcd.print(treb*2);lcd.setCursor(13,0);lcd.print("dB");treb_d=treb+7;
if(treb_d>=0){for(z=0;z<=treb_d;z++){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)0);}}
if((treb_d)%2==0){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)1);}}
////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////// rock pop classic //////////////////////
if(menu==4){
if(analogRead(A1)>900){tembro++;w=1;if(tembro>4){tembro=0;}cl();time=millis();}
if(analogRead(A2)>900){tembro--;w=1;if(tembro<0){tembro=4;}cl();time=millis();}
lcd.setCursor(0,0);lcd.print(" Preset timbre ");
if(tembro==0){lcd.setCursor(0,1);lcd.print(" manual mode ");}
if(tembro==1){lcd.setCursor(0,1);lcd.print(" ROCK ");bass=4,mid=-2;treb=5;x=1;}
if(tembro==2){lcd.setCursor(0,1);lcd.print(" POP ");bass=-3,mid=3;treb=-2;x=1;}
if(tembro==3){lcd.setCursor(0,1);lcd.print(" CLASSIC ");bass=0,mid=0;treb=-2;x=1;}
if(tembro==4){lcd.setCursor(0,1);lcd.print(" default ");bass=0,mid=0;treb=0;x=1;}
if(x==1){audio2();x=0;}
}
////////////////////////////////////////////////////////////////////////////////
/////////////////////// ATT FL ///////////////////
if(menu==5){
if(analogRead(A1)>900){attfl++;w=1;if(attfl>0){attfl=0;}audio2();cl();time=millis();}
if(analogRead(A2)>900){attfl--;w=1;if(attfl<-14){attfl=-14;}audio2();cl();time=millis();}
lcd.setCursor(0,0);lcd.print("ATT FL ");
lcd.print(attfl);lcd.setCursor(13,0);lcd.print("dB");attfl_d=attfl+14;
if(attfl_d>=0){for(z=0;z<=attfl_d;z++){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)0);}}
if((attfl_d)%2==0){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)1);}}
////////////////////////////////////////////////////////////////////////////////////
/////////////////////// ATT FR ///////////////////
if(menu==6){
if(analogRead(A1)>900){attfr++;w=1;if(attfr>0){attfr=0;}audio2();cl();time=millis();}
if(analogRead(A2)>900){attfr--;w=1;if(attfr<-14){attfr=-14;}audio2();cl();time=millis();}
lcd.setCursor(0,0);lcd.print("ATT FR ");
lcd.print(attfr);lcd.setCursor(13,0);lcd.print("dB");attfr_d=attfr+14;
if(attfr_d>=0){for(z=0;z<=attfr_d;z++){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)0);}}
if((attfr_d)%2==0){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)1);}}
////////////////////////////////////////////////////////////////////////////////////
/////////////////////// ATT TL ///////////////////
if(menu==7){
if(analogRead(A1)>900){atttl++;w=1;if(atttl>0){atttl=0;}audio2();cl();time=millis();}
if(analogRead(A2)>900){atttl--;w=1;if(atttl<-14){atttl=-14;}audio2();cl();time=millis();}
lcd.setCursor(0,0);lcd.print("ATT TL ");
lcd.print(atttl);lcd.setCursor(13,0);lcd.print("dB");atttl_d=atttl+14;
if(atttl_d>=0){for(z=0;z<=atttl_d;z++){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)0);}}
if((atttl_d)%2==0){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)1);}}
////////////////////////////////////////////////////////////////////////////////////
/////////////////////// ATT TR ///////////////////
if(menu==8){
if(analogRead(A1)>900){atttr++;w=1;if(atttr>0){atttr=0;}audio2();cl();time=millis();}
if(analogRead(A2)>900){atttr--;w=1;if(atttr<-14){atttr=-14;}audio2();cl();time=millis();}
lcd.setCursor(0,0);lcd.print("ATT TR ");
lcd.print(atttr);lcd.setCursor(13,0);lcd.print("dB");atttr_d=atttr+14;
if(atttr_d>=0){for(z=0;z<=atttr_d;z++){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)0);}}
if((atttr_d)%2==0){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)1);}}
////////////////////////////////////////////////////////////////////////////////////
/////////////////////// ATT CN ///////////////////
if(menu==9){
if(analogRead(A1)>900){attcn++;w=1;if(attcn>0){attcn=0;}audio2();cl();time=millis();}
if(analogRead(A2)>900){attcn--;w=1;if(attcn<-14){attcn=-14;}audio2();cl();time=millis();}
lcd.setCursor(0,0);lcd.print("ATT CN ");
lcd.print(attcn);lcd.setCursor(13,0);lcd.print("dB");attcn_d=attcn+14;
if(attcn_d>=0){for(z=0;z<=attcn_d;z++){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)0);}}
if((attcn_d)%2==0){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)1);}}
////////////////////////////////////////////////////////////////////////////////////
/////////////////////// ATT SUB ///////////////////
if(menu==10){
if(analogRead(A1)>900){attsub++;w=1;if(attsub>0){attsub=0;}audio2();cl();time=millis();}
if(analogRead(A2)>900){attsub--;w=1;if(attsub<-14){attsub=-14;}audio2();cl();time=millis();}
lcd.setCursor(0,0);lcd.print("ATT SUB ");
lcd.print(attsub);lcd.setCursor(13,0);lcd.print("dB");attsub_d=attsub+14;
if(attsub_d>=0){for(z=0;z<=attsub_d;z++){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)0);}}
if((attsub_d)%2==0){lcd.setCursor(z/2+4,1);lcd.write((uint8_t)1);}}
////////////////////////////////////////////////////////////////////////////////////
//////////////////////////// 3d ///////////////////////////////////////////////
if(menu==11){
if(analogRead(A1)>900){ddd++;w=1;if(ddd>1){ddd=0;}audio2();cl();time=millis();}
if(analogRead(A2)>900){ddd--;w=1;if(ddd<0){ddd=1;}audio2();cl();time=millis();}
lcd.setCursor(0,0); if(ddd==0){lcd.print(" 3D ON ");}else{lcd.print(" 3D OFF ");}
}
////////////////////////////////////////////////////////////////////////////////
if(analogRead(A3)>900){in++;if(in>4){in=0;}audio1();cl();lcd.setCursor(0,0);lcd.print(" INPUT ");lcd.print(in+1);delay(2000);time=millis();w=1;}// in
// if(analogRead(A3)>900){in++;if(in>5){in=0;}audio1();cl();lcd.setCursor(0,0);lcd.print(" INPUT ");lcd.print(in+1);delay(2000);time=millis();w=1;}// если in = 5 то включен шести канальный вход
//////////// mute ////////////////////////
if(mute==1&&(analogRead(A1)>900||analogRead(A2)>900)){mute=0;menu=0;audio1();cl();}
if(analogRead(A1)>900&&analogRead(A2)>900){mute=1;menu=100;audio1();cl();}
if(mute==1){lcd.setCursor(0,0);lcd.print(" MUTE ");delay(300);}
///////////////////////////////eeprom////////////////////////////////////////////////
if(millis()-time>10000&& w==1&&mute==0){
EEPROM.update(0,vol);EEPROM.update(1,in);EEPROM.update(2,bass+7);EEPROM.update(3,mid+7);EEPROM.update(4,treb+7);
EEPROM.update(5,attfl+14);EEPROM.update(7,attcn+14);EEPROM.update(8,attsub+14);EEPROM.update(9,ddd);EEPROM.update(10,tembro);
EEPROM.update(11,attfr+14);EEPROM.update(12,atttl+14);EEPROM.update(13,atttr+14);
menu=0;w=0;cl();}
/////////////////////////////////////////////////////////////////////////////////////
}// loop
void cl(){delay(300);lcd.clear();}
void audio1(){
pt0.setInput(in);
pt0.setMute(0,0,0,0,0,0,mute);
pt0.setFeature(1,1);
}
void audio2(){
pt1.setFront_lk_att(abs(attfl));// att front L
pt1.setFront_rk_att(abs(attfr));// att front R
pt1.setCenter_att(abs(attcn)); // att center
pt1.setRear_lk_att(abs(atttl)); // att rear L
pt1.setRear_rk_att(abs(atttr)); // att rear R
pt1.setSub_att(abs(attsub)); // att sub
pt1.setFunc(0,ddd,0); // mute,3d,тембр on/off
pt1.setBass(bass); // BASS -14...0...14 dB (int -7...0...7)
pt1.setMiddle(mid); // MIDDLE -14...0...14 dB (int -7...0...7)
pt1.setTreble(treb); // TREBLE -14...0...14 dB (int -7...0...7)
pt1.setVol(vol); // 0...79
}
второй скетч TDA7448 только управление энкодером...
#include <Wire.h>
#include <MsTimer2.h>
#include <LiquidCrystal.h>
#include <Encoder.h>
#include <EEPROM.h>
#include <TDA7448.h>
TDA7448 tda;
Encoder myEnc(9, 8);//CLK, DT подключение энкодера
LiquidCrystal lcd(7, 6, 2, 3, 4, 5);// RS,E,D4,D5,D6,D7 подключение LCD
byte a1[8]={0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
byte a2[8]={0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
byte a3[8]={0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000};
unsigned long newPosition,time,oldPosition = -999;
int vol1,vol2,vol3,vol4,vol5,vol6,vol1_d,vol2_d,vol3_d,vol4_d,vol5_d,vol6_d;
int w,w2,menu,z,z0,z1;
void setup(){
Wire.begin();
lcd.begin(16, 2);
lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
vol1 = -EEPROM.read(0);
vol2 = -EEPROM.read(1);
vol3 = -EEPROM.read(2);
vol4 = -EEPROM.read(3);
vol5 = -EEPROM.read(4);
vol6 = -EEPROM.read(5);
pinMode(A0,INPUT);// КНОПКА ЭНКОДЕРA
MsTimer2::set(3, to_Timer);MsTimer2::start();
lcd.setCursor(0,0);lcd.print(" TDA7448 ");delay(1000);lcd.clear();audio_tda();
}
void loop(){
if(analogRead(A0)<900){menu++;cl();myEnc.write(0);time=millis();w=1;w2=1;if(menu>5){menu=0;}}// меню
if(menu==0){
if (newPosition != oldPosition) {
oldPosition = newPosition;
vol1=vol1+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol1>0){vol1=0;}if(vol1<-79){vol1=-79;}audio_tda();}
lcd.setCursor(0,0);lcd.print("Vol 1 ");
lcd.print(" ");lcd.print(vol1);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");vol1_d=vol1+48;
if(w2==1){
for(z=0,z0=0,z1=0;z<=vol1_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;}}
if(menu==1){
if (newPosition != oldPosition) {
oldPosition = newPosition;
vol2=vol2+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol2>0){vol2=0;}if(vol2<-79){vol2=-79;}audio_tda();}
lcd.setCursor(0,0);lcd.print("Vol 2 ");
lcd.print(" ");lcd.print(vol2);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");vol2_d=vol2+48;
if(w2==1){
for(z=0,z0=0,z1=0;z<=vol2_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;}}
if(menu==2){
if (newPosition != oldPosition) {
oldPosition = newPosition;
vol3=vol3+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol3>0){vol3=0;}if(vol3<-79){vol3=-79;}audio_tda();}
lcd.setCursor(0,0);lcd.print("Vol 3 ");
lcd.print(" ");lcd.print(vol3);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");vol3_d=vol3+48;
if(w2==1){
for(z=0,z0=0,z1=0;z<=vol3_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;}}
if(menu==3){
if (newPosition != oldPosition) {
oldPosition = newPosition;
vol4=vol4+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol4>0){vol4=0;}if(vol4<-79){vol4=-79;}audio_tda();}
lcd.setCursor(0,0);lcd.print("Vol 4 ");
lcd.print(" ");lcd.print(vol4);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");vol4_d=vol4+48;
if(w2==1){
for(z=0,z0=0,z1=0;z<=vol4_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;}}
if(menu==4){
if (newPosition != oldPosition) {
oldPosition = newPosition;
vol5=vol5+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol5>0){vol5=0;}if(vol5<-79){vol5=-79;}audio_tda();}
lcd.setCursor(0,0);lcd.print("Vol 5 ");
lcd.print(" ");lcd.print(vol5);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");vol5_d=vol5+48;
if(w2==1){
for(z=0,z0=0,z1=0;z<=vol5_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;}}
if(menu==5){
if (newPosition != oldPosition) {
oldPosition = newPosition;
vol6=vol6+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol6>0){vol6=0;}if(vol6<-79){vol6=-79;}audio_tda();}
lcd.setCursor(0,0);lcd.print("Vol 6 ");
lcd.print(" ");lcd.print(vol6);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");vol6_d=vol6+48;
if(w2==1){
for(z=0,z0=0,z1=0;z<=vol6_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;}}
if(millis()-time>10000 && w==1){
EEPROM.update(0,abs(vol1));
EEPROM.update(1,abs(vol2));
EEPROM.update(2,abs(vol3));
EEPROM.update(3,abs(vol4));
EEPROM.update(4,abs(vol5));
EEPROM.update(5,abs(vol6));
w=0;}
}
void audio_tda(){
tda.setAtt(1,vol1); // 0 макс громк, -79(79) мин громк
tda.setAtt(2,vol2);
tda.setAtt(3,vol3);
tda.setAtt(4,vol4);
tda.setAtt(5,vol5);
tda.setAtt(6,vol6);
}
void cl(){delay(300);lcd.clear();}
void to_Timer(){newPosition = myEnc.read()/4;}
как их можно совместить?