Re: PT2323+TDA7448
Подключил процессоры, запустил сканер и он висит в режиме сканирования и все...
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
forum.rcl-radio.ru → Переделки → PT2323+TDA7448
Страницы Назад 1 … 4 5 6 7 8 … 14 Далее
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Подключил процессоры, запустил сканер и он висит в режиме сканирования и все...
Посмотрите стоят ли на плате с аудипроцессорами по шине I2C подтягивающие резисторы по 4,7 кОм к +5В. Если нет то их надо установить.
Хорошо, но боюсь уже сегодня не успею. Спасибо вам за уделенное мне сегодня время!
Задам сразу еще пару вопросов
Энкодер родной просто имеет три вывода, один на землю и два идут на микропроцессор. Его не хочу трогать, попробую найти похожий, на нем нет вообще никаких опознавательных знаков. Потом отпишусь какой нашел.
Подключение кнопок в дальнейшем можно будет сделать на входы D2,D3,D4? Так удобнее в монтаже будет.
Какие выводы скажите такие и сделаю, программных ограничений для этого нет.
Добрый день! Сегодня дошли руки продолжить работу. Подключил плату к центру, залил ваш скетч и все прекрасно работает! Звук есть. Начал собирать все в железе. Когда будет готово,тогда продолжим дальше.Я выложу схему, куда что я подключил по ногам.
Есть пока небольшой затык с энкодером. Точно такого найти не смог,поэтому переставлю его.
У него три вывода, один на землю соединен, два других идут на МП и каждая нога шунтирована конденсатором на 1.5 нФ на землю.
Я так понимаю,мне так же все это к ардуине подключить?
У энкодера есть выводы CLK DT и GND. Выводы CLK и DT должны иметь подтягивающие резисторы по 10 кОм на +5В. В модуле энкодера резисторы уже установлены, Вам придется их устанавливать отдельно.
В моей схеме их нет, я так понимаю это для подключения к ардуино они требуются? Поставлю, не проблема. Проблема понять какой вывод CLK, а какой DT
Это не имеет значение, просто энкодер будет работать в другую сторону, можно поменять местами провода или программно.
Ну тогда отлично. Спасибо еще раз. Закончу железо, продолжим дальше.
Доброго времени суток! Все работает, все хорошо) Подскажите, пожалуйста, как правильно сделать, чтобы при включении режима блютус (вход BT) на каком-нибудь пине ардуино появлялось 5 вольт и пропадало при выборе любого другого входа?
Итоговый скетч:
#define IR_8 0xFF21DE // Кнопка MENU (input sel) #define IR_3 0xFF09F6 // Кнопка > (Vol+) #define IR_4 0xFF29D6 // Кнопка < (Vol-) #define MUTE 0xFF41BE // Кнопка MUTE #define MODE 0xFF619E // Кнопка MODE #define IR_5 0xFF8976 // Кнопка CH+ #define IR_6 0xFF6996 // Кнопка CH- #define IR_7 0xFFA15E // Кнопка Reset #define STBY 0xFF01FE // Кнопка Standby #define TU_1 0xFF916E // Кнопка Tune- #define TU_2 0xFF51AE // Кнопка Tune+ //#define BRIG_H 250 //#define BRIG_L 0 #include <Wire.h> #include <PT2323.h> #include <TDA7448.h> #include <Encoder.h> #include <EEPROM.h> #include <MsTimer2.h> #include <boarddefs.h> #include <IRremote.h> #include <LiquidCrystal.h> TDA7448 tda; PT2323 pt; IRrecv irrecv(10); // указываем вывод модуля IR приемника decode_results ir; LiquidCrystal lcd(7, 6, 2, 3, 4, 5);// RS,E,D4,D5,D6,D7 подключение LCD Encoder myEnc(9, 8);//CLK, DT подключение энкодера 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,times,oldPosition = -999; int x,i,w,w1,menu,menu1=0,vol,vol_d,z,z0,z1,gr1,gr2,in,att1,att2,att3,att4,att5,att6; bool mute,power; void setup(){ Serial.begin(9600);Wire.begin();irrecv.enableIRIn(); // запускаем модуль IR lcd.begin(8, 2); pinMode(13,INPUT); // КНОПКА ЭНКОДЕРA pinMode(12,OUTPUT); // выход управления MUTE pinMode(11,OUTPUT); // output LED digitalWrite(11,HIGH); MsTimer2::set(3, to_Timer);MsTimer2::start(); lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3); lcd.setCursor(0,0);lcd.print("TDA 7448"); lcd.setCursor(0,1);lcd.print("PT 2323"); delay(1000);cl(); if(EEPROM.read(100)!=0){for(i=0;i<101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении vol = EEPROM.read(0)-79;in = EEPROM.read(1); att1 = EEPROM.read(11);att2 = EEPROM.read(12);att3 = EEPROM.read(13);att4 = EEPROM.read(14);att5 = EEPROM.read(15);att6 = EEPROM.read(16); audio_tda();audio_pt(); digitalWrite(12,LOW); } void loop(){ if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);times=millis();w=1;w1=1;irrecv.resume();} // IR приемник if(ir.value==0){gr1=0;gr2=0;} if(mute==0&&power==0){ if(digitalRead(13)==HIGH&&menu!=100){menu++;x++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu>1){menu=0;}} // меню input if(x>5){menu1=1;menu=100;lcd.setCursor(0,0);lcd.print("ATTENUAT");delay(1000);} if(digitalRead(13)==LOW){x=0;} if(digitalRead(13)==HIGH&&menu==100){menu1++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu1>6){menu1=1;}} //if(ir.value==IR_8){menu++;gr1=0;gr2=0;cl();times=millis();w=1;w1=1;if(menu>1){menu=0;}} // меню input if(ir.value==IR_7){menu=0;menu1=0;cl();times=millis();w=1;w1=1;} // кнопка reset if(menu==0||menu1==1){ if(ir.value==IR_8){menu1=0;menu=1;gr1=0;gr2=0;cl();times=millis();w=1;w1=1;}} // меню input if(menu==1){ if(ir.value==IR_8){in++;menu1=0;cl();times=millis();w=1;w1=1;in_func();audio_tda();audio_pt();}} // input - переключение входов с пульта if(ir.value==MODE){menu1=1;menu=100;cl();lcd.setCursor(0,0);lcd.print("ATTENUAT");delay(1000);} if(ir.value==IR_5&&menu==100){menu1++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu1>6){menu1=1;}} if(ir.value==IR_6&&menu==100){menu1--;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu1<1){menu1=6;}} } if(ir.value==MUTE&&mute==0 && power==0){mute=1;gr1=0;gr2=0;cl1();menu=100;menu1=0;lcd.setCursor(0,0);lcd.print(" MUTE ");digitalWrite(12,HIGH);} if(ir.value==MUTE&&mute==1 && power==0){mute=0;gr1=0;gr2=0;cl1();menu=0;digitalWrite(12,LOW);} //////////////////////// POWER ////////////////////////////////////////////////////////////////////////////////////// if(ir.value==STBY&&power==0){power=1;gr1=0;gr2=0;cl();menu=100;menu1=0;lcd.setCursor(0,0);lcd.print("POWEROFF");digitalWrite(12,HIGH);digitalWrite(11,LOW);delay(2000);cl();} if(ir.value==STBY&&power==1){power=0;gr1=0;gr2=0;cl();menu=0;cl();lcd.setCursor(0,0);lcd.print("POWER ON");digitalWrite(12,LOW);digitalWrite(11,HIGH);delay(2000);cl();} /////////////////////// VOLUME /////////////////////////////////////////////////////////////////////////////////////// if(menu==0){ if(ir.value==IR_3){vol++;gr1=1;gr2=0;cl1();w1=1;vol_func();audio_tda();audio_pt();}// кнопка > if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl1();w1=1;vol_func();audio_tda();audio_pt();}// кнопка >>>>>> if(ir.value==IR_4){vol--;gr1=0;gr2=1;cl1();w1=1;vol_func();audio_tda();audio_pt();}// кнопка < if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl1();w1=1;vol_func();audio_tda();audio_pt();}// кнопка <<<<<< if (newPosition != oldPosition) { oldPosition = newPosition; vol=vol+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;vol_func();audio_tda();audio_pt();} lcd.setCursor(0,0);lcd.print(" VOL"); lcd.print(" ");lcd.print(79+vol);lcd.print(" ");lcd.setCursor(5,0);lcd.print(" ");vol_d=map(abs(vol), 79,0, 0,24); if(w1==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);}w1=0;}} /////////////////// INPUT //////////////////////////////////////////////////////////////////////////////////////// if(menu==1){ //if(ir.value==IR_3){in++;gr1=1;gr2=0;cl1();w1=1;in_func();audio_tda();audio_pt();}// кнопка > //if(ir.value==0xFFFFFFFF and gr1==1){in++;gr2=0;cl1();w1=1;in_func();audio_tda();audio_pt();}// кнопка >>>>>> //if(ir.value==IR_4){in--;gr1=0;gr2=1;cl1();w1=1;in_func();audio_tda();audio_pt();}// кнопка < //if(ir.value==0xFFFFFFFF and gr2==1){in--;gr1=0;cl1();w1=1;in_func();audio_tda();audio_pt();}// кнопка <<<<<< if (newPosition != oldPosition) { oldPosition = newPosition; in=in+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;in_func();audio_tda();audio_pt();} lcd.setCursor(0,0);lcd.print(" INPUT "); lcd.setCursor(0,1); switch(in){case 0: lcd.print(" AUX "); break; case 1: lcd.print(" MP3 "); break; case 2: lcd.print(" BT "); break; case 3: lcd.print(" Radio "); break; case 4: lcd.print(" 5.1 "); break;}} // пропишите свои названия входов ///////////////////////////////////// Att ////////////////////////////////////////// if(menu1==1){ if(ir.value==IR_4){att1++;gr1=1;gr2=0;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка > if(ir.value==0xFFFFFFFF and gr1==1){att1++;gr2=0;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка >>>>>> if(ir.value==IR_3){att1--;gr1=0;gr2=1;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка < if(ir.value==0xFFFFFFFF and gr2==1){att1--;gr1=0;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка <<<<<< if (newPosition != oldPosition) { oldPosition = newPosition; att1=att1-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;}audio_tda();audio_pt();} lcd.setCursor(0,0);lcd.print("ATTENUAT"); lcd.setCursor(0,1);lcd.print("FL ");lcd.setCursor(3,1); if(-att1>-1){lcd.print(" 0 ");} else{lcd.print(-att1);if(-att1>-10){lcd.print(" ");}} lcd.setCursor(6,1);lcd.print("dB"); } if(menu1==2){ if(ir.value==IR_4){att2++;gr1=1;gr2=0;cl1();w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;};audio_tda();audio_pt();}// кнопка > if(ir.value==0xFFFFFFFF and gr1==1){att2++;gr2=0;cl1();w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;};audio_tda();audio_pt();}// кнопка >>>>>> if(ir.value==IR_3){att2--;gr1=0;gr2=1;cl1();w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;};audio_tda();audio_pt();}// кнопка < if(ir.value==0xFFFFFFFF and gr2==1){att2--;gr1=0;cl1();w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;};audio_tda();audio_pt();}// кнопка <<<<<< if (newPosition != oldPosition) { oldPosition = newPosition; att2=att2-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;}audio_tda();audio_pt();} lcd.setCursor(0,0);lcd.print("ATTENUAT"); lcd.setCursor(0,1);lcd.print("FR");lcd.setCursor(3,1); if(-att2>-1){lcd.print(" 0 ");} else{lcd.print(-att2);if(-att2>-10){lcd.print(" ");}} lcd.setCursor(6,1);lcd.print("dB"); } if(menu1==3){ if(ir.value==IR_4){att3++;gr1=1;gr2=0;cl1();w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;};audio_tda();audio_pt();}// кнопка > if(ir.value==0xFFFFFFFF and gr1==1){att3++;gr2=0;cl1();w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;};audio_tda();audio_pt();}// кнопка >>>>>> if(ir.value==IR_3){att3--;gr1=0;gr2=1;cl1();w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;};audio_tda();audio_pt();}// кнопка < if(ir.value==0xFFFFFFFF and gr2==1){att3--;gr1=0;cl1();w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;};audio_tda();audio_pt();}// кнопка <<<<<< if (newPosition != oldPosition) { oldPosition = newPosition; att3=att3-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;}audio_tda();audio_pt();} lcd.setCursor(0,0);lcd.print("ATTENUAT"); lcd.setCursor(0,1);lcd.print("CT");lcd.setCursor(3,1); if(-att3>-1){lcd.print(" 0 ");} else{lcd.print(-att3);if(-att3>-10){lcd.print(" ");}} lcd.setCursor(6,1);lcd.print("dB"); } if(menu1==4){ if(ir.value==IR_4){att4++;gr1=1;gr2=0;cl1();w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;};audio_tda();audio_pt();}// кнопка > if(ir.value==0xFFFFFFFF and gr1==1){att4++;gr2=0;cl1();w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;};audio_tda();audio_pt();}// кнопка >>>>>> if(ir.value==IR_3){att4--;gr1=0;gr2=1;cl1();w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;};audio_tda();audio_pt();}// кнопка < if(ir.value==0xFFFFFFFF and gr2==1){att4--;gr1=0;cl1();w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;};audio_tda();audio_pt();}// кнопка <<<<<< if (newPosition != oldPosition) { oldPosition = newPosition; att4=att4-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;}audio_tda();audio_pt();} lcd.setCursor(0,0);lcd.print("ATTENUAT"); lcd.setCursor(0,1);lcd.print("SUB");lcd.setCursor(3,1); if(-att4>-1){lcd.print(" 0 ");} else{lcd.print(-att4);if(-att4>-10){lcd.print(" ");}} lcd.setCursor(6,1);lcd.print("dB"); } if(menu1==5){ if(ir.value==IR_4){att5++;gr1=1;gr2=0;cl1();w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;};audio_tda();audio_pt();}// кнопка > if(ir.value==0xFFFFFFFF and gr1==1){att5++;gr2=0;cl1();w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;};audio_tda();audio_pt();}// кнопка >>>>>> if(ir.value==IR_3){att5--;gr1=0;gr2=1;cl1();w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;};audio_tda();audio_pt();}// кнопка < if(ir.value==0xFFFFFFFF and gr2==1){att5--;gr1=0;cl1();w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;};audio_tda();audio_pt();}// кнопка <<<<<< if (newPosition != oldPosition) { oldPosition = newPosition; att5=att5-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;}audio_tda();audio_pt();} lcd.setCursor(0,0);lcd.print("ATTENUAT"); lcd.setCursor(0,1);lcd.print("SL");lcd.setCursor(3,1); if(-att5>-1){lcd.print(" 0 ");} else{lcd.print(-att5);if(-att5>-10){lcd.print(" ");}} lcd.setCursor(6,1);lcd.print("dB"); } if(menu1==6){ if(ir.value==IR_4){att6++;gr1=1;gr2=0;cl1();w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;};audio_tda();audio_pt();}// кнопка > if(ir.value==0xFFFFFFFF and gr1==1){att6++;gr2=0;cl1();w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;};audio_tda();audio_pt();}// кнопка >>>>>> if(ir.value==IR_3){att6--;gr1=0;gr2=1;cl1();w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;};audio_tda();audio_pt();}// кнопка < if(ir.value==0xFFFFFFFF and gr2==1){att6--;gr1=0;cl1();w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;};audio_tda();audio_pt();}// кнопка <<<<<< if (newPosition != oldPosition) { oldPosition = newPosition; att6=att6-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;}audio_tda();audio_pt();} lcd.setCursor(0,0);lcd.print("ATTENUAT"); lcd.setCursor(0,1);lcd.print("SR");lcd.setCursor(3,1); if(-att6>-1){lcd.print(" 0 ");} else{lcd.print(-att6);if(-att6>-10){lcd.print(" ");}} lcd.setCursor(6,1);lcd.print("dB"); } ///////////////// EEPROM /////////////////////////////////////////////////////////////////////////////////////// if(millis()-times>10000 && w==1){ EEPROM.update(0,vol+79); EEPROM.update(1,in); EEPROM.update(11,att1);EEPROM.update(12,att2);EEPROM.update(13,att3);EEPROM.update(14,att4);EEPROM.update(15,att5);EEPROM.update(16,att6); menu=0;cl();w=0,w1=1;menu1=0;} }//loop void in_func(){if(in<0){in=4;}if(in>4){in=0;}} void vol_func(){if(vol>0){vol=0;}if(vol<-79){vol=-79;}} void cl(){ir.value=0;delay(300);lcd.clear();} void cl1(){ir.value=0;delay(100);} void audio_pt(){ pt.setInput(in); // входы 1...4 (0...3) или 6 моно (4) pt.setMute(0,0,0,0,0,0,0); pt.setFeature(0,1); // дополнительные функции 0...3 // 0 - Enhanced Surround Function Active // 1 - Enhanced Surround Function Disabled // 0 - Mixed Channel (0dB) Setup // 1 - Mixed Channel (+6dB) Setup } void audio_tda(){ tda.setAtt(1,vol-att1);// 0 макс громк, -79(79) мин громк tda.setAtt(2,vol-att2); tda.setAtt(3,vol-att3); tda.setAtt(4,vol-att4); tda.setAtt(5,vol-att5); tda.setAtt(6,vol-att6); } void to_Timer(){newPosition = myEnc.read()/4;}
Вставить в основной цикл loop()
if(in==2){digitalWrite(номер_пина,HIGH);}else{digitalWrite(номер_пина,LOW);}
Спасибо, все работает!
Только появился противный щелчок при выбора входа блютус, но оно и понятно, китайская плата блютус включается при активном усилителе. Можно ли как-то обойти это программно? Пробовал прописывать, чтобы при выборе входа блютус сначала включался mute, потом включалась плата блютус, потом выключался mute, но не работает так, щелчка нет, но и звука нет - колонки остаются в режиме mute
pinMode(12,OUTPUT); // выход управления MUTE
pinMode(A0,OUTPUT); // питание блютус
if(in==1){digitalWrite(12,HIGH);digitalWrite(A0,HIGH);delay(500);digitalWrite(12,LOW);}else{digitalWrite(A0,LOW);}
Полагаю, что оператор If..else так не умеет)) Или надо как-то позаковыристее написать?
У Вас в цикле этот код? Он должен исполняться только один раз при переключении входа.
У Вас вход MUTE не инверсный, точно активация MUTE при +5В ?
В условие нажатия кнопки INPUT добавьте переменную, например flag =1;
if(in==1 && flag==1){flag=0; digitalWrite(12,HIGH);digitalWrite(A0,HIGH);delay(500);digitalWrite(12,LOW);}else{digitalWrite(A0,LOW);}
Mute активируется точно через +5В, на плате усилителя для этого специально сделана обвязка штатно китайцами)
И да, команда должна исполняться только один раз при включении входа, значит в основном цикле loop() ей не место?
В условие нажатия кнопки INPUT добавьте переменную, например flag =1;
ругается... 'flag' was not declared in this scope
Эту переменную надо объявить
bool flag;
Если закомментировать строчку в основном цикле loop, то ничего не работает, mute не включается и питание блютус тоже.
Если раскомментировать строчку в цикле loop, то происходит следующее - при выборе источника блютус с задержкой в 10 секунд он с целчком включается
Опубликуйте скетч со всеми изменениями.
#define IR_8 0xFF21DE // Кнопка MENU (input sel)
#define IR_3 0xFF09F6 // Кнопка > (Vol+)
#define IR_4 0xFF29D6 // Кнопка < (Vol-)
#define MUTE 0xFF41BE // Кнопка MUTE
#define MODE 0xFF619E // Кнопка MODE
#define IR_5 0xFF8976 // Кнопка CH+
#define IR_6 0xFF6996 // Кнопка CH-
#define IR_7 0xFFA15E // Кнопка Reset
#define STBY 0xFF01FE // Кнопка Standby
#define TU_1 0xFF916E // Кнопка Tune-
#define TU_2 0xFF51AE // Кнопка Tune+
//#define BRIG_H 250
//#define BRIG_L 0
#include <Wire.h>
#include <PT2323.h>
#include <TDA7448.h>
#include <Encoder.h>
#include <EEPROM.h>
#include <MsTimer2.h>
#include <boarddefs.h>
#include <IRremote.h>
#include <LiquidCrystal.h>
TDA7448 tda;
PT2323 pt;
IRrecv irrecv(10); // указываем вывод модуля IR приемника
decode_results ir;
LiquidCrystal lcd(7, 6, 2, 3, 4, 5);// RS,E,D4,D5,D6,D7 подключение LCD
Encoder myEnc(9, 8);//CLK, DT подключение энкодера
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,times,oldPosition = -999;
int x,i,w,w1,menu,menu1=0,vol,vol_d,z,z0,z1,gr1,gr2,in,att1,att2,att3,att4,att5,att6;
bool mute,power,flag;
void setup(){
Serial.begin(9600);Wire.begin();irrecv.enableIRIn(); // запускаем модуль IR
lcd.begin(8, 2);
pinMode(A0,OUTPUT); // питание блютус
pinMode(13,INPUT); // КНОПКА ЭНКОДЕРA
pinMode(12,OUTPUT); // выход управления MUTE
pinMode(11,OUTPUT); // output LED
digitalWrite(11,HIGH);
MsTimer2::set(3, to_Timer);MsTimer2::start();
lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
lcd.setCursor(0,0);lcd.print("TDA 7448");
lcd.setCursor(0,1);lcd.print("PT 2323");
delay(1000);cl();
digitalWrite(12,HIGH); // mute, чтобы избежать хлопка при включении
lcd.setCursor(0,0);lcd.print("SOFT-RWR");
delay(1000);
if(EEPROM.read(100)!=0){for(i=0;i<101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении
vol = EEPROM.read(0)-79;in = EEPROM.read(1);
att1 = EEPROM.read(11);att2 = EEPROM.read(12);att3 = EEPROM.read(13);att4 = EEPROM.read(14);att5 = EEPROM.read(15);att6 = EEPROM.read(16);
audio_tda();audio_pt();
delay(1500);cl();
digitalWrite(12,LOW); // выключение mute
}
void loop(){
//if(in==1){digitalWrite(A0,HIGH);}else{digitalWrite(A0,LOW);} //вкл-выкл питания блютус
if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);times=millis();w=1;w1=1;irrecv.resume();} // IR приемник
if(ir.value==0){gr1=0;gr2=0;}
if(mute==0&&power==0){
if(digitalRead(13)==HIGH&&menu!=100){menu++;x++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu>1){menu=0;}} // меню input
if(x>5){menu1=1;menu=100;lcd.setCursor(0,0);lcd.print("ATTENUAT");delay(1000);}
if(digitalRead(13)==LOW){x=0;}
if(digitalRead(13)==HIGH&&menu==100){menu1++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu1>6){menu1=1;}}
//if(ir.value==IR_8){menu++;gr1=0;gr2=0;cl();times=millis();w=1;w1=1;if(menu>1){menu=0;}} // меню input
if(ir.value==IR_7){menu=0;menu1=0;cl();times=millis();w=1;w1=1;} // кнопка reset
if(menu==0||menu1==1){
if(ir.value==IR_8){menu1=0;menu=1;gr1=0;gr2=0;cl();times=millis();w=1;w1=1;}} // меню input
if(menu==1){
if(ir.value==IR_8){in++;menu1=0;cl();times=millis();w=1;w1=1;in_func();audio_tda();audio_pt();}} // input - переключение входов с пульта
if(ir.value==MODE){menu1=1;menu=100;cl();lcd.setCursor(0,0);lcd.print("ATTENUAT");delay(1000);}
if(ir.value==IR_5&&menu==100){menu1++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu1>6){menu1=1;}}
if(ir.value==IR_6&&menu==100){menu1--;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu1<1){menu1=6;}}
}
if(ir.value==MUTE&&mute==0 && power==0){mute=1;gr1=0;gr2=0;cl1();menu=100;menu1=0;lcd.setCursor(0,0);lcd.print(" MUTE ");digitalWrite(12,HIGH);}
if(ir.value==MUTE&&mute==1 && power==0){mute=0;gr1=0;gr2=0;cl1();menu=0;digitalWrite(12,LOW);}
//////////////////////// POWER //////////////////////////////////////////////////////////////////////////////////////
if(ir.value==STBY&&power==0){power=1;gr1=0;gr2=0;cl();menu=100;menu1=0;lcd.setCursor(0,0);lcd.print("POWEROFF");digitalWrite(12,HIGH);digitalWrite(11,LOW);delay(2000);cl();}
if(ir.value==STBY&&power==1){power=0;gr1=0;gr2=0;cl();menu=0;cl();lcd.setCursor(0,0);lcd.print("POWER ON");digitalWrite(12,LOW);digitalWrite(11,HIGH);delay(2000);cl();}
/////////////////////// VOLUME ///////////////////////////////////////////////////////////////////////////////////////
if(menu==0){
if(ir.value==IR_3){vol++;gr1=1;gr2=0;cl1();w1=1;vol_func();audio_tda();audio_pt();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl1();w1=1;vol_func();audio_tda();audio_pt();}// кнопка >>>>>>
if(ir.value==IR_4){vol--;gr1=0;gr2=1;cl1();w1=1;vol_func();audio_tda();audio_pt();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl1();w1=1;vol_func();audio_tda();audio_pt();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
vol=vol+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;vol_func();audio_tda();audio_pt();}
lcd.setCursor(0,0);lcd.print(" VOL");
lcd.print(" ");lcd.print(79+vol);lcd.print(" ");lcd.setCursor(5,0);lcd.print(" ");vol_d=map(abs(vol), 79,0, 0,24);
if(w1==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);}w1=0;}}
/////////////////// INPUT ////////////////////////////////////////////////////////////////////////////////////////
if(in==1&&flag==1){flag=0;digitalWrite(12,HIGH);digitalWrite(A0,HIGH);delay(500);digitalWrite(12,LOW);}else{digitalWrite(A0,LOW);} //вкл-выкл блютус
if(menu==1){
//if(ir.value==IR_3){in++;gr1=1;gr2=0;cl1();w1=1;in_func();audio_tda();audio_pt();}// кнопка >
//if(ir.value==0xFFFFFFFF and gr1==1){in++;gr2=0;cl1();w1=1;in_func();audio_tda();audio_pt();}// кнопка >>>>>>
//if(ir.value==IR_4){in--;gr1=0;gr2=1;cl1();w1=1;in_func();audio_tda();audio_pt();}// кнопка <
//if(ir.value==0xFFFFFFFF and gr2==1){in--;gr1=0;cl1();w1=1;in_func();audio_tda();audio_pt();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
in=in+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;in_func();audio_tda();audio_pt();}
lcd.setCursor(0,0);lcd.print(" INPUT ");
lcd.setCursor(0,1);
switch(in){case 0: lcd.print(" AUX "); break;
case 1: lcd.print(" BT "); break;
case 2: lcd.print(" --- "); break;
case 3: lcd.print(" ----- "); break;
case 4: lcd.print(" 5.1 "); break;}} // пропишите свои названия входов
///////////////////////////////////// Att //////////////////////////////////////////
if(menu1==1){
if(ir.value==IR_4){att1++;gr1=1;gr2=0;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){att1++;gr2=0;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка >>>>>>
if(ir.value==IR_3){att1--;gr1=0;gr2=1;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){att1--;gr1=0;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
att1=att1-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;}audio_tda();audio_pt();}
lcd.setCursor(0,0);lcd.print("ATTENUAT");
lcd.setCursor(0,1);lcd.print("FL ");lcd.setCursor(3,1);
if(-att1>-1){lcd.print(" 0 ");}
else{lcd.print(-att1);if(-att1>-10){lcd.print(" ");}}
lcd.setCursor(6,1);lcd.print("dB");
}
if(menu1==2){
if(ir.value==IR_4){att2++;gr1=1;gr2=0;cl1();w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;};audio_tda();audio_pt();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){att2++;gr2=0;cl1();w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;};audio_tda();audio_pt();}// кнопка >>>>>>
if(ir.value==IR_3){att2--;gr1=0;gr2=1;cl1();w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;};audio_tda();audio_pt();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){att2--;gr1=0;cl1();w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;};audio_tda();audio_pt();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
att2=att2-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;}audio_tda();audio_pt();}
lcd.setCursor(0,0);lcd.print("ATTENUAT");
lcd.setCursor(0,1);lcd.print("FR ");lcd.setCursor(3,1);
if(-att2>-1){lcd.print(" 0 ");}
else{lcd.print(-att2);if(-att2>-10){lcd.print(" ");}}
lcd.setCursor(6,1);lcd.print("dB");
}
if(menu1==3){
if(ir.value==IR_4){att3++;gr1=1;gr2=0;cl1();w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;};audio_tda();audio_pt();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){att3++;gr2=0;cl1();w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;};audio_tda();audio_pt();}// кнопка >>>>>>
if(ir.value==IR_3){att3--;gr1=0;gr2=1;cl1();w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;};audio_tda();audio_pt();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){att3--;gr1=0;cl1();w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;};audio_tda();audio_pt();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
att3=att3-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;}audio_tda();audio_pt();}
lcd.setCursor(0,0);lcd.print("ATTENUAT");
lcd.setCursor(0,1);lcd.print("CT ");lcd.setCursor(3,1);
if(-att3>-1){lcd.print(" 0 ");}
else{lcd.print(-att3);if(-att3>-10){lcd.print(" ");}}
lcd.setCursor(6,1);lcd.print("dB");
}
if(menu1==4){
if(ir.value==IR_4){att4++;gr1=1;gr2=0;cl1();w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;};audio_tda();audio_pt();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){att4++;gr2=0;cl1();w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;};audio_tda();audio_pt();}// кнопка >>>>>>
if(ir.value==IR_3){att4--;gr1=0;gr2=1;cl1();w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;};audio_tda();audio_pt();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){att4--;gr1=0;cl1();w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;};audio_tda();audio_pt();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
att4=att4-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;}audio_tda();audio_pt();}
lcd.setCursor(0,0);lcd.print("ATTENUAT");
lcd.setCursor(0,1);lcd.print("SW ");lcd.setCursor(3,1);
if(-att4>-1){lcd.print(" 0 ");}
else{lcd.print(-att4);if(-att4>-10){lcd.print(" ");}}
lcd.setCursor(6,1);lcd.print("dB");
}
if(menu1==5){
if(ir.value==IR_4){att5++;gr1=1;gr2=0;cl1();w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;};audio_tda();audio_pt();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){att5++;gr2=0;cl1();w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;};audio_tda();audio_pt();}// кнопка >>>>>>
if(ir.value==IR_3){att5--;gr1=0;gr2=1;cl1();w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;};audio_tda();audio_pt();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){att5--;gr1=0;cl1();w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;};audio_tda();audio_pt();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
att5=att5-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;}audio_tda();audio_pt();}
lcd.setCursor(0,0);lcd.print("ATTENUAT");
lcd.setCursor(0,1);lcd.print("SL ");lcd.setCursor(3,1);
if(-att5>-1){lcd.print(" 0 ");}
else{lcd.print(-att5);if(-att5>-10){lcd.print(" ");}}
lcd.setCursor(6,1);lcd.print("dB");
}
if(menu1==6){
if(ir.value==IR_4){att6++;gr1=1;gr2=0;cl1();w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;};audio_tda();audio_pt();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){att6++;gr2=0;cl1();w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;};audio_tda();audio_pt();}// кнопка >>>>>>
if(ir.value==IR_3){att6--;gr1=0;gr2=1;cl1();w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;};audio_tda();audio_pt();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){att6--;gr1=0;cl1();w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;};audio_tda();audio_pt();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
att6=att6-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;}audio_tda();audio_pt();}
lcd.setCursor(0,0);lcd.print("ATTENUAT");
lcd.setCursor(0,1);lcd.print("SR ");lcd.setCursor(3,1);
if(-att6>-1){lcd.print(" 0 ");}
else{lcd.print(-att6);if(-att6>-10){lcd.print(" ");}}
lcd.setCursor(6,1);lcd.print("dB");
}
///////////////// EEPROM ///////////////////////////////////////////////////////////////////////////////////////
if(millis()-times>10000 && w==1){
EEPROM.update(0,vol+79);
EEPROM.update(1,in);
EEPROM.update(11,att1);EEPROM.update(12,att2);EEPROM.update(13,att3);EEPROM.update(14,att4);EEPROM.update(15,att5);EEPROM.update(16,att6);
menu=0;cl();w=0,w1=1;menu1=0;}
}//loop
void in_func(){if(in<0){in=4;}if(in>4){in=0;}}
void vol_func(){if(vol>0){vol=0;}if(vol<-79){vol=-79;}}
void cl(){ir.value=0;delay(300);lcd.clear();}
void cl1(){ir.value=0;delay(100);}
void audio_pt(){
pt.setInput(in); // входы 1...4 (0...3) или 6 моно (4)
pt.setMute(0,0,0,0,0,0,0);
pt.setFeature(0,1); // дополнительные функции 0...3
// 0 - Enhanced Surround Function Active
// 1 - Enhanced Surround Function Disabled
// 0 - Mixed Channel (0dB) Setup
// 1 - Mixed Channel (+6dB) Setup
}
void audio_tda(){
tda.setAtt(1,vol-att1);// 0 макс громк, -79(79) мин громк
tda.setAtt(2,vol-att2);
tda.setAtt(3,vol-att3);
tda.setAtt(4,vol-att4);
tda.setAtt(5,vol-att5);
tda.setAtt(6,vol-att6);
}
void to_Timer(){newPosition = myEnc.read()/4;}
Поменяйте строку:
if(ir.value==IR_8){in++;menu1=0;cl();times=millis();w=1;w1=1;in_func();audio_tda();audio_pt();}} // input - переключение входов с пульта
на
if(ir.value==IR_8){in++;flag=1;menu1=0;cl();times=millis();w=1;w1=1;in_func();audio_tda();audio_pt();}} // input - переключение входов с пульта
Поменяйте строку:
if(ir.value==IR_8){in++;menu1=0;cl();times=millis();w=1;w1=1;in_func();audio_tda();audio_pt();}} // input - переключение входов с пультана
if(ir.value==IR_8){in++;flag=1;menu1=0;cl();times=millis();w=1;w1=1;in_func();audio_tda();audio_pt();}} // input - переключение входов с пульта
Увы, питание блютус не включается
Замените:
if(in==1&&flag==1){flag=0;digitalWrite(12,HIGH);digitalWrite(A0,HIGH);delay(500);digitalWrite(12,LOW);}else{digitalWrite(A0,LOW);} //вкл-выкл блютус
на:
if(in==1&&flag==1){flag=0;digitalWrite(12,HIGH);digitalWrite(A0,HIGH);delay(500);digitalWrite(12,LOW);}// включили блютуc
if(in!=1){digitalWrite(A0,LOW);} // выключили блютус если вход не IN1
С пульта работает!
С энкодера работает только один раз, первый выбор. Потом все входы работают, а на блютус питание не идет
if (newPosition != oldPosition) {
oldPosition = newPosition;
in=in+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;in_func();audio_tda();audio_pt();}
Заменить на:
if (newPosition != oldPosition) {
oldPosition = newPosition;
in=in+newPosition;myEnc.write(0);newPosition=0;times=millis();flag=1;w=1;w1=1;in_func();audio_tda();audio_pt();}
Страницы Назад 1 … 4 5 6 7 8 … 14 Далее
Чтобы отправить ответ, вы должны войти или зарегистрироваться
forum.rcl-radio.ru → Переделки → PT2323+TDA7448
Форум работает на PunBB, при поддержке Informer Technologies, Inc
|