Re: PT2323+TDA7448
Кнопка
или так, чтобы не править скетч
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
forum.rcl-radio.ru → Переделки → PT2323+TDA7448
Кнопка
или так, чтобы не править скетч
я поправил)) вход 13 на высокий,так стало лучше,энкодер тоже подтянул к плюсу,но наверное все таки он неисправен)) прибавлять прибавляет а убавлять иногда что то проскакивает и сново молчит....сейчас сгоняю в гараж микросхем много откуда нибудь другой выпаю))))у меня другой вопрос))) а вот допустим выбираю я вход например (in 5) а как сделать так что бы он включился то?
Поправьте скетч, я допустил ошибку:
pt.setInput(0); // входы 1...4 (0...3) или 6 моно (4)
заменить на:
pt.setInput(in); // входы 1...4 (0...3) или 6 моно (4)
Даоткуда ты такой взялся то))))))))))))))))))))поправил и все фурыкает)))))))))))))))
как здесь видео то скидывать))
Я рад что у Вас все получилось. Видео можно выкладывать только через Ютуб.
да если бы не ты )))я бы после долгих мучений выкинул бы этот ящик)))))))))
у меня просьба) а нельзя в скетче поправить управление басом? я так понял звук сделан как мастер тоесть на все каналы?
Для управления тембра нужна другая микросхема, если речь идет о громкости отдельных каналов, то это можно сделать.
да да да))) управление громкостью самого сабвуфера отдельно от колонок)))а то долбит соседи по потолку начинают стучать))))))))))))))
#define IR_8 0x2FDB24D // Кнопка MENU
#define IR_3 0x2FD906F // Кнопка >
#define IR_4 0x2FDF20D // Кнопка <
#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 i, w, w1, menu, vol, vol_d, z, z0, z1, gr1, gr2, in;
void setup() {
Serial.begin(9600); Wire.begin(); irrecv.enableIRIn(); // запускаем модуль IR
lcd.begin(16, 2);
pinMode(13, INPUT); // КНОПКА ЭНКОДЕРA
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);
audio_tda(); audio_pt();
}
void loop() {
if ( irrecv.decode( &ir )) {
Serial.print("0x"); // IR приемник
Serial.println( ir.value, HEX);
times = millis();
w = 1;
w1 = 1;
irrecv.resume();
}
if (digitalRead(13) == HIGH) {
menu++; // меню
cl();
myEnc.write(0);
times = millis();
w = 1;
w1 = 1;
if (menu > 1) {
menu = 0;
}
}
if (ir.value == IR_8) {
menu++; // меню
gr1 = 0;
gr2 = 0;
cl();
times = millis();
w = 1;
w1 = 1;
if (menu > 1) {
menu = 0;
}
}
//////////////////// 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("VOLUME ");
lcd.print(" "); lcd.print(vol); lcd.print(" "); lcd.setCursor(13, 0); lcd.print("dB"); vol_d = vol + 48;
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 ");
switch (in) { // пропишите свои названия входов
case 0: lcd.print("sr_sl "); break;
case 1: lcd.print("mp3 "); break;
case 2: lcd.print("blutuch "); break;
case 3: lcd.print("radio "); break;
case 4: lcd.print("stereo "); break;
}
}
///////////////// EEPROM ///////////////////////////////////////////////////////////////////////////////////////
if (millis() - times > 10000 && w == 1) {
EEPROM.update(0, vol + 79);
EEPROM.update(1, in);
menu = 0; cl(); w = 0, w1 = 1;
}
}//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); // 0 макс громк, -79(79) мин громк
tda.setAtt(2, vol);
tda.setAtt(3, vol);
tda.setAtt(4, vol);
tda.setAtt(5, vol);
tda.setAtt(6, vol);
}
void to_Timer() {
newPosition = myEnc.read() / 4;
}
Удержание кнопки энкодера активирует режим аттенюатора, активны все каналы RR RL RF LF CT SUB , глубина регулировки от 0 до -20 дБ. Каналы могут быть перепутаны, так что сами поправите название выходов. все настройки сохраняются в памяти. для выхода из режима подождать 10 сек.
#define IR_8 0x2FDB24D // Кнопка MENU
#define IR_3 0x2FD906F // Кнопка >
#define IR_4 0x2FDF20D // Кнопка <
#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;
void setup(){
Serial.begin(9600);Wire.begin();irrecv.enableIRIn(); // запускаем модуль IR
lcd.begin(16, 2);
pinMode(13,INPUT);// КНОПКА ЭНКОДЕРA
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();
}
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(digitalRead(13)==LOW&&menu!=100){menu++;x++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu>1){menu=0;}}// меню
if(x>5){menu1=1;menu=100;lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
if(digitalRead(13)==HIGH){x=0;}
if(digitalRead(13)==LOW&&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;}}// меню
//////////////////// 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("VOLUME ");
lcd.print(" ");lcd.print(vol);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");vol_d=vol+48;
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 ");
switch(in){ // пропишите свои названия входов
case 0: lcd.print("sr_sl "); break;
case 1: lcd.print("mp3 "); break;
case 2: lcd.print("blutuch"); break;
case 3: lcd.print("radio "); break;
case 4: lcd.print("stereo "); break;}}
///////////////////////////////////// Att //////////////////////////////////////////
if(menu1==1){
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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("RF ");lcd.print(-att1);lcd.print(" dB ");
}
if(menu1==2){
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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("LF ");lcd.print(-att2);lcd.print(" dB ");
}
if(menu1==3){
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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("RR ");lcd.print(-att3);lcd.print(" dB ");
}
if(menu1==4){
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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("LR ");lcd.print(-att4);lcd.print(" dB ");
}
if(menu1==5){
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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("CT ");lcd.print(-att5);lcd.print(" dB ");
}
if(menu1==6){
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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SUB ");lcd.print(-att6);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;}
поздняк метаться(((((( я по моему дисплей спалил)))))))))))))))))))заказал новый но он придет только через 2 недели....а на этом символы при прокручивании энкодера куда то исчезают((((((а тебе огромное спасибо,и сделай в форуме заголовок пожертвования,такой труд должен вознагрождаться)
Такой экран сложно спалить, возможно где-то шину данных замкнуло или провод отвалился.
да вот в том то и прикол....заливаю скетч все показывает,только прокручиваю энкодер и все исчезает либо превращается в кракозябру, пробывал другую ардуинку тоже самое, подумал энкодер....выпаял еще парочку с старых схем...такая же бадяга...просмотрел все контакты что бы нигде не мкнуло....прочистил все от флюса....ничего не помогает....пришел к выводу что сам контроллер дисплея навернулся...если он там конечно есть.....
В какой момент все это началось, что делали со схемой?
блин))))))))))))) да ты просто гений))))в 20 раз стал смотреть что не так) и заметил что на одной ардуинке что на второй...между ножками процессора остался флюс...заметен только с лупой....взял одеколон и стал тереть зубной щеткой))))) и все прокатило)))))ты второй раз его оживил))))))))
Доброго времени суток всем отметившимся в данной теме! Большое спасибо, с вашей помощью колонки обрели новую жизнь.
Хотелось бы довести до ума некоторые моменты:
1. Не могли бы вы подсказать, как добавить функцию "mute" (с пульта)?
2. Громкость в непонятных простой домохозяйке децибелах, как сделать отображение в процентах?)
3. При раздельной поканальной регулировке громкости энкодер работает наоборот - при поворачивании по часовой стрелке громкость убавляется.
Заранее спасибо!
Опубликуйте Ваш скетч.
Громкость в процентах лучше не делать, будет несовпадение процентов и дБ, при повороте энкодера в каких то местах значение процента меняться не будет. Лучше сделать просто числовой, например 0 мин громкость, 79 макс
А мой скетч целиком повторяет Ваш) Только поправил названия каналов на раздельной поканальной регулировке громкости и добавил свой пульт.
#define IR_8 0xFF21DE // Кнопка MENU (input sel)
#define IR_3 0xFF09F6 // Кнопка > (vol+)
#define IR_4 0xFF29D6 // Кнопка < (vol-)
#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;
void setup(){
Serial.begin(9600);Wire.begin();irrecv.enableIRIn(); // запускаем модуль IR
lcd.begin(16, 2);
pinMode(13,INPUT);// КНОПКА ЭНКОДЕРA
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();
}
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(digitalRead(13)==HIGH&&menu!=100){menu++;x++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu>1){menu=0;}}// меню
if(x>5){menu1=1;menu=100;lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
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;}}// меню
//////////////////// 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("VOLUME ");
lcd.print(" ");lcd.print(vol);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");vol_d=vol+48;
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 ");
switch(in){ // пропишите свои названия входов
case 0: lcd.print("AUX "); break;
case 1: lcd.print("mp3 "); break;
case 2: lcd.print("Bluetooth"); break;
case 3: lcd.print("radio "); break;
case 4: lcd.print("stereo "); break;}}
///////////////////////////////////// Att //////////////////////////////////////////
if(menu1==1){
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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("FL ");lcd.print(-att1);lcd.print(" dB ");
}
if(menu1==2){
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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("FR ");lcd.print(-att2);lcd.print(" dB ");
}
if(menu1==3){
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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("CT ");lcd.print(-att3);lcd.print(" dB ");
}
if(menu1==4){
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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SUB ");lcd.print(-att4);lcd.print(" dB ");
}
if(menu1==5){
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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SL ");lcd.print(-att5);lcd.print(" dB ");
}
if(menu1==6){
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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SR ");lcd.print(-att6);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;}
Функция mute на данной акустике реализована средствами самого усилителя - надо на определенный контакт подать 5 вольт. Т.е для реализации mute надо чтобы с одной и той же кнопки пульта у ардуинки с какого-нибудь контакта появлялось и пропадало напряжение
ps перепутал темы, изначально не там написал)
Я не могу сейчас сам все протестировать, поэтому тестировать придется Вам, проверьте режим MUTE
D11 - выход управления MUTE
#define IR_8 0xFF21DE // Кнопка MENU (input sel)
#define IR_3 0xFF09F6 // Кнопка > (vol+)
#define IR_4 0xFF29D6 // Кнопка < (vol-)
#define MUTE 0x0000000 // Кнопка MUTE
#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;
void setup(){
Serial.begin(9600);Wire.begin();irrecv.enableIRIn(); // запускаем модуль IR
lcd.begin(16, 2);
pinMode(13,INPUT);// КНОПКА ЭНКОДЕРA
pinMode(11,OUTPUT); // выход управления MUTE
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();
}
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){
if(digitalRead(13)==HIGH&&menu!=100){menu++;x++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu>1){menu=0;}}// меню
if(x>5){menu1=1;menu=100;lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
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;}}// меню
}
if(ir.value==MUTE&&mute==0){mute=1;gr1=0;gr2=0;cl1();menu=100;menu1=0;lcd.setCursor(6,0);lcd.print("MUTE");digitalWrite(11,HIGH);}
if(ir.value==MUTE&&mute==1){mute=0;gr1=0;gr2=0;cl1();menu=0;digitalWrite(11,LOW);}
//////////////////// 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("VOLUME ");
lcd.print(" ");lcd.print(vol);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");vol_d=vol+48;
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 ");
switch(in){ // пропишите свои названия входов
case 0: lcd.print("AUX "); break;
case 1: lcd.print("mp3 "); break;
case 2: lcd.print("Bluetooth"); break;
case 3: lcd.print("radio "); break;
case 4: lcd.print("stereo "); break;}}
///////////////////////////////////// Att //////////////////////////////////////////
if(menu1==1){
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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("FL ");lcd.print(-att1);lcd.print(" dB ");
}
if(menu1==2){
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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("FR ");lcd.print(-att2);lcd.print(" dB ");
}
if(menu1==3){
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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("CT ");lcd.print(-att3);lcd.print(" dB ");
}
if(menu1==4){
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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SUB ");lcd.print(-att4);lcd.print(" dB ");
}
if(menu1==5){
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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SL ");lcd.print(-att5);lcd.print(" dB ");
}
if(menu1==6){
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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SR ");lcd.print(-att6);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;}
Регулировка громкости 0...79 единиц? Или делать в процентах?
Да, все работает, на контакте 11 появляется и пропадает 5 вольт. Так же разобрался с индикацией громкости, будет просто в единицах.
Остается вопрос с регулировкой аттенюатора. Чтобы убавить громкость канала приходится крутить по часовой стрелке (как бы прибавляя)
И еще подскажите, где поправить код, чтобы при регулировке громкости черточки рисовались с нужного мне значения. По умолчанию первая черточка появляется при уровне громкости 32 (-47 dB)
#define IR_8 0xFF21DE // Кнопка MENU (input sel)
#define IR_3 0xFF09F6 // Кнопка > (vol+)
#define IR_4 0xFF29D6 // Кнопка < (vol-)
#define MUTE 0xFF41BE // Кнопка MUTE
#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;
void setup(){
Serial.begin(9600);Wire.begin();irrecv.enableIRIn(); // запускаем модуль IR
lcd.begin(16, 2);
pinMode(13,INPUT);// КНОПКА ЭНКОДЕРA
pinMode(11,OUTPUT); // выход управления MUTE
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();
}
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){
if(digitalRead(13)==HIGH&&menu!=100){menu++;x++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu>1){menu=0;}}// меню
if(x>5){menu1=1;menu=100;lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
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;}}// меню
}
if(ir.value==MUTE&&mute==0){mute=1;gr1=0;gr2=0;cl1();menu=100;menu1=0;lcd.setCursor(6,0);lcd.print("MUTE");digitalWrite(11,HIGH);}
if(ir.value==MUTE&&mute==1){mute=0;gr1=0;gr2=0;cl1();menu=0;digitalWrite(11,LOW);}
//////////////////// 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(" VOLUME ");
lcd.print(" ");lcd.print(79+vol);lcd.print(" ");lcd.setCursor(14,0);lcd.print(" ");vol_d=vol+48;
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 ");
switch(in){ // пропишите свои названия входов
case 0: lcd.print(" AUX "); break;
case 1: lcd.print(" mp3 "); break;
case 2: lcd.print("Bluetooth"); break;
case 3: lcd.print(" radio "); break;
case 4: lcd.print(" - 5.1 - "); break;}}
///////////////////////////////////// Att //////////////////////////////////////////
if(menu1==1){
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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("FL ");lcd.print(-att1);lcd.print(" dB ");
}
if(menu1==2){
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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("FR ");lcd.print(-att2);lcd.print(" dB ");
}
if(menu1==3){
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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("CT ");lcd.print(-att3);lcd.print(" dB ");
}
if(menu1==4){
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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SUB ");lcd.print(-att4);lcd.print(" dB ");
}
if(menu1==5){
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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SL ");lcd.print(-att5);lcd.print(" dB ");
}
if(menu1==6){
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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SR ");lcd.print(-att6);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;}
forum.rcl-radio.ru → Переделки → PT2323+TDA7448
Форум работает на PunBB, при поддержке Informer Technologies, Inc
|