Re: PT2323+TDA7448
Сегодня вечером все еще раз посмотрю и вам отпишусь
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
forum.rcl-radio.ru → Переделки → PT2323+TDA7448
Страницы Назад 1 … 6 7 8 9 10 … 14 Далее
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сегодня вечером все еще раз посмотрю и вам отпишусь
Залил скетч последний. Появляется надпись POWER OFF, потом POWER ON и так по кругу и все...
1.По поводу режима 2.1. Работают только фронты и саб. НО можно этот режим вообще пропустить и с кнопкой OUT тоже не заморачиваться. Главное, что бы был выход полноценного 5.1 и все...
2. что означает эта строка "........ // кнопка >>>>>>", о какой кнопке речь? И код какой кнопки там надо вставить?
3. Регулировки каналов левый правый тоже не нужна. Ее нет в оригинале и реализовано как вы и написали. Только там отображается уровень от -7 через ноль к +7.
4."...pinMode(13,INPUT_PULLUP); // STANDBY" у меня эта кнопка на 11 ноге
Появляется надпись POWER OFF, потом POWER ON и так по кругу и все...
У меня собрана схема, все работает без проблем. Замыкаю D13 на GND и функция power работает.
что означает эта строка "........ // кнопка >>>>>>", о какой кнопке речь? И код какой кнопки там надо вставить?
Это удержание кнопки пульта, там уже стоит код кнопки общий для всех пультов. Коды кнопок пульта вынесены в начало скетча.
4."...pinMode(13,INPUT_PULLUP); // STANDBY" у меня эта кнопка на 11 ноге
На D11 кнопка энкодера, D13 - power. Но это не принципиально, можно изменить подключение как Вам удобно.
Еще раз перезалил. Тоже самое...постоянная перезагрузка.
Энкодер у меня без кнопки.
Коды кнопок у меня свои.
Еще раз перезалил. Тоже самое...постоянная перезагрузка.
Энкодер у меня без кнопки.
Коды кнопок у меня свои.
Что у Вас подключено к D13?
ничего
Закоментил все строчки,где есть ссылка на 13 ногу и перезагрузка прекратилась
Вот новый код, укажите в нем новый пин для кнопки POWER
#define IR1 0x33B844BB // INPUT
#define IR2 0x33B8946B // MUTE
#define IR3 0x33B858A7 // 3D
#define IR4 0x33B820DF // EQ
#define IR5 0x33B8A05F // UP VOL
#define IR6 0x33B8609F // DW VOL
#define IR7 0x33B800FF // STANDBY
#define IR8 0x33B814EB // TREBLE
#define IR9 0x33B840BF // BASS
#define IR10 0x33B824DB // FRONT
#define IR11 0x33B8A45B // REAR
#define IR12 0x33B8649B // CENTER
#define IR13 0x33B8E41B // SUB
#define IR14 0x33B854AB // OUTPUT
#define ENCODER 11 // BUTTON ENCODER
#define MUTE 12 // BUTTON MUTE
#define IN 10 // BUTTON INPUT
#define POWER 13 // BUTTON POWER
#define STAND_OUT 3 // OUTPUT STANDBY
#include <Wire.h>
#include <PT2322.h>
#include <PT2323.h>
#include <LiquidCrystal_I2C.h> // http://forum.rcl-radio.ru/misc.php?action=pan_download&item=45&download=1
#include <EEPROM.h>
#include <Encoder.h>
#include <MsTimer2.h>
#include <boarddefs.h>
#include <IRremote.h>
PT2322 pt; PT2323 pt0;
Encoder myEnc(8, 7);//CLK, DT подключение энкодера
IRrecv irrecv(9); // указываем вывод модуля IR приемника
decode_results ir;
LiquidCrystal_I2C lcd(0x27,16,2); // Устанавливаем дисплей
byte a1[8]={0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
byte a2[8]={0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
byte a3[8]={0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000};
unsigned long newPosition,time,oldPosition = -999;
int menu,menu2,w,vol,vol_d,z,z0,z1,in,bass,bass_d,mid,mid_d,treb,treb_d,attfl,attfl_d,attcn,attcn_d,attsub,attsub_d,ddd,tembro,x,attfr,attfr_d,atttl,atttl_d,atttr,atttr_d,mute;
bool g1,g2;
bool w1=1,power;
void setup() {
Wire.begin();Serial.begin(9600);irrecv.enableIRIn(); // запускаем модуль IR
lcd.init();lcd.backlight();
lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
pinMode(ENCODER,INPUT_PULLUP); // menu кнопка энкодера
pinMode(MUTE,INPUT_PULLUP); // MUTE
pinMode(IN,INPUT_PULLUP); // IN
pinMode(POWER,INPUT_PULLUP); // STANDBY
pinMode(STAND_OUT,OUTPUT); // OUTPUT STANDBY AND MUTE
MsTimer2::set(2, to_Timer);MsTimer2::start();
vol = EEPROM.read(0)-79;in = EEPROM.read(1);bass = EEPROM.read(2)-7;mid = EEPROM.read(3)-7;treb = EEPROM.read(4)-7;
attfl = EEPROM.read(5)-14;attcn = EEPROM.read(7)-14;attsub = EEPROM.read(8)-14;ddd = EEPROM.read(9);tembro = EEPROM.read(10);
attfr = EEPROM.read(11)-14;atttl = EEPROM.read(12)-14;atttr = EEPROM.read(13)-14;
delay(500);
audio();audio_in();
}
void to_Timer(){newPosition = myEnc.read()/4;}
void loop(){
//// BUTTON //////////////////////////////
if(power==0){
if(mute==0){
if(digitalRead(ENCODER)==LOW){menu++;cl1();myEnc.write(0);time=millis();w=1;w1=1;if(menu>11){menu=0;}}// меню
if(digitalRead(IN)==LOW || ir.value==IR1){in++;if(in>4){in=0;}audio_in();cl1();lcd.setCursor(0,0);lcd.print(" INPUT SELECTOR ");
switch(in){
case 0: lcd.setCursor(0,1);lcd.print(" IN ");lcd.print(in+1);break;
case 1: lcd.setCursor(0,1);lcd.print(" IN ");lcd.print(in+1);break;
case 2: lcd.setCursor(0,1);lcd.print(" IN ");lcd.print(in+1);break;
case 3: lcd.setCursor(0,1);lcd.print(" IN ");lcd.print(in+1);break;
case 4: lcd.setCursor(0,1);lcd.print(" 6 CH ");break;
}delay(500);time=millis();w=1;w1=1;cl1();}// in
if(ir.value==IR3){ddd++;menu=11;g1=1;g2=0;cl1();time=millis();w=1;ddd_conf();audio();}
if(ir.value==IR4){tembro++;menu=4;g1=1;g2=0;cl1();time=millis();w=1;w1=1;tembr();audio();}
if(ir.value==IR8){menu=3;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // treble
if(ir.value==IR9){menu=1;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // bass
if(ir.value==IR12){menu=9;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // center
if(ir.value==IR13){menu=10;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // sub
} // mute
if((digitalRead(MUTE)==LOW || ir.value==IR2) && mute==0){mute=1;menu=100;g1=0;g2=0;cl1();time=millis();w=1;w1=1;audio();lcd.setCursor(6,0);lcd.print("MUTE");delay(500);}
if((digitalRead(MUTE)==LOW || ir.value==IR2) && mute==1){mute=0;menu=0; g1=0;g2=0;cl1();time=millis();w=1;w1=1;audio();}
}// power
if((digitalRead(POWER)==LOW || ir.value==IR7) && power==0){power=1;menu=100;g1=0;g2=0;cl1();time=millis();w=1;w1=1;mute=1;audio();lcd.setCursor(3,0);lcd.print("POWER OFF");delay(1000);lcd.noBacklight();}
if((digitalRead(POWER)==LOW || ir.value==IR7) && power==1){power=0;menu=0; g1=0;g2=0;cl1();time=millis();w=1;w1=1;mute=0;audio();lcd.backlight();lcd.setCursor(3,0);lcd.print("POWER ON ");delay(1000);cl1();}
if(mute==1||power==1){digitalWrite(STAND_OUT,HIGH);}else{digitalWrite(STAND_OUT,LOW);}// standby out pin D3
if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);time=millis();w=1;w1=1;irrecv.resume();}// IR приемник
//////////////////////////////////////// Громкость -79...0 дБ //////////////////////////////////////
if(menu==0){
if(ir.value==IR5){vol++;g1=1;g2=0;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка VOL+ 0xFFA857
if(ir.value==0xFFFFFFFF and g1==1){vol++;g2=0;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка >>>>>>
if(ir.value==IR6){vol--;g1=0;g2=1;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){vol--;g1=0;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;vol_conf();audio();}
lcd.setCursor(0,0);lcd.print("VOLUME ");
lcd.print(-79+vol);lcd.print(" ");lcd.setCursor(10,0);lcd.print("dB");vol_d=map(vol, 0,79, 0, 48);
switch(in){
case 0: lcd.print(" IN");lcd.print(in+1);break;
case 1: lcd.print(" IN");lcd.print(in+1);break;
case 2: lcd.print(" IN");lcd.print(in+1);break;
case 3: lcd.print(" IN");lcd.print(in+1);break;
case 4: lcd.print(" 6CH");break;
}
if(w1==1){w1=0;
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);}}}
//////////////////////////////////////// Тембр НЧ +-14 дБ //////////////////////////////////////
if(menu==1){
if(ir.value==IR5){bass++;g1=1;g2=0;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){bass++;g2=0;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка >>>>>>
if(ir.value==IR6){bass--;g1=0;g2=1;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){bass--;g1=0;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
bass=bass+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;bass_conf();audio();}
lcd.setCursor(0,0);lcd.print("BASS ");
lcd.print(" ");lcd.print(bass);lcd.print(" ");lcd.setCursor(13,0);bass_d=(bass+7)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=bass_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
//////////////////////////////////////// Тембр CЧ +-14 дБ //////////////////////////////////////
if(menu==2){
if(ir.value==IR5){mid++;g1=1;g2=0;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){mid++;g2=0;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка >>>>>>
if(ir.value==IR6){mid--;g1=0;g2=1;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){mid--;g1=0;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
mid=mid+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;mid_conf();audio();}
lcd.setCursor(0,0);lcd.print("MIDDLE ");
lcd.print(" ");lcd.print(mid);lcd.print(" ");lcd.setCursor(13,0);mid_d=(mid+7)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=mid_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
//////////////////////////////////////// Тембр BЧ +-14 дБ //////////////////////////////////////
if(menu==3){
if(ir.value==IR5){treb++;g1=1;g2=0;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){treb++;g2=0;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка >>>>>>
if(ir.value==IR6){treb--;g1=0;g2=1;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){treb--;g1=0;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
treb=treb+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;treb_conf();audio();}
lcd.setCursor(0,0);lcd.print("TREBLE ");
lcd.print(" ");lcd.print(treb);lcd.print(" ");lcd.setCursor(13,0);treb_d=(treb+7)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=treb_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
//////////////////////////////////// rock pop classic //////////////////////
if(menu==4){
if(ir.value==IR5){tembro++;g1=1;g2=0;cl();time=millis();w=1;w1=1;tembr();audio();}// кнопка VOL+
if(ir.value==IR6){tembro--;g1=0;g2=1;cl();time=millis();w=1;w1=1;tembr();audio();}// кнопка VOL-
if (newPosition != oldPosition) {
oldPosition = newPosition;
tembro=tembro+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;tembr();}
if(w1==1){w1=0;
lcd.setCursor(0,0);lcd.print(" Preset timbre ");
if(tembro==0){lcd.setCursor(0,1);lcd.print(" manual mode ");}
if(tembro==1){lcd.setCursor(0,1);lcd.print(" ROCK ");bass=4,mid=-2;treb=5;x=1;}
if(tembro==2){lcd.setCursor(0,1);lcd.print(" POP ");bass=-3,mid=3;treb=-2;x=1;}
if(tembro==3){lcd.setCursor(0,1);lcd.print(" CLASSIC ");bass=0,mid=0;treb=-2;x=1;}
if(tembro==4){lcd.setCursor(0,1);lcd.print(" default ");bass=0,mid=0;treb=0;x=1;}
if(x==1){audio();x=0;}
}}
/////////////////////// ATT FL ///////////////////
if(menu==5){
if(ir.value==IR5){attfl++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_lf();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){attfl++;g2=0;cl();time=millis();w=1;w1=1;att_lf();audio();}// кнопка >>>>>>
if(ir.value==IR6){attfl--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_lf();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){attfl--;g1=0;cl();time=millis();w=1;w1=1;att_lf();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
attfl=attfl+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_lf();audio();}
lcd.setCursor(0,0);lcd.print("ATT FL ");
lcd.print(" ");lcd.print(attfl);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attfl_d=(attfl+14)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=attfl_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
/////////////////////// ATT FR ///////////////////
if(menu==6){
if(ir.value==IR5){attfr++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_fr();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){attfr++;g2=0;cl();time=millis();w=1;w1=1;att_fr();audio();}// кнопка >>>>>>
if(ir.value==IR6){attfr--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_fr();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){attfr--;g1=0;cl();time=millis();w=1;w1=1;att_fr();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
attfr=attfr+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_fr();audio();}
lcd.setCursor(0,0);lcd.print("ATT FR ");
lcd.print(" ");lcd.print(attfr);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attfr_d=(attfr+14)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=attfr_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
/////////////////////// ATT TL ///////////////////
if(menu==7){
if(ir.value==IR5){atttl++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_tl();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){atttl++;g2=0;cl();time=millis();w=1;w1=1;att_tl();audio();}// кнопка >>>>>>
if(ir.value==IR6){atttl--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_tl();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){atttl--;g1=0;cl();time=millis();w=1;w1=1;att_tl();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
atttl=atttl+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_tl();audio();}
lcd.setCursor(0,0);lcd.print("ATT TL ");
lcd.print(" ");lcd.print(atttl);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");atttl_d=(atttl+14)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=atttl_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
/////////////////////// ATT TR ///////////////////
if(menu==8){
if(ir.value==IR5){atttr++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_tr();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){atttr++;g2=0;cl();time=millis();w=1;w1=1;att_tr();audio();}// кнопка >>>>>>
if(ir.value==IR6){atttr--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_tr();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){atttr--;g1=0;cl();time=millis();w=1;w1=1;att_tr();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
atttr=atttr+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_tr();audio();}
lcd.setCursor(0,0);lcd.print("ATT TR ");
lcd.print(" ");lcd.print(atttr);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");atttr_d=(atttr+14)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=atttr_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
/////////////////////// ATT CN ///////////////////
if(menu==9){
if(ir.value==IR5){attcn++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){attcn++;g2=0;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка >>>>>>
if(ir.value==IR6){attcn--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){attcn--;g1=0;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
attcn=attcn+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_cn();audio();}
lcd.setCursor(0,0);lcd.print("ATT CN ");
lcd.print(" ");lcd.print(attcn);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attcn_d=(attcn+14)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=attcn_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
/////////////////////// ATT SUB ///////////////////
if(menu==10){
if(ir.value==IR5){attsub++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){attsub++;g2=0;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка >>>>>>
if(ir.value==IR6){attsub--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){attsub--;g1=0;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
attsub=attsub+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_sub();audio();}
lcd.setCursor(0,0);lcd.print("ATT SUB ");
lcd.print(" ");lcd.print(attsub);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attsub_d=(attsub+14)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=attsub_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
//////////////////////////// 3d ///////////////////////////////////////////////
if(menu==11){
if (newPosition != oldPosition) {
oldPosition = newPosition;
ddd=ddd+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;ddd_conf();audio();}
lcd.setCursor(0,0);lcd.print(" Surround ");
lcd.setCursor(0,1);if(ddd==0){lcd.print(" 3D ON ");}else{lcd.print(" 3D OFF ");}}
//////////////////////////// EEPROM /////////////////////////////////////////////////////////////
if(millis()-time>5000&& w==1&&mute==0){
EEPROM.update(0,vol+79);EEPROM.update(1,in);EEPROM.update(2,bass+7);EEPROM.update(3,mid+7);EEPROM.update(4,treb+7);
EEPROM.update(5,attfl+14);EEPROM.update(7,attcn+14);EEPROM.update(8,attsub+14);EEPROM.update(9,ddd);EEPROM.update(10,tembro);
EEPROM.update(11,attfr+14);EEPROM.update(12,atttl+14);EEPROM.update(13,atttr+14);
menu=0;w=0;w1=1;cl();}
}//loop
void ddd_conf(){if(ddd<0){ddd=1;}if(ddd>1){ddd=0;}}
void att_sub(){if(attsub<-14){attsub=-14;}if(attsub>0){attsub=0;}}
void att_cn(){if(attcn<-14){attcn=-14;}if(attcn>0){attcn=0;}}
void att_tr(){if(atttr<-14){atttr=-14;}if(atttr>0){atttr=0;}}
void att_tl(){if(atttl<-14){atttl=-14;}if(atttl>0){atttl=0;}}
void att_fr(){if(attfr<-14){attfr=-14;}if(attfr>0){attfr=0;}}
void att_lf(){if(attfl<-14){attfl=-14;}if(attfl>0){attfl=0;}}
void tembr(){if(tembro>4){tembro=0;}if(tembro<0){tembro=4;}}
void treb_conf(){if(treb<-7){treb=-7;}if(treb>7){treb=7;}}
void mid_conf(){if(mid<-7){mid=-7;}if(mid>7){mid=7;}}
void bass_conf(){if(bass<-7){bass=-7;}if(bass>7){bass=7;}}
void vol_conf(){if(vol>79){vol=79;}if(vol<0){vol=0;}}
void cl(){ir.value=0;delay(100);}
void cl1(){ir.value=0;delay(300);lcd.clear();}
void audio_in(){
pt0.setInput(in);
pt0.setMute(0,0,0,0,0,0,0);
pt0.setFeature(1,1);
}
void audio(){
pt.setFront_lk_att(abs(attfl));// att front L
pt.setFront_rk_att(abs(attfr));// att front R
pt.setCenter_att(abs(attcn)); // att center
pt.setRear_lk_att(abs(atttl)); // att rear L
pt.setRear_rk_att(abs(atttr)); // att rear R
pt.setSub_att(abs(attsub)); // att sub
pt.setFunc(mute,ddd,0); // mute,3d,тембр on/off
pt.setBass(bass); // BASS -14...0...14 dB (int -7...0...7)
pt.setMiddle(mid); // MIDDLE -14...0...14 dB (int -7...0...7)
pt.setTreble(treb); // TREBLE -14...0...14 dB (int -7...0...7)
pt.setVol(abs(vol)); // -79...0
}
Проект фактически закончен, все кнопки пульта кроме OUTPUT добавлены, все функции работают, остается только протестировать.
Предлагаю кнопку пульта OUTPUT заменить на регулировку MIDDLE
#define IR1 0x33B844BB // INPUT
#define IR2 0x33B8946B // MUTE
#define IR3 0x33B858A7 // 3D
#define IR4 0x33B820DF // EQ
#define IR5 0x33B8A05F // UP VOL
#define IR6 0x33B8609F // DW VOL
#define IR7 0x33B800FF // STANDBY
#define IR8 0x33B814EB // TREBLE
#define IR9 0x33B840BF // BASS
#define IR10 0x33B824DB // FRONT
#define IR11 0x33B8A45B // REAR
#define IR12 0x33B8649B // CENTER
#define IR13 0x33B8E41B // SUB
#define IR14 0x33B854AB // OUTPUT
#define ENCODER 11 // BUTTON ENCODER
#define MUTE 12 // BUTTON MUTE
#define IN 10 // BUTTON INPUT
#define POWER 13 // BUTTON POWER
#define STAND_OUT 3 // OUTPUT STANDBY
#include <Wire.h>
#include <PT2322.h>
#include <PT2323.h>
#include <LiquidCrystal_I2C.h> // http://forum.rcl-radio.ru/misc.php?action=pan_download&item=45&download=1
#include <EEPROM.h>
#include <Encoder.h>
#include <MsTimer2.h>
#include <boarddefs.h>
#include <IRremote.h>
PT2322 pt; PT2323 pt0;
Encoder myEnc(8, 7);//CLK, DT подключение энкодера
IRrecv irrecv(9); // указываем вывод модуля IR приемника
decode_results ir;
LiquidCrystal_I2C lcd(0x27,16,2); // Устанавливаем дисплей
byte a1[8]={0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
byte a2[8]={0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
byte a3[8]={0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000};
unsigned long newPosition,time,oldPosition = -999;
int menu,menu2,w,vol,vol_d,z,z0,z1,in,bass,bass_d,mid,mid_d,treb,treb_d,attfl,attfl_d,attcn,attcn_d,attsub,attsub_d,ddd,tembro,x,attfr,attfr_d,atttl,atttl_d,atttr,atttr_d,mute;
bool g1,g2;
bool w1=1,power;
int att_front, att_rear;
void setup() {
Wire.begin();Serial.begin(9600);irrecv.enableIRIn(); // запускаем модуль IR
lcd.init();lcd.backlight();
lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
pinMode(ENCODER,INPUT_PULLUP); // menu кнопка энкодера
pinMode(MUTE,INPUT_PULLUP); // MUTE
pinMode(IN,INPUT_PULLUP); // IN
pinMode(POWER,INPUT_PULLUP); // STANDBY
pinMode(STAND_OUT,OUTPUT); // OUTPUT STANDBY AND MUTE
MsTimer2::set(2, to_Timer);MsTimer2::start();
vol = EEPROM.read(0)-79;in = EEPROM.read(1);bass = EEPROM.read(2)-7;mid = EEPROM.read(3)-7;treb = EEPROM.read(4)-7;
attfl = EEPROM.read(5)-14;attcn = EEPROM.read(7)-14;attsub = EEPROM.read(8)-14;ddd = EEPROM.read(9);tembro = EEPROM.read(10);
attfr = EEPROM.read(11)-14;atttl = EEPROM.read(12)-14;atttr = EEPROM.read(13)-14;
att_front = EEPROM.read(14)-14;att_rear = EEPROM.read(14)-14;
delay(500);
audio();audio_in();
}
void to_Timer(){newPosition = myEnc.read()/4;}
void loop(){
//// BUTTON //////////////////////////////
if(power==0){
if(mute==0){
if(digitalRead(ENCODER)==LOW){menu++;cl1();myEnc.write(0);time=millis();w=1;w1=1;if(menu>11){menu=0;}}// меню
if(digitalRead(IN)==LOW || ir.value==IR1){in++;if(in>4){in=0;}audio_in();cl1();lcd.setCursor(0,0);lcd.print(" INPUT SELECTOR ");
switch(in){
case 0: lcd.setCursor(0,1);lcd.print(" IN ");lcd.print(in+1);break;
case 1: lcd.setCursor(0,1);lcd.print(" IN ");lcd.print(in+1);break;
case 2: lcd.setCursor(0,1);lcd.print(" IN ");lcd.print(in+1);break;
case 3: lcd.setCursor(0,1);lcd.print(" IN ");lcd.print(in+1);break;
case 4: lcd.setCursor(0,1);lcd.print(" 6 CH ");break;
}delay(500);time=millis();w=1;w1=1;cl1();}// in
if(ir.value==IR3){ddd++;menu=9;g1=1;g2=0;cl1();time=millis();w=1;ddd_conf();audio();}
if(ir.value==IR4){tembro++;menu=4;g1=1;g2=0;cl1();time=millis();w=1;w1=1;tembr();audio();}
if(ir.value==IR8){menu=3;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // treble
if(ir.value==IR9){menu=1;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // bass
if(ir.value==IR12){menu=7;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // center
if(ir.value==IR13){menu=8;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // sub
if(ir.value==IR10){menu=5;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // front
if(ir.value==IR11){menu=6;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // rear
} // mute
if((digitalRead(MUTE)==LOW || ir.value==IR2) && mute==0){mute=1;menu=100;g1=0;g2=0;cl1();time=millis();w=1;w1=1;audio();lcd.setCursor(6,0);lcd.print("MUTE");delay(500);}
if((digitalRead(MUTE)==LOW || ir.value==IR2) && mute==1){mute=0;menu=0; g1=0;g2=0;cl1();time=millis();w=1;w1=1;audio();}
}// power
if((digitalRead(POWER)==LOW || ir.value==IR7) && power==0){power=1;menu=100;g1=0;g2=0;cl1();time=millis();w=1;w1=1;mute=1;audio();lcd.setCursor(3,0);lcd.print("POWER OFF");delay(1000);lcd.noBacklight();}
if((digitalRead(POWER)==LOW || ir.value==IR7) && power==1){power=0;menu=0; g1=0;g2=0;cl1();time=millis();w=1;w1=1;mute=0;audio();lcd.backlight();lcd.setCursor(3,0);lcd.print("POWER ON ");delay(1000);cl1();}
if(mute==1||power==1){digitalWrite(STAND_OUT,HIGH);}else{digitalWrite(STAND_OUT,LOW);}// standby out pin D3
if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);time=millis();w=1;w1=1;irrecv.resume();}// IR приемник
//////////////////////////////////////// Громкость -79...0 дБ //////////////////////////////////////
if(menu==0){
if(ir.value==IR5){vol++;g1=1;g2=0;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка VOL+ 0xFFA857
if(ir.value==0xFFFFFFFF and g1==1){vol++;g2=0;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка >>>>>>
if(ir.value==IR6){vol--;g1=0;g2=1;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){vol--;g1=0;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;vol_conf();audio();}
lcd.setCursor(0,0);lcd.print("VOLUME ");
lcd.print(-79+vol);lcd.print(" ");lcd.setCursor(10,0);lcd.print("dB");vol_d=map(vol, 0,79, 0, 48);
switch(in){
case 0: lcd.print(" IN");lcd.print(in+1);break;
case 1: lcd.print(" IN");lcd.print(in+1);break;
case 2: lcd.print(" IN");lcd.print(in+1);break;
case 3: lcd.print(" IN");lcd.print(in+1);break;
case 4: lcd.print(" 6CH");break;
}
if(w1==1){w1=0;
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);}}}
//////////////////////////////////////// Тембр НЧ +-14 дБ //////////////////////////////////////
if(menu==1){
if(ir.value==IR5){bass++;g1=1;g2=0;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){bass++;g2=0;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка >>>>>>
if(ir.value==IR6){bass--;g1=0;g2=1;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){bass--;g1=0;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
bass=bass+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;bass_conf();audio();}
lcd.setCursor(0,0);lcd.print("BASS ");
lcd.print(" ");lcd.print(bass);lcd.print(" ");lcd.setCursor(13,0);bass_d=(bass+7)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=bass_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
//////////////////////////////////////// Тембр CЧ +-14 дБ //////////////////////////////////////
if(menu==2){
if(ir.value==IR5){mid++;g1=1;g2=0;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){mid++;g2=0;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка >>>>>>
if(ir.value==IR6){mid--;g1=0;g2=1;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){mid--;g1=0;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
mid=mid+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;mid_conf();audio();}
lcd.setCursor(0,0);lcd.print("MIDDLE ");
lcd.print(" ");lcd.print(mid);lcd.print(" ");lcd.setCursor(13,0);mid_d=(mid+7)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=mid_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
//////////////////////////////////////// Тембр BЧ +-14 дБ //////////////////////////////////////
if(menu==3){
if(ir.value==IR5){treb++;g1=1;g2=0;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){treb++;g2=0;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка >>>>>>
if(ir.value==IR6){treb--;g1=0;g2=1;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){treb--;g1=0;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
treb=treb+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;treb_conf();audio();}
lcd.setCursor(0,0);lcd.print("TREBLE ");
lcd.print(" ");lcd.print(treb);lcd.print(" ");lcd.setCursor(13,0);treb_d=(treb+7)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=treb_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
//////////////////////////////////// rock pop classic //////////////////////
if(menu==4){
if(ir.value==IR5){tembro++;g1=1;g2=0;cl();time=millis();w=1;w1=1;tembr();audio();}// кнопка VOL+
if(ir.value==IR6){tembro--;g1=0;g2=1;cl();time=millis();w=1;w1=1;tembr();audio();}// кнопка VOL-
if (newPosition != oldPosition) {
oldPosition = newPosition;
tembro=tembro+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;tembr();}
if(w1==1){w1=0;
lcd.setCursor(0,0);lcd.print(" Preset timbre ");
if(tembro==0){lcd.setCursor(0,1);lcd.print(" manual mode ");}
if(tembro==1){lcd.setCursor(0,1);lcd.print(" ROCK ");bass=4,mid=-2;treb=5;x=1;}
if(tembro==2){lcd.setCursor(0,1);lcd.print(" POP ");bass=-3,mid=3;treb=-2;x=1;}
if(tembro==3){lcd.setCursor(0,1);lcd.print(" CLASSIC ");bass=0,mid=0;treb=-2;x=1;}
if(tembro==4){lcd.setCursor(0,1);lcd.print(" default ");bass=0,mid=0;treb=0;x=1;}
if(x==1){audio();x=0;}
}}
/////////////////////// ATT FRONT ///////////////////
if(menu==5){
if(ir.value==IR5){att_front++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_front_conf();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){att_front++;g2=0;cl();time=millis();w=1;w1=1;att_front_conf();audio();}// кнопка >>>>>>
if(ir.value==IR6){att_front--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_front_conf();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){att_front--;g1=0;cl();time=millis();w=1;w1=1;att_front_conf();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
att_front=att_front+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_front_conf();audio();}
lcd.setCursor(0,0);lcd.print("ATT FRONT ");
lcd.print(att_front);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attfl_d=(att_front+14)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=attfl_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
/////////////////////// ATT RAER ///////////////////
if(menu==6){
if(ir.value==IR5){att_rear++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_rear_conf();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){att_rear++;g2=0;cl();time=millis();w=1;w1=1;att_rear_conf();audio();}// кнопка >>>>>>
if(ir.value==IR6){att_rear--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_rear_conf();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){att_rear--;g1=0;cl();time=millis();w=1;w1=1;att_rear_conf();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
att_rear=att_rear+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_rear_conf();audio();}
lcd.setCursor(0,0);lcd.print("ATT REAR ");
lcd.print(att_rear);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");atttl_d=(att_rear+14)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=atttl_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
/////////////////////// ATT CN ///////////////////
if(menu==7){
if(ir.value==IR5){attcn++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){attcn++;g2=0;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка >>>>>>
if(ir.value==IR6){attcn--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){attcn--;g1=0;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
attcn=attcn+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_cn();audio();}
lcd.setCursor(0,0);lcd.print("ATT CN ");
lcd.print(" ");lcd.print(attcn);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attcn_d=(attcn+14)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=attcn_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
/////////////////////// ATT SUB ///////////////////
if(menu==8){
if(ir.value==IR5){attsub++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){attsub++;g2=0;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка >>>>>>
if(ir.value==IR6){attsub--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){attsub--;g1=0;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
attsub=attsub+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_sub();audio();}
lcd.setCursor(0,0);lcd.print("ATT SUB ");
lcd.print(" ");lcd.print(attsub);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attsub_d=(attsub+14)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=attsub_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
//////////////////////////// 3d ///////////////////////////////////////////////
if(menu==9){
if (newPosition != oldPosition) {
oldPosition = newPosition;
ddd=ddd+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;ddd_conf();audio();}
lcd.setCursor(0,0);lcd.print(" Surround ");
lcd.setCursor(0,1);if(ddd==0){lcd.print(" 3D ON ");}else{lcd.print(" 3D OFF ");}}
//////////////////////////// EEPROM /////////////////////////////////////////////////////////////
if(millis()-time>5000&& w==1&&mute==0){
EEPROM.update(0,vol+79);EEPROM.update(1,in);EEPROM.update(2,bass+7);EEPROM.update(3,mid+7);EEPROM.update(4,treb+7);
EEPROM.update(5,attfl+14);EEPROM.update(7,attcn+14);EEPROM.update(8,attsub+14);EEPROM.update(9,ddd);EEPROM.update(10,tembro);
EEPROM.update(11,attfr+14);EEPROM.update(12,atttl+14);EEPROM.update(13,atttr+14);
EEPROM.update(14,att_front+14);EEPROM.update(15,att_rear+14);
menu=0;w=0;w1=1;cl();}
}//loop
void ddd_conf(){if(ddd<0){ddd=1;}if(ddd>1){ddd=0;}}
void att_sub(){if(attsub<-14){attsub=-14;}if(attsub>0){attsub=0;}}
void att_cn(){if(attcn<-14){attcn=-14;}if(attcn>0){attcn=0;}}
void att_rear_conf(){if(att_rear<-14){att_rear=-14;}if(att_rear>0){att_rear=0;}}
void att_front_conf(){if(att_front<-14){att_front=-14;}if(att_front>0){att_front=0;}}
void tembr(){if(tembro>4){tembro=0;}if(tembro<0){tembro=4;}}
void treb_conf(){if(treb<-7){treb=-7;}if(treb>7){treb=7;}}
void mid_conf(){if(mid<-7){mid=-7;}if(mid>7){mid=7;}}
void bass_conf(){if(bass<-7){bass=-7;}if(bass>7){bass=7;}}
void vol_conf(){if(vol>79){vol=79;}if(vol<0){vol=0;}}
void cl(){ir.value=0;delay(100);}
void cl1(){ir.value=0;delay(300);lcd.clear();}
void audio_in(){
pt0.setInput(in);
pt0.setMute(0,0,0,0,0,0,0);
pt0.setFeature(1,1);
}
void audio(){
pt.setFront_lk_att(abs(att_front));// att front L
pt.setFront_rk_att(abs(att_front));// att front R
pt.setCenter_att(abs(attcn)); // att center
pt.setRear_lk_att(abs(att_rear)); // att rear L
pt.setRear_rk_att(abs(att_rear)); // att rear R
pt.setSub_att(abs(attsub)); // att sub
pt.setFunc(mute,ddd,0); // mute,3d,тембр on/off
pt.setBass(bass); // BASS -14...0...14 dB (int -7...0...7)
pt.setMiddle(mid); // MIDDLE -14...0...14 dB (int -7...0...7)
pt.setTreble(treb); // TREBLE -14...0...14 dB (int -7...0...7)
pt.setVol(abs(vol)); // -79...0
}
и так...
1. ПРАКТИЧЕСКИ ВСЕ РАБОТАЕТ!!!!!!!
2. Я немного изменил по кнопке POWER и все работает. (я закоментил строки управляющие кнопкой энкодера)
3.При нажатии на пульте кнопки FRONT или REAR режим не включается. Режим SUB включается.
4.Можно увеличить время при переключении режимов входа? ЧТо бы не переключалось на громкость после каждого нажатия. Сделать как при выборе режимов эквалайзера.
5. Вы знаеет регулировка средних не принципиальна. Хватает экавалйзера. Думаю не стоит заморачиваться.
У меня нет физически входа "case 3". Сложно сделать, чтобы он пропускался при выборе входов?
Я хочу подключить блютуз трансмитер для наушников,я думаю кнопка OUT на пульте будет как раз к месту
2. Я немного изменил по кнопке POWER и все работает. (я закоментил строки управляющие кнопкой энкодера)
Не нужно закоментрировать строки, просто укажите пин который Вы хотите использовать:
#define ENCODER 11 // BUTTON ENCODER
#define MUTE 12 // BUTTON MUTE
#define IN 10 // BUTTON INPUT
#define POWER 13 // BUTTON POWER
#define STAND_OUT 3 // OUTPUT STANDBY
3.При нажатии на пульте кнопки FRONT или REAR режим не включается. Режим SUB включается.
У меня все работает, при нажатии на эти кнопки происходит переход в соотведствующее меню и регулировка осуществляется кнопками громкости
4.Можно увеличить время при переключении режимов входа? ЧТо бы не переключалось на громкость после каждого нажатия.
Не совсем понял вопрос, увеличить время индикации при выборе входа? Совсем убрать возврат в меню громкости не возможно, у Вас в пульте нет перехода в меню громкости.
У меня нет физически входа "case 3". Сложно сделать, чтобы он пропускался при выборе входов?
Подумаю как это сделать
Убрал не задействованный вход, увеличил время индикации выбора входа
#define IR1 0x33B844BB // INPUT
#define IR2 0x33B8946B // MUTE
#define IR3 0x33B858A7 // 3D
#define IR4 0x33B820DF // EQ
#define IR5 0x33B8A05F // UP VOL
#define IR6 0x33B8609F // DW VOL
#define IR7 0x33B800FF // STANDBY
#define IR8 0x33B814EB // TREBLE
#define IR9 0x33B840BF // BASS
#define IR10 0x33B824DB // FRONT
#define IR11 0x33B8A45B // REAR
#define IR12 0x33B8649B // CENTER
#define IR13 0x33B8E41B // SUB
#define IR14 0x33B854AB // OUTPUT
#define ENCODER 11 // BUTTON ENCODER
#define MUTE 12 // BUTTON MUTE
#define IN 10 // BUTTON INPUT
#define POWER 13 // BUTTON POWER
#define STAND_OUT 3 // OUTPUT STANDBY
#include <Wire.h>
#include <PT2322.h>
#include <PT2323.h>
#include <LiquidCrystal_I2C.h> // http://forum.rcl-radio.ru/misc.php?action=pan_download&item=45&download=1
#include <EEPROM.h>
#include <Encoder.h>
#include <MsTimer2.h>
#include <boarddefs.h>
#include <IRremote.h>
PT2322 pt; PT2323 pt0;
Encoder myEnc(8, 7);//CLK, DT подключение энкодера
IRrecv irrecv(9); // указываем вывод модуля IR приемника
decode_results ir;
LiquidCrystal_I2C lcd(0x27,16,2); // Устанавливаем дисплей
byte a1[8]={0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
byte a2[8]={0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
byte a3[8]={0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000};
unsigned long newPosition,time,oldPosition = -999;
int menu,menu2,w,vol,vol_d,z,z0,z1,in,bass,bass_d,mid,mid_d,treb,treb_d,attfl,attfl_d,attcn,attcn_d,attsub,attsub_d,ddd,tembro,x,attfr,attfr_d,atttl,atttl_d,atttr,atttr_d,mute;
bool g1,g2;
bool w1=1,power;
int att_front, att_rear;
void setup() {
Wire.begin();Serial.begin(9600);irrecv.enableIRIn(); // запускаем модуль IR
lcd.init();lcd.backlight();
lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
pinMode(ENCODER,INPUT_PULLUP); // menu кнопка энкодера
pinMode(MUTE,INPUT_PULLUP); // MUTE
pinMode(IN,INPUT_PULLUP); // IN
pinMode(POWER,INPUT_PULLUP); // STANDBY
pinMode(STAND_OUT,OUTPUT); // OUTPUT STANDBY AND MUTE
MsTimer2::set(2, to_Timer);MsTimer2::start();
vol = EEPROM.read(0)-79;in = EEPROM.read(1);bass = EEPROM.read(2)-7;mid = EEPROM.read(3)-7;treb = EEPROM.read(4)-7;
attfl = EEPROM.read(5)-14;attcn = EEPROM.read(7)-14;attsub = EEPROM.read(8)-14;ddd = EEPROM.read(9);tembro = EEPROM.read(10);
attfr = EEPROM.read(11)-14;atttl = EEPROM.read(12)-14;atttr = EEPROM.read(13)-14;
att_front = EEPROM.read(14)-14;att_rear = EEPROM.read(14)-14;
delay(500);
audio();audio_in();
}
void to_Timer(){newPosition = myEnc.read()/4;}
void loop(){
//// BUTTON //////////////////////////////
if(power==0){
if(mute==0){
if(digitalRead(ENCODER)==LOW){menu++;cl1();myEnc.write(0);time=millis();w=1;w1=1;if(menu>11){menu=0;}}// меню
if(digitalRead(IN)==LOW || ir.value==IR1){in++;if(in>4){in=0;}if(in==3){in=4;}audio_in();cl1();lcd.setCursor(0,0);lcd.print(" INPUT SELECTOR ");
switch(in){
case 0: lcd.setCursor(0,1);lcd.print(" IN ");lcd.print(in+1);break;
case 1: lcd.setCursor(0,1);lcd.print(" IN ");lcd.print(in+1);break;
case 2: lcd.setCursor(0,1);lcd.print(" IN ");lcd.print(in+1);break;
case 3: lcd.setCursor(0,1);lcd.print(" IN ");lcd.print(in+1);break;
case 4: lcd.setCursor(0,1);lcd.print(" 6 CH ");break;
}delay(1000);time=millis();w=1;w1=1;cl1();}// in
if(ir.value==IR3){ddd++;menu=9;g1=1;g2=0;cl1();time=millis();w=1;ddd_conf();audio();}
if(ir.value==IR4){tembro++;menu=4;g1=1;g2=0;cl1();time=millis();w=1;w1=1;tembr();audio();}
if(ir.value==IR8){menu=3;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // treble
if(ir.value==IR9){menu=1;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // bass
if(ir.value==IR12){menu=7;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // center
if(ir.value==IR13){menu=8;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // sub
if(ir.value==IR10){menu=5;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // front
if(ir.value==IR11){menu=6;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // rear
} // mute
if((digitalRead(MUTE)==LOW || ir.value==IR2) && mute==0){mute=1;menu=100;g1=0;g2=0;cl1();time=millis();w=1;w1=1;audio();lcd.setCursor(6,0);lcd.print("MUTE");delay(500);}
if((digitalRead(MUTE)==LOW || ir.value==IR2) && mute==1){mute=0;menu=0; g1=0;g2=0;cl1();time=millis();w=1;w1=1;audio();}
}// power
if((digitalRead(POWER)==LOW || ir.value==IR7) && power==0){power=1;menu=100;g1=0;g2=0;cl1();time=millis();w=1;w1=1;mute=1;audio();lcd.setCursor(3,0);lcd.print("POWER OFF");delay(1000);lcd.noBacklight();}
if((digitalRead(POWER)==LOW || ir.value==IR7) && power==1){power=0;menu=0; g1=0;g2=0;cl1();time=millis();w=1;w1=1;mute=0;audio();lcd.backlight();lcd.setCursor(3,0);lcd.print("POWER ON ");delay(1000);cl1();}
if(mute==1||power==1){digitalWrite(STAND_OUT,HIGH);}else{digitalWrite(STAND_OUT,LOW);}// standby out pin D3
if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);time=millis();w=1;w1=1;irrecv.resume();}// IR приемник
//////////////////////////////////////// Громкость -79...0 дБ //////////////////////////////////////
if(menu==0){
if(ir.value==IR5){vol++;g1=1;g2=0;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка VOL+ 0xFFA857
if(ir.value==0xFFFFFFFF and g1==1){vol++;g2=0;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка >>>>>>
if(ir.value==IR6){vol--;g1=0;g2=1;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){vol--;g1=0;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;vol_conf();audio();}
lcd.setCursor(0,0);lcd.print("VOLUME ");
lcd.print(-79+vol);lcd.print(" ");lcd.setCursor(10,0);lcd.print("dB");vol_d=map(vol, 0,79, 0, 48);
switch(in){
case 0: lcd.print(" IN");lcd.print(in+1);break;
case 1: lcd.print(" IN");lcd.print(in+1);break;
case 2: lcd.print(" IN");lcd.print(in+1);break;
case 3: lcd.print(" IN");lcd.print(in+1);break;
case 4: lcd.print(" 6CH");break;
}
if(w1==1){w1=0;
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);}}}
//////////////////////////////////////// Тембр НЧ +-14 дБ //////////////////////////////////////
if(menu==1){
if(ir.value==IR5){bass++;g1=1;g2=0;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){bass++;g2=0;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка >>>>>>
if(ir.value==IR6){bass--;g1=0;g2=1;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){bass--;g1=0;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
bass=bass+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;bass_conf();audio();}
lcd.setCursor(0,0);lcd.print("BASS ");
lcd.print(" ");lcd.print(bass);lcd.print(" ");lcd.setCursor(13,0);bass_d=(bass+7)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=bass_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
//////////////////////////////////////// Тембр CЧ +-14 дБ //////////////////////////////////////
if(menu==2){
if(ir.value==IR5){mid++;g1=1;g2=0;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){mid++;g2=0;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка >>>>>>
if(ir.value==IR6){mid--;g1=0;g2=1;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){mid--;g1=0;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
mid=mid+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;mid_conf();audio();}
lcd.setCursor(0,0);lcd.print("MIDDLE ");
lcd.print(" ");lcd.print(mid);lcd.print(" ");lcd.setCursor(13,0);mid_d=(mid+7)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=mid_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
//////////////////////////////////////// Тембр BЧ +-14 дБ //////////////////////////////////////
if(menu==3){
if(ir.value==IR5){treb++;g1=1;g2=0;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){treb++;g2=0;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка >>>>>>
if(ir.value==IR6){treb--;g1=0;g2=1;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){treb--;g1=0;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
treb=treb+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;treb_conf();audio();}
lcd.setCursor(0,0);lcd.print("TREBLE ");
lcd.print(" ");lcd.print(treb);lcd.print(" ");lcd.setCursor(13,0);treb_d=(treb+7)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=treb_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
//////////////////////////////////// rock pop classic //////////////////////
if(menu==4){
if(ir.value==IR5){tembro++;g1=1;g2=0;cl();time=millis();w=1;w1=1;tembr();audio();}// кнопка VOL+
if(ir.value==IR6){tembro--;g1=0;g2=1;cl();time=millis();w=1;w1=1;tembr();audio();}// кнопка VOL-
if (newPosition != oldPosition) {
oldPosition = newPosition;
tembro=tembro+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;tembr();}
if(w1==1){w1=0;
lcd.setCursor(0,0);lcd.print(" Preset timbre ");
if(tembro==0){lcd.setCursor(0,1);lcd.print(" manual mode ");}
if(tembro==1){lcd.setCursor(0,1);lcd.print(" ROCK ");bass=4,mid=-2;treb=5;x=1;}
if(tembro==2){lcd.setCursor(0,1);lcd.print(" POP ");bass=-3,mid=3;treb=-2;x=1;}
if(tembro==3){lcd.setCursor(0,1);lcd.print(" CLASSIC ");bass=0,mid=0;treb=-2;x=1;}
if(tembro==4){lcd.setCursor(0,1);lcd.print(" default ");bass=0,mid=0;treb=0;x=1;}
if(x==1){audio();x=0;}
}}
/////////////////////// ATT FRONT ///////////////////
if(menu==5){
if(ir.value==IR5){att_front++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_front_conf();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){att_front++;g2=0;cl();time=millis();w=1;w1=1;att_front_conf();audio();}// кнопка >>>>>>
if(ir.value==IR6){att_front--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_front_conf();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){att_front--;g1=0;cl();time=millis();w=1;w1=1;att_front_conf();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
att_front=att_front+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_front_conf();audio();}
lcd.setCursor(0,0);lcd.print("ATT FRONT ");
lcd.print(att_front);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attfl_d=(att_front+14)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=attfl_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
/////////////////////// ATT RAER ///////////////////
if(menu==6){
if(ir.value==IR5){att_rear++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_rear_conf();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){att_rear++;g2=0;cl();time=millis();w=1;w1=1;att_rear_conf();audio();}// кнопка >>>>>>
if(ir.value==IR6){att_rear--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_rear_conf();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){att_rear--;g1=0;cl();time=millis();w=1;w1=1;att_rear_conf();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
att_rear=att_rear+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_rear_conf();audio();}
lcd.setCursor(0,0);lcd.print("ATT REAR ");
lcd.print(att_rear);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");atttl_d=(att_rear+14)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=atttl_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
/////////////////////// ATT CN ///////////////////
if(menu==7){
if(ir.value==IR5){attcn++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){attcn++;g2=0;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка >>>>>>
if(ir.value==IR6){attcn--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){attcn--;g1=0;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
attcn=attcn+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_cn();audio();}
lcd.setCursor(0,0);lcd.print("ATT CN ");
lcd.print(" ");lcd.print(attcn);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attcn_d=(attcn+14)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=attcn_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
/////////////////////// ATT SUB ///////////////////
if(menu==8){
if(ir.value==IR5){attsub++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){attsub++;g2=0;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка >>>>>>
if(ir.value==IR6){attsub--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){attsub--;g1=0;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
attsub=attsub+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_sub();audio();}
lcd.setCursor(0,0);lcd.print("ATT SUB ");
lcd.print(" ");lcd.print(attsub);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attsub_d=(attsub+14)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=attsub_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
//////////////////////////// 3d ///////////////////////////////////////////////
if(menu==9){
if (newPosition != oldPosition) {
oldPosition = newPosition;
ddd=ddd+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;ddd_conf();audio();}
lcd.setCursor(0,0);lcd.print(" Surround ");
lcd.setCursor(0,1);if(ddd==0){lcd.print(" 3D ON ");}else{lcd.print(" 3D OFF ");}}
//////////////////////////// EEPROM /////////////////////////////////////////////////////////////
if(millis()-time>5000&& w==1&&mute==0){
EEPROM.update(0,vol+79);EEPROM.update(1,in);EEPROM.update(2,bass+7);EEPROM.update(3,mid+7);EEPROM.update(4,treb+7);
EEPROM.update(5,attfl+14);EEPROM.update(7,attcn+14);EEPROM.update(8,attsub+14);EEPROM.update(9,ddd);EEPROM.update(10,tembro);
EEPROM.update(11,attfr+14);EEPROM.update(12,atttl+14);EEPROM.update(13,atttr+14);
EEPROM.update(14,att_front+14);EEPROM.update(15,att_rear+14);
menu=0;w=0;w1=1;cl();}
}//loop
void ddd_conf(){if(ddd<0){ddd=1;}if(ddd>1){ddd=0;}}
void att_sub(){if(attsub<-14){attsub=-14;}if(attsub>0){attsub=0;}}
void att_cn(){if(attcn<-14){attcn=-14;}if(attcn>0){attcn=0;}}
void att_rear_conf(){if(att_rear<-14){att_rear=-14;}if(att_rear>0){att_rear=0;}}
void att_front_conf(){if(att_front<-14){att_front=-14;}if(att_front>0){att_front=0;}}
void tembr(){if(tembro>4){tembro=0;}if(tembro<0){tembro=4;}}
void treb_conf(){if(treb<-7){treb=-7;}if(treb>7){treb=7;}}
void mid_conf(){if(mid<-7){mid=-7;}if(mid>7){mid=7;}}
void bass_conf(){if(bass<-7){bass=-7;}if(bass>7){bass=7;}}
void vol_conf(){if(vol>79){vol=79;}if(vol<0){vol=0;}}
void cl(){ir.value=0;delay(100);}
void cl1(){ir.value=0;delay(300);lcd.clear();}
void audio_in(){
pt0.setInput(in);
pt0.setMute(0,0,0,0,0,0,0);
pt0.setFeature(1,1);
}
void audio(){
pt.setFront_lk_att(abs(att_front));// att front L
pt.setFront_rk_att(abs(att_front));// att front R
pt.setCenter_att(abs(attcn)); // att center
pt.setRear_lk_att(abs(att_rear)); // att rear L
pt.setRear_rk_att(abs(att_rear)); // att rear R
pt.setSub_att(abs(attsub)); // att sub
pt.setFunc(mute,ddd,0); // mute,3d,тембр on/off
pt.setBass(bass); // BASS -14...0...14 dB (int -7...0...7)
pt.setMiddle(mid); // MIDDLE -14...0...14 dB (int -7...0...7)
pt.setTreble(treb); // TREBLE -14...0...14 dB (int -7...0...7)
pt.setVol(abs(vol)); // -79...0
}
4.Можно увеличить время при переключении режимов входа? ЧТо бы не переключалось на громкость после каждого нажатия.
Сделал:
#define IR1 0x33B844BB // INPUT
#define IR2 0x33B8946B // MUTE
#define IR3 0x33B858A7 // 3D
#define IR4 0x33B820DF // EQ
#define IR5 0x33B8A05F // UP VOL
#define IR6 0x33B8609F // DW VOL
#define IR7 0x33B800FF // STANDBY
#define IR8 0x33B814EB // TREBLE
#define IR9 0x33B840BF // BASS
#define IR10 0x33B824DB // FRONT
#define IR11 0x33B8A45B // REAR
#define IR12 0x33B8649B // CENTER
#define IR13 0x33B8E41B // SUB
#define IR14 0x33B854AB // OUTPUT
#define ENCODER 11 // BUTTON ENCODER
#define MUTE 12 // BUTTON MUTE
#define IN 10 // BUTTON INPUT
#define POWER 13 // BUTTON POWER
#define STAND_OUT 3 // OUTPUT STANDBY
#include <Wire.h>
#include <PT2322.h>
#include <PT2323.h>
#include <LiquidCrystal_I2C.h> // http://forum.rcl-radio.ru/misc.php?action=pan_download&item=45&download=1
#include <EEPROM.h>
#include <Encoder.h>
#include <MsTimer2.h>
#include <boarddefs.h>
#include <IRremote.h>
PT2322 pt; PT2323 pt0;
Encoder myEnc(8, 7);//CLK, DT подключение энкодера
IRrecv irrecv(9); // указываем вывод модуля IR приемника
decode_results ir;
LiquidCrystal_I2C lcd(0x27,16,2); // Устанавливаем дисплей
byte a1[8]={0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
byte a2[8]={0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
byte a3[8]={0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000};
unsigned long newPosition,time,oldPosition = -999;
int menu,menu2,w,vol,vol_d,z,z0,z1,in,bass,bass_d,mid,mid_d,treb,treb_d,attfl,attfl_d,attcn,attcn_d,attsub,attsub_d,ddd,tembro,x,attfr,attfr_d,atttl,atttl_d,atttr,atttr_d,mute;
bool g1,g2;
bool w1=1,power;
int att_front, att_rear;
void setup() {
Wire.begin();Serial.begin(9600);irrecv.enableIRIn(); // запускаем модуль IR
lcd.init();lcd.backlight();
lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
pinMode(ENCODER,INPUT_PULLUP); // menu кнопка энкодера
pinMode(MUTE,INPUT_PULLUP); // MUTE
pinMode(IN,INPUT_PULLUP); // IN
pinMode(POWER,INPUT_PULLUP); // STANDBY
pinMode(STAND_OUT,OUTPUT); // OUTPUT STANDBY AND MUTE
MsTimer2::set(2, to_Timer);MsTimer2::start();
vol = EEPROM.read(0)-79;in = EEPROM.read(1);bass = EEPROM.read(2)-7;mid = EEPROM.read(3)-7;treb = EEPROM.read(4)-7;
attfl = EEPROM.read(5)-14;attcn = EEPROM.read(7)-14;attsub = EEPROM.read(8)-14;ddd = EEPROM.read(9);tembro = EEPROM.read(10);
attfr = EEPROM.read(11)-14;atttl = EEPROM.read(12)-14;atttr = EEPROM.read(13)-14;
att_front = EEPROM.read(14)-14;att_rear = EEPROM.read(14)-14;
delay(500);
audio();audio_in();
}
void to_Timer(){newPosition = myEnc.read()/4;}
void loop(){
//// BUTTON //////////////////////////////
if(power==0){
if(mute==0){
if(digitalRead(ENCODER)==LOW){menu++;cl1();myEnc.write(0);time=millis();w=1;w1=1;if(menu>9){menu=0;}}// меню
if(digitalRead(IN)==LOW || ir.value==IR1){in++;g1=1;g2=0;menu=10;if(in>4){in=0;}if(in==3){in=4;}audio_in();cl1();time=millis();w=1;w1=1;}// in
if(ir.value==IR3){ddd++;menu=9;g1=1;g2=0;cl1();time=millis();w=1;ddd_conf();audio();}
if(ir.value==IR4){tembro++;menu=4;g1=1;g2=0;cl1();time=millis();w=1;w1=1;tembr();audio();}
if(ir.value==IR8){menu=3;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // treble
if(ir.value==IR9){menu=1;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // bass
if(ir.value==IR12){menu=7;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // center
if(ir.value==IR13){menu=8;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // sub
if(ir.value==IR10){menu=5;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // front
if(ir.value==IR11){menu=6;g1=1;g2=0;cl1();time=millis();w=1;w1=1;} // rear
} // mute
if((digitalRead(MUTE)==LOW || ir.value==IR2) && mute==0){mute=1;menu=100;g1=0;g2=0;cl1();time=millis();w=1;w1=1;audio();lcd.setCursor(6,0);lcd.print("MUTE");delay(500);}
if((digitalRead(MUTE)==LOW || ir.value==IR2) && mute==1){mute=0;menu=0; g1=0;g2=0;cl1();time=millis();w=1;w1=1;audio();}
}// power
if((digitalRead(POWER)==LOW || ir.value==IR7) && power==0){power=1;menu=100;g1=0;g2=0;cl1();time=millis();w=1;w1=1;mute=1;audio();lcd.setCursor(3,0);lcd.print("POWER OFF");delay(1000);lcd.noBacklight();}
if((digitalRead(POWER)==LOW || ir.value==IR7) && power==1){power=0;menu=0; g1=0;g2=0;cl1();time=millis();w=1;w1=1;mute=0;audio();lcd.backlight();lcd.setCursor(3,0);lcd.print("POWER ON ");delay(1000);cl1();}
if(mute==1||power==1){digitalWrite(STAND_OUT,HIGH);}else{digitalWrite(STAND_OUT,LOW);}// standby out pin D3
if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);time=millis();w=1;w1=1;irrecv.resume();}// IR приемник
if(menu==10){
lcd.setCursor(0,0);lcd.print(" INPUT SELECTOR ");
switch(in){
case 0: lcd.setCursor(0,1);lcd.print(" IN ");lcd.print(in+1);break;
case 1: lcd.setCursor(0,1);lcd.print(" IN ");lcd.print(in+1);break;
case 2: lcd.setCursor(0,1);lcd.print(" IN ");lcd.print(in+1);break;
case 3: lcd.setCursor(0,1);lcd.print(" IN ");lcd.print(in+1);break;
case 4: lcd.setCursor(0,1);lcd.print(" 6 CH ");break;
}
}
//////////////////////////////////////// Громкость -79...0 дБ //////////////////////////////////////
if(menu==0){
if(ir.value==IR5){vol++;g1=1;g2=0;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка VOL+ 0xFFA857
if(ir.value==0xFFFFFFFF and g1==1){vol++;g2=0;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка >>>>>>
if(ir.value==IR6){vol--;g1=0;g2=1;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){vol--;g1=0;cl();time=millis();w=1;w1=1;vol_conf();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;vol_conf();audio();}
lcd.setCursor(0,0);lcd.print("VOLUME ");
lcd.print(-79+vol);lcd.print(" ");lcd.setCursor(10,0);lcd.print("dB");vol_d=map(vol, 0,79, 0, 48);
switch(in){
case 0: lcd.print(" IN");lcd.print(in+1);break;
case 1: lcd.print(" IN");lcd.print(in+1);break;
case 2: lcd.print(" IN");lcd.print(in+1);break;
case 3: lcd.print(" IN");lcd.print(in+1);break;
case 4: lcd.print(" 6CH");break;
}
if(w1==1){w1=0;
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);}}}
//////////////////////////////////////// Тембр НЧ +-14 дБ //////////////////////////////////////
if(menu==1){
if(ir.value==IR5){bass++;g1=1;g2=0;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){bass++;g2=0;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка >>>>>>
if(ir.value==IR6){bass--;g1=0;g2=1;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){bass--;g1=0;cl();time=millis();w=1;w1=1;bass_conf();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
bass=bass+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;bass_conf();audio();}
lcd.setCursor(0,0);lcd.print("BASS ");
lcd.print(" ");lcd.print(bass);lcd.print(" ");lcd.setCursor(13,0);bass_d=(bass+7)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=bass_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
//////////////////////////////////////// Тембр CЧ +-14 дБ //////////////////////////////////////
if(menu==2){
if(ir.value==IR5){mid++;g1=1;g2=0;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){mid++;g2=0;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка >>>>>>
if(ir.value==IR6){mid--;g1=0;g2=1;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){mid--;g1=0;cl();time=millis();w=1;w1=1;mid_conf();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
mid=mid+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;mid_conf();audio();}
lcd.setCursor(0,0);lcd.print("MIDDLE ");
lcd.print(" ");lcd.print(mid);lcd.print(" ");lcd.setCursor(13,0);mid_d=(mid+7)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=mid_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
//////////////////////////////////////// Тембр BЧ +-14 дБ //////////////////////////////////////
if(menu==3){
if(ir.value==IR5){treb++;g1=1;g2=0;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){treb++;g2=0;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка >>>>>>
if(ir.value==IR6){treb--;g1=0;g2=1;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){treb--;g1=0;cl();time=millis();w=1;w1=1;treb_conf();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
treb=treb+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;treb_conf();audio();}
lcd.setCursor(0,0);lcd.print("TREBLE ");
lcd.print(" ");lcd.print(treb);lcd.print(" ");lcd.setCursor(13,0);treb_d=(treb+7)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=treb_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
//////////////////////////////////// rock pop classic //////////////////////
if(menu==4){
if(ir.value==IR5){tembro++;g1=1;g2=0;cl();time=millis();w=1;w1=1;tembr();audio();}// кнопка VOL+
if(ir.value==IR6){tembro--;g1=0;g2=1;cl();time=millis();w=1;w1=1;tembr();audio();}// кнопка VOL-
if (newPosition != oldPosition) {
oldPosition = newPosition;
tembro=tembro+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;tembr();}
if(w1==1){w1=0;
lcd.setCursor(0,0);lcd.print(" Preset timbre ");
if(tembro==0){lcd.setCursor(0,1);lcd.print(" manual mode ");}
if(tembro==1){lcd.setCursor(0,1);lcd.print(" ROCK ");bass=4,mid=-2;treb=5;x=1;}
if(tembro==2){lcd.setCursor(0,1);lcd.print(" POP ");bass=-3,mid=3;treb=-2;x=1;}
if(tembro==3){lcd.setCursor(0,1);lcd.print(" CLASSIC ");bass=0,mid=0;treb=-2;x=1;}
if(tembro==4){lcd.setCursor(0,1);lcd.print(" default ");bass=0,mid=0;treb=0;x=1;}
if(x==1){audio();x=0;}
}}
/////////////////////// ATT FRONT ///////////////////
if(menu==5){
if(ir.value==IR5){att_front++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_front_conf();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){att_front++;g2=0;cl();time=millis();w=1;w1=1;att_front_conf();audio();}// кнопка >>>>>>
if(ir.value==IR6){att_front--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_front_conf();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){att_front--;g1=0;cl();time=millis();w=1;w1=1;att_front_conf();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
att_front=att_front+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_front_conf();audio();}
lcd.setCursor(0,0);lcd.print("ATT FRONT ");
lcd.print(att_front);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attfl_d=(att_front+14)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=attfl_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
/////////////////////// ATT RAER ///////////////////
if(menu==6){
if(ir.value==IR5){att_rear++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_rear_conf();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){att_rear++;g2=0;cl();time=millis();w=1;w1=1;att_rear_conf();audio();}// кнопка >>>>>>
if(ir.value==IR6){att_rear--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_rear_conf();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){att_rear--;g1=0;cl();time=millis();w=1;w1=1;att_rear_conf();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
att_rear=att_rear+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_rear_conf();audio();}
lcd.setCursor(0,0);lcd.print("ATT REAR ");
lcd.print(att_rear);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");atttl_d=(att_rear+14)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=atttl_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
/////////////////////// ATT CN ///////////////////
if(menu==7){
if(ir.value==IR5){attcn++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){attcn++;g2=0;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка >>>>>>
if(ir.value==IR6){attcn--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){attcn--;g1=0;cl();time=millis();w=1;w1=1;att_cn();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
attcn=attcn+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_cn();audio();}
lcd.setCursor(0,0);lcd.print("ATT CN ");
lcd.print(" ");lcd.print(attcn);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attcn_d=(attcn+14)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=attcn_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
/////////////////////// ATT SUB ///////////////////
if(menu==8){
if(ir.value==IR5){attsub++;g1=1;g2=0;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка VOL+
if(ir.value==0xFFFFFFFF and g1==1){attsub++;g2=0;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка >>>>>>
if(ir.value==IR6){attsub--;g1=0;g2=1;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){attsub--;g1=0;cl();time=millis();w=1;w1=1;att_sub();audio();}// кнопка <<<<<<
if (newPosition != oldPosition) {
oldPosition = newPosition;
attsub=attsub+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;att_sub();audio();}
lcd.setCursor(0,0);lcd.print("ATT SUB ");
lcd.print(" ");lcd.print(attsub);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attsub_d=(attsub+14)*2;
if(w1==1){w1=0;
for(z=0,z0=0,z1=0;z<=attsub_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}}
//////////////////////////// 3d ///////////////////////////////////////////////
if(menu==9){
if (newPosition != oldPosition) {
oldPosition = newPosition;
ddd=ddd+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;ddd_conf();audio();}
lcd.setCursor(0,0);lcd.print(" Surround ");
lcd.setCursor(0,1);if(ddd==0){lcd.print(" 3D ON ");}else{lcd.print(" 3D OFF ");}}
//////////////////////////// EEPROM /////////////////////////////////////////////////////////////
if(millis()-time>5000&& w==1&&mute==0){
EEPROM.update(0,vol+79);EEPROM.update(1,in);EEPROM.update(2,bass+7);EEPROM.update(3,mid+7);EEPROM.update(4,treb+7);
EEPROM.update(5,attfl+14);EEPROM.update(7,attcn+14);EEPROM.update(8,attsub+14);EEPROM.update(9,ddd);EEPROM.update(10,tembro);
EEPROM.update(11,attfr+14);EEPROM.update(12,atttl+14);EEPROM.update(13,atttr+14);
EEPROM.update(14,att_front+14);EEPROM.update(15,att_rear+14);
menu=0;w=0;w1=1;cl();}
}//loop
void ddd_conf(){if(ddd<0){ddd=1;}if(ddd>1){ddd=0;}}
void att_sub(){if(attsub<-14){attsub=-14;}if(attsub>0){attsub=0;}}
void att_cn(){if(attcn<-14){attcn=-14;}if(attcn>0){attcn=0;}}
void att_rear_conf(){if(att_rear<-14){att_rear=-14;}if(att_rear>0){att_rear=0;}}
void att_front_conf(){if(att_front<-14){att_front=-14;}if(att_front>0){att_front=0;}}
void tembr(){if(tembro>4){tembro=0;}if(tembro<0){tembro=4;}}
void treb_conf(){if(treb<-7){treb=-7;}if(treb>7){treb=7;}}
void mid_conf(){if(mid<-7){mid=-7;}if(mid>7){mid=7;}}
void bass_conf(){if(bass<-7){bass=-7;}if(bass>7){bass=7;}}
void vol_conf(){if(vol>79){vol=79;}if(vol<0){vol=0;}}
void cl(){ir.value=0;delay(100);}
void cl1(){ir.value=0;delay(300);lcd.clear();}
void audio_in(){
pt0.setInput(in);
pt0.setMute(0,0,0,0,0,0,0);
pt0.setFeature(1,1);
}
void audio(){
pt.setFront_lk_att(abs(att_front));// att front L
pt.setFront_rk_att(abs(att_front));// att front R
pt.setCenter_att(abs(attcn)); // att center
pt.setRear_lk_att(abs(att_rear)); // att rear L
pt.setRear_rk_att(abs(att_rear)); // att rear R
pt.setSub_att(abs(attsub)); // att sub
pt.setFunc(mute,ddd,0); // mute,3d,тембр on/off
pt.setBass(bass); // BASS -14...0...14 dB (int -7...0...7)
pt.setMiddle(mid); // MIDDLE -14...0...14 dB (int -7...0...7)
pt.setTreble(treb); // TREBLE -14...0...14 dB (int -7...0...7)
pt.setVol(abs(vol)); // -79...0
}
Еще один не понятный момент. Я прописал здесь "..IR7 0x33B800FF // STANDBY" код кнопки включения телевизора, что бы можно было одновремено вкл телевизор и центр. Но схема выключается и тут же включается, возвращаю код родной кнопки и все работает, прописал код кнопки OUT все тоже прекрасно работает. Почему такое может происходить?
Не могу точно сказать почему так происходит, при нажатии кнопки POWER идет пауза в 1 с, что не дает использовать повторное нажатие кнопки POWER
Проверил монитор порта при нажатии кнопки с пульта телевизора, за одно нажатие может вывалить несколько кодов. Попробовал коротко нажать, схема работает норамльно.Чуть передержал и все
Бывают такие пульты
В строчку:
if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);time=millis();w=1;w1=1;irrecv.resume();}// IR приемник
добавьте паузу, возможно поможет
if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);time=millis();w=1;w1=1;irrecv.resume();delay(300);}// IR приемник
Это не помогло. Заметил другое. Нажимаю кнопку на пульте ТВ. Проходит код, сразу же закрываю рукой светодиод пульта, еще раз в мониторе проходит тот же код. как так?
Тут все от пульта зависит, опрос ик датчика происходит несколько раз в секунду, а вывод в монитор порта с задержкой.
Есть вариант это как-то решить? Например что бы он один раз только принял код в течении скажем 2 секунд не реагировал ни на что?
Залил последний скетч и что-то опять не так пошло. Все бежит меняется моргает...
Предлагаю на сегодня сделать перерыв....
Я подумаю что можно сделать
Спасибо большое!!!!
Страницы Назад 1 … 6 7 8 9 10 … 14 Далее
Чтобы отправить ответ, вы должны войти или зарегистрироваться
forum.rcl-radio.ru → Переделки → PT2323+TDA7448
Форум работает на PunBB, при поддержке Informer Technologies, Inc
|