Re: PT2323+TDA7448
Регулировка громкости 0...79 единиц? Или делать в процентах?
Если получится в процентах, будет шикарно))
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
forum.rcl-radio.ru → Переделки → PT2323+TDA7448
Регулировка громкости 0...79 единиц? Или делать в процентах?
Если получится в процентах, будет шикарно))
int x,i,w,w1,menu,menu1=0,vol,vol_d,z,z0,z1,gr1,gr2,in,att1,att2,att3,att4,att5,att6;
поменяйте
int x,i,w,w1=1,menu,menu1=0,vol,vol_d,z,z0,z1,gr1,gr2,in,att1,att2,att3,att4,att5,att6;
Ничего не изменилось)
vol_d=map(vol, 0,-79,0 ,48);
Тоже ничего
#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=map(abs(vol), 79,0, 0,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;}
Все работает и отлично работает! Если я Вам еще не сильно надоел, то появилось еще несколько вопросов:
1. Добавить аттенюатор на пульт. Вход по кнопке MODE, переключение каналов вверх и вниз кнопками CH+/-, регулировка кнопками vol+/-
2. Добавить режим ожидания (выключение и включение с пульта) - если это возможно.
Еще иногда при работе со всем этим железом при перезагрузках на дисплее появляются кракозябры - это как-то можно поправить, полагаю проблема где-то с какими-то помехами.
Итоговый на данный момент скетч:
#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
#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(0,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=map(abs(vol), 79,0, 0,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;}
Тестирование
1. Добавить аттенюатор на пульт. Вход по кнопке MODE, переключение каналов вверх и вниз кнопками CH+/-, регулировка кнопками vol+/-
#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
#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==MODE){menu1=1;menu=100;cl1();lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
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){mute=1;gr1=0;gr2=0;cl1();menu=100;menu1=0;lcd.setCursor(0,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=map(abs(vol), 79,0, 0,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(ir.value==IR_3){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_4){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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("FL ");lcd.print(-att1);lcd.print(" dB ");
}
if(menu1==2){
if(ir.value==IR_3){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_4){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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("FR ");lcd.print(-att2);lcd.print(" dB ");
}
if(menu1==3){
if(ir.value==IR_3){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_4){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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("CT ");lcd.print(-att3);lcd.print(" dB ");
}
if(menu1==4){
if(ir.value==IR_3){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_4){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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SUB ");lcd.print(-att4);lcd.print(" dB ");
}
if(menu1==5){
if(ir.value==IR_3){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_4){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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SL ");lcd.print(-att5);lcd.print(" dB ");
}
if(menu1==6){
if(ir.value==IR_3){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_4){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(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;}
Были перепутаны кнопки регулировки громкости на аттенюаторе. Это поправить у меня мозгов хватило))
В итоге все ОК!
Итоговый на данный момент скетч:
#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
#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==MODE){menu1=1;menu=100;cl1();lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
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){mute=1;gr1=0;gr2=0;cl1();menu=100;menu1=0;lcd.setCursor(0,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=map(abs(vol), 79,0, 0,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(ir.value==IR_3){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_4){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(" ATTENUATOR ");
lcd.setCursor(0,1);lcd.print(" FL ");lcd.print(-att1);lcd.print(" dB ");
}
if(menu1==2){
if(ir.value==IR_3){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_4){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(" ATTENUATOR ");
lcd.setCursor(0,1);lcd.print(" FR ");lcd.print(-att2);lcd.print(" dB ");
}
if(menu1==3){
if(ir.value==IR_3){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_4){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(" ATTENUATOR ");
lcd.setCursor(0,1);lcd.print(" CT ");lcd.print(-att3);lcd.print(" dB ");
}
if(menu1==4){
if(ir.value==IR_3){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_4){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(" ATTENUATOR ");
lcd.setCursor(0,1);lcd.print(" SUB ");lcd.print(-att4);lcd.print(" dB ");
}
if(menu1==5){
if(ir.value==IR_3){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_4){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(" ATTENUATOR ");
lcd.setCursor(0,1);lcd.print(" SL ");lcd.print(-att5);lcd.print(" dB ");
}
if(menu1==6){
if(ir.value==IR_3){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_4){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(" ATTENUATOR ");
lcd.setCursor(0,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;}
Были перепутаны кнопки регулировки громкости на аттенюаторе.
В этих строка стоит защита от перебора, Вы убавляете параметр, а защита стоит на прибавление
if(ir.value==IR_3){att1--;gr1=1;gr2=0;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка >
Надо было просто поменять местами коды пульта.
#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
#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==MODE){menu1=1;menu=100;cl1();lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
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){mute=1;gr1=0;gr2=0;cl1();menu=100;menu1=0;lcd.setCursor(0,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=map(abs(vol), 79,0, 0,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(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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("FL ");lcd.print(-att1);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("FR ");lcd.print(-att2);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("CT ");lcd.print(-att3);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SUB ");lcd.print(-att4);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SL ");lcd.print(-att5);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(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;}
Тестирование Standby
Что за кнопка RESET, для перезагрузки? Если у Вас подвиснет ардуино, то эта кнопка не будет работать.
#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
#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(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&&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;}}// меню
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==MODE){menu1=1;menu=100;cl1();lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
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;cl();menu=100;menu1=0;lcd.setCursor(0,0);lcd.print(" MUTE ");digitalWrite(11,HIGH);}
if(ir.value==MUTE&&mute==1 && power==0){mute=0;gr1=0;gr2=0;cl();menu=0;digitalWrite(11,LOW);}
//// POWER
if(power==1){digitalWrite(11,HIGH);}else{digitalWrite(11,LOW);}
if(ir.value==STBY&&power==0){power=1;gr1=0;gr2=0;cl();menu=100;menu1=0;analogWrite(6,LOW);lcd.setCursor(4,0);lcd.print("POWER OFF");delay(2000);cl();}
if(ir.value==STBY&&power==1){power=0;gr1=0;gr2=0;cl();menu=0;analogWrite(6,HIGH);cl();lcd.setCursor(4,0);lcd.print("POWER ON");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(" VOLUME ");
lcd.print(" ");lcd.print(79+vol);lcd.print(" ");lcd.setCursor(14,0);lcd.print(" ");vol_d=map(abs(vol), 79,0, 0,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(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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("FL ");lcd.print(-att1);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("FR ");lcd.print(-att2);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("CT ");lcd.print(-att3);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SUB ");lcd.print(-att4);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SL ");lcd.print(-att5);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(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;}
Что за кнопка RESET, для перезагрузки?
Не знаю, просто добавил на будущее
ВЫКЛючение работает, только подсветка дисплея не гаснет, потому что напрямую от ардуинки запитано. Можно на свободный 12й контакт повесить и вообще добавить регулировку подсветки с пульта - кнопки еще есть))
А вот ВКЛючение работает, но с белибердой на экране
Я поправил скетч
#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
#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(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&&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;}}// меню
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==MODE){menu1=1;menu=100;cl1();lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
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;cl();menu=100;menu1=0;lcd.setCursor(0,0);lcd.print(" MUTE ");digitalWrite(11,HIGH);}
if(ir.value==MUTE&&mute==1 && power==0){mute=0;gr1=0;gr2=0;cl();menu=0;digitalWrite(11,LOW);}
//// POWER
if(power==1){digitalWrite(11,HIGH);}else{digitalWrite(11,LOW);}
if(ir.value==STBY&&power==0){power=1;gr1=0;gr2=0;cl();menu=100;menu1=0;lcd.setCursor(4,0);lcd.print("POWER OFF");delay(2000);cl();}
if(ir.value==STBY&&power==1){power=0;gr1=0;gr2=0;cl();menu=0;cl();lcd.setCursor(4,0);lcd.print("POWER ON");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(" VOLUME ");
lcd.print(" ");lcd.print(79+vol);lcd.print(" ");lcd.setCursor(14,0);lcd.print(" ");vol_d=map(abs(vol), 79,0, 0,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(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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("FL ");lcd.print(-att1);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("FR ");lcd.print(-att2);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("CT ");lcd.print(-att3);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SUB ");lcd.print(-att4);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SL ");lcd.print(-att5);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(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;}
Для управления подсветкой нужно ставить транзисторный ключ или использовать питание подсветки от пина ардуино, но нужно ограничить ток подсветки до 20 мА, подберите резистор 200-500 Ом для подсветки, что бы ток подсветки был не более 20 мА (можно и до 40 мА, но это уже предел).
Можно сделать регулируемую яркость подсветки, но нужен ШИМ, ШИМ работает на пинах 9, 10, 11, но они у Вас заняты, можно перекинуть MUTE на A0.
ВКЛючение теперь все ОК.
Плюс питания подсветки дисплея сейчас подключен через 1кОм
С добавлением включения MUTE перестал работать, только сейчас заметил
MUTE можно без проблем перекинуть, а почему на A0, а не на D12? Я не придираюсь, интересно для общего развития))
Сейчас Mute должно работать, так же проверьте в режиме STBY mute тоже должно срабатывать.
#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
#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(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&&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;}}// меню
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==MODE){menu1=1;menu=100;cl1();lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
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;cl();menu=100;menu1=0;lcd.setCursor(0,0);lcd.print(" MUTE ");digitalWrite(11,HIGH);}
if(ir.value==MUTE&&mute==1 && power==0){mute=0;gr1=0;gr2=0;cl();menu=0;digitalWrite(11,LOW);}
//// POWER
if(ir.value==STBY&&power==0){power=1;gr1=0;gr2=0;cl();menu=100;menu1=0;lcd.setCursor(4,0);lcd.print("POWER OFF");digitalWrite(11,LOW);delay(2000);cl();}
if(ir.value==STBY&&power==1){power=0;gr1=0;gr2=0;cl();menu=0;cl();lcd.setCursor(4,0);lcd.print("POWER ON");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(" VOLUME ");
lcd.print(" ");lcd.print(79+vol);lcd.print(" ");lcd.setCursor(14,0);lcd.print(" ");vol_d=map(abs(vol), 79,0, 0,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(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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("FL ");lcd.print(-att1);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("FR ");lcd.print(-att2);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("CT ");lcd.print(-att3);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SUB ");lcd.print(-att4);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SL ");lcd.print(-att5);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(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 можно без проблем перекинуть, а почему на A0, а не на D12?
Можно и D12, я просто посчитал что этот пин занят.
Вы будете делать регулируемую подсветку или просто отключение в режиме STBY?
Все работает, только звук не выключался при выключении, но выключался при включении (HIGH и LOW были перепутаны). Сделал так, все заработало:
//// POWER
if(ir.value==STBY&&power==0){power=1;gr1=0;gr2=0;cl();menu=100;menu1=0;lcd.setCursor(4,0);lcd.print("POWER OFF");digitalWrite(11,HIGH);delay(2000);cl();}
if(ir.value==STBY&&power==1){power=0;gr1=0;gr2=0;cl();menu=0;cl();lcd.setCursor(4,0);lcd.print("POWER ON");digitalWrite(11,LOW);delay(2000);cl();}
Вы будете делать регулируемую подсветку или просто отключение в режиме STBY?
Отключение в режиме STBY точно нужно! А вот про регулировку не уверен - думал просто ее тусклее делать вечером, чтобы в глаза на светила, но она и так не сильно яркая)
Я поправил MUTE
Перенес выход MUTE на D12
D11 выход питания подсветки, это ШИМ подсветка, можете установить яркость от 0 до 255:
#define BRIG_H 250 // в обычном режиме
#define BRIG_L 0 // в режиме STBY
#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 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(16, 2);
pinMode(13,INPUT); // КНОПКА ЭНКОДЕРA
pinMode(12,OUTPUT); // выход управления MUTE
pinMode(11,OUTPUT); // PWM output
analogWrite(11,BRIG_H);
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,HIGH);
}
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;}}// меню
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==MODE){menu1=1;menu=100;cl1();lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
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;cl();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;cl();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(4,0);lcd.print("POWER OFF");digitalWrite(12,LOW);analogWrite(11,BRIG_L);delay(2000);cl();}
if(ir.value==STBY&&power==1){power=0;gr1=0;gr2=0;cl();menu=0;cl();lcd.setCursor(4,0);lcd.print("POWER ON");digitalWrite(12,HIGH);analogWrite(11,BRIG_H);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(" VOLUME ");
lcd.print(" ");lcd.print(79+vol);lcd.print(" ");lcd.setCursor(14,0);lcd.print(" ");vol_d=map(abs(vol), 79,0, 0,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(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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("FL ");lcd.print(-att1);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("FR ");lcd.print(-att2);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("CT ");lcd.print(-att3);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SUB ");lcd.print(-att4);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SL ");lcd.print(-att5);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(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;}
Подсветка не работает, не появляются +5В на 11-м контакте
И при включении на 12-м контакте сразу 5В (сразу включен MUTE), звук включается двойным нажатием на MUTE пульта)
Если изменить параметр на digitalWrite(11,LOW) и digitalWrite(11,HIGH), то все включается без подсветки и так же после двойного нажатия STBY все работает нормально
MUTE поправил
Подсветку экрана к D11 подключали?
#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 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(16, 2);
pinMode(13,INPUT); // КНОПКА ЭНКОДЕРA
pinMode(12,OUTPUT); // выход управления MUTE
pinMode(11,OUTPUT); // PWM output
analogWrite(11,BRIG_H);
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;}}// меню
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==MODE){menu1=1;menu=100;cl1();lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
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;cl();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;cl();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(4,0);lcd.print("POWER OFF");digitalWrite(12,LOW);analogWrite(11,BRIG_L);delay(2000);cl();}
if(ir.value==STBY&&power==1){power=0;gr1=0;gr2=0;cl();menu=0;cl();lcd.setCursor(4,0);lcd.print("POWER ON");digitalWrite(12,HIGH);analogWrite(11,BRIG_H);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(" VOLUME ");
lcd.print(" ");lcd.print(79+vol);lcd.print(" ");lcd.setCursor(14,0);lcd.print(" ");vol_d=map(abs(vol), 79,0, 0,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(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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("FL ");lcd.print(-att1);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("FR ");lcd.print(-att2);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("CT ");lcd.print(-att3);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SUB ");lcd.print(-att4);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SL ");lcd.print(-att5);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(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;}
Подсветку экрана к D11 подключали?
Да, если подать команду digitalWrite(11,HIGH), то включается
Немного разобрался, ШИМ работать на этом пине не будет, так как он занят таймером 2
Тогда просто включение и выключение подсветки
#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
#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(16, 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;}}// меню
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==MODE){menu1=1;menu=100;cl1();lcd.setCursor(1,0);lcd.print("ATTENUATOR");delay(2000);}
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;cl();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;cl();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(4,0);lcd.print("POWER OFF");digitalWrite(12,LOW);digitalWrite(11,LOW);delay(2000);cl();}
if(ir.value==STBY&&power==1){power=0;gr1=0;gr2=0;cl();menu=0;cl();lcd.setCursor(4,0);lcd.print("POWER ON");digitalWrite(12,HIGH);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(" VOLUME ");
lcd.print(" ");lcd.print(79+vol);lcd.print(" ");lcd.setCursor(14,0);lcd.print(" ");vol_d=map(abs(vol), 79,0, 0,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(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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("FL ");lcd.print(-att1);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("FR ");lcd.print(-att2);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("CT ");lcd.print(-att3);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SUB ");lcd.print(-att4);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(1,0);lcd.print("ATTENUATOR");
lcd.setCursor(1,1);lcd.print("SL ");lcd.print(-att5);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(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
|