Re: PT2258 + OLED 0.96 + encoder + IR
Сижу рисую. но это на долго
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
forum.rcl-radio.ru → Переделки → PT2258 + OLED 0.96 + encoder + IR
Сижу рисую. но это на долго
Принцип работы я вижу примерно таким
Сабвуфер я так понял ни как не коммутируется
В общем как вы нарисовали так и есть верно
Вход сабвуфера идет на 3 ногу PT2258
Вход сабвуфера идет на 3 ногу PT2258
Когда работают MP3 и СD сабвуфер не работает? И выходы CEN SL RL тоже не работают?
В pt2258 можно полностью отключать один или несколько выходов, это надо учесть при выборе входа.
В некоторых АС 5.1 когда на вход подается стерео сигнал, при помощи аудиопроцессора стерео раскидывается на 5.1 и работаю все 6 выходов, но pt2258 так не умеет, это просто регулятор громкости.
Управление HCF4052
9 и 10 пин идет к контроллеру, 6 должен идти на GND
Управление HCF4053
9 10 и 11 пины должны быть замкнуты между собой, и от них идет провод к контроллеру.
6 пин должен тоже идти к контроллеру
Если все так, то проблем с запуском коммутатора входов не будет.
Управление HCF4052
9 и 10 пин идет к контроллеру, 6 должен идти на GND
Управление HCF4053
9 10 и 11 пины должны быть замкнуты между собой, и от них идет провод к контроллеру.
6 пин должен тоже идти к контроллеруЕсли все так, то проблем с запуском коммутатора входов не будет.
6 пин на корпусе, а в остальном все верно получается
6 пин на корпусе
В какой микросхеме? В HCF4052?
Если со слепу не напортачил то так
Обновил скетч, для управления коммутатором используются пины микроконтроллера A0 A1 A2
На дисплей выводится название входа.
Добавил еще одну кнопку на D3 - INPUT
#define POWER 0x2FD00FF
#define DW 0x2FD906F
#define UP 0x2FDF20D
#define MUT 0x2FDEA15
#define SET 0x2FD6A95
#define IN 0x2F67789
#include <Wire.h>
#include <OLED_I2C.h> // http://rcl-radio.ru/wp-content/uploads/2022/01/OLED_I2C.zip
#include <Encoder.h> // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
#include <EEPROM.h>
#include <MsTimer2.h> // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip
#include <boarddefs.h> // входит в состав библиотеки IRremote
#include <IRremote.h> // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip
#include <PT2258.h> // https://github.com/liman324/PT2258.git
#include <DS3231.h> // http://rcl-radio.ru/wp-content/uploads/2022/07/DS3231.zip
PT2258 pt;
DS3231 clock;RTCDateTime DateTime;
OLED myOLED(SDA, SCL, 8);
extern uint8_t SmallFont[],BigNumbers[];
IRrecv irrecv(12); // указываем вывод модуля IR приемника
Encoder myEnc(9, 8);// DT, CLK
decode_results ir;
unsigned long times,oldPosition = -999,newPosition;
int vol,ch1,ch2,ch3,ch4,ch5,ch6,menu,mute,in;
bool w,w2,gr1,gr2,power;
int hour,minut,secon,old_sec;
byte a[6];
// d2 d3 d4 d5 - - d8 d9 d10 - d12 - a0 a1 a2 - a4 a5 // занятые и свободные(-) пины
void setup(){
Wire.begin();
Wire.setClock(400000L);
Serial.begin(9600);
irrecv.enableIRIn();
myOLED.begin();
myOLED.setBrightness(100);
pinMode(10,INPUT); // MUTE КНОПКА SW энкодера
pinMode(2,INPUT_PULLUP); // КНОПКА SET
pinMode(3,INPUT_PULLUP); // КНОПКА INPUT
pinMode(4,INPUT_PULLUP); // КНОПКА POWER
pinMode(5,OUTPUT); // Выход управления STANDBY усилителя
pinMode(A0,OUTPUT);pinMode(A1,OUTPUT); pinMode(A2,OUTPUT);
MsTimer2::set(3, to_Timer);MsTimer2::start();
if(EEPROM.read(100)!=0){for(int i=0;i<101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении
myOLED.clrScr();
myOLED.setFont(SmallFont);
myOLED.print(F("Sound Processors"), CENTER, 10);
myOLED.print(F("PT2258"), CENTER, 30);
myOLED.update();
delay(2000);
vol = EEPROM.read(0);ch1 = EEPROM.read(1);ch2 = EEPROM.read(2);ch3 = EEPROM.read(3);
ch4 = EEPROM.read(4);ch5 = EEPROM.read(5);ch6 = EEPROM.read(6);in = EEPROM.read(7);
audio();
}
void loop(){
////////////////////////////////// IR ////////////////////////////////////////
if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);irrecv.resume();times=millis();w=1;w2=1;}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта
///////// BUTTON /////////////////////////////////////////////////////////////
if(power==0){
if((digitalRead(10)==LOW||ir.value==MUT)&&mute==0){mute=1;w=1;menu=100;cl();audio();myOLED.clrScr();myOLED.setFont(SmallFont);myOLED.print(F("MUTE"), CENTER, 25);myOLED.update();}
if((digitalRead(10)==LOW||ir.value==MUT)&&mute==1){mute=0;w=1;menu=0;cl();audio();}
if(digitalRead(3)==LOW||ir.value==IN){in++;if(in>2){in=0;}times=millis();w=1;w2=1;cl();}
if(digitalRead(2)==LOW||ir.value==SET){menu++;if(menu>6){menu=0;}times=millis();w=1;w2=1;cl();}
}
///////////// INPUT ///////////////////
switch(in){
case 0: digitalWrite(A0,LOW); digitalWrite(A1,LOW);digitalWrite(A2,LOW);break;// mp3
case 1: digitalWrite(A0,LOW); digitalWrite(A1,HIGH);digitalWrite(A2,LOW);break;// cd
case 2: digitalWrite(A0,HIGH); digitalWrite(A1,HIGH);digitalWrite(A2,HIGH);break;// ac-3
}
/// POWER ////////////////////////////////////
if(((digitalRead(4)==LOW||ir.value==POWER)&&digitalRead(10)==HIGH)&&power==0){power=1;menu=100;myOLED.setBrightness(1);cl();myEnc.write(0);mute=1;
myOLED.clrScr();myOLED.setFont(SmallFont);myOLED.print(F("POWER OFF"), CENTER, 10);myOLED.update();
audio();delay(2000);cl();}
if(((digitalRead(4)==LOW||ir.value==POWER)&&digitalRead(10)==HIGH)&&power==1&&digitalRead(10)==HIGH){power=0;menu=0;myOLED.setBrightness(100);cl();myEnc.write(0);mute=0;w=1;
myOLED.clrScr();myOLED.setFont(SmallFont);myOLED.print(F("POWER ON"), CENTER, 10);myOLED.update();
audio();delay(2000);cl();}
/// standby output
if(power==1){digitalWrite(5,LOW);}else{digitalWrite(5,HIGH);}
//////// VOLUME //////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==0){
if(newPosition != oldPosition){oldPosition = newPosition;vol=vol-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;vol_func();audio();}
if(ir.value==DW){vol--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;vol_func();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){vol--;gr2=0;cl();times=millis();w=1;w2=1;vol_func();audio();}// кнопка >>>>>>
if(ir.value==UP){vol++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;vol_func();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){vol++;gr1=0;cl();times=millis();w=1;w2=1;vol_func();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("VOLUME"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(64-vol, 75, 0);
switch(in){
case 0: myOLED.setFont(SmallFont);myOLED.print(F("MP3 "), LEFT, 20);break;
case 1: myOLED.setFont(SmallFont);myOLED.print(F("CD "), LEFT, 20);break;
case 2: myOLED.setFont(SmallFont);myOLED.print(F("AC-3"), LEFT, 20);break;
}
myOLED.drawLine(0, 30, 128, 30);
myOLED.setFont(SmallFont);myOLED.print(F("LF"), LEFT, 35);myOLED.printNumI(-ch1, 40, 35);
myOLED.setFont(SmallFont);myOLED.print(F("RF"), 70, 35);myOLED.printNumI(-ch2, 110, 35);
myOLED.setFont(SmallFont);myOLED.print(F("LR"), LEFT, 45);myOLED.printNumI(-ch3, 40, 45);
myOLED.setFont(SmallFont);myOLED.print(F("RR"), 70, 45);myOLED.printNumI(-ch4, 110, 45);
myOLED.setFont(SmallFont);myOLED.print(F("CEN"), LEFT, 55);myOLED.printNumI(-ch5, 40, 55);
myOLED.setFont(SmallFont);myOLED.print(F("SUB"), 70, 55);myOLED.printNumI(-ch6, 110, 55);
myOLED.update();
}}
//////// ATT LF //////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==1){
if(newPosition != oldPosition){oldPosition = newPosition;ch1=ch1-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ch1_conf();audio();}
if(ir.value==DW){ch1--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ch1_conf();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){ch1--;gr2=0;cl();times=millis();w=1;w2=1;ch1_conf();audio();}// кнопка >>>>>>
if(ir.value==UP){ch1++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ch1_conf();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){ch1++;gr1=0;cl();times=millis();w=1;w2=1;ch1_conf();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("ATT_LF"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(-ch1, 65, 0);
myOLED.setFont(SmallFont);myOLED.print(F("dB"), RIGHT, 20);
myOLED.update();
}}
//////// ATT RF //////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==2){
if(newPosition != oldPosition){oldPosition = newPosition;ch2=ch2-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ch2_conf();audio();}
if(ir.value==DW){ch2--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ch2_conf();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){ch2--;gr2=0;cl();times=millis();w=1;w2=1;ch2_conf();audio();}// кнопка >>>>>>
if(ir.value==UP){ch2++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ch2_conf();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){ch2++;gr1=0;cl();times=millis();w=1;w2=1;ch2_conf();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("ATT_RF"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(-ch2, 65, 0);
myOLED.setFont(SmallFont);myOLED.print(F("dB"), RIGHT, 20);
myOLED.update();
}}
//////// ATT LR //////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==3){
if(newPosition != oldPosition){oldPosition = newPosition;ch3=ch3-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ch3_conf();audio();}
if(ir.value==DW){ch3--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ch3_conf();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){ch3--;gr2=0;cl();times=millis();w=1;w2=1;ch3_conf();audio();}// кнопка >>>>>>
if(ir.value==UP){ch3++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ch3_conf();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){ch3++;gr1=0;cl();times=millis();w=1;w2=1;ch3_conf();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("ATT_LR"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(-ch3, 65, 0);
myOLED.setFont(SmallFont);myOLED.print(F("dB"), RIGHT, 20);
myOLED.update();
}}
//////// ATT RR //////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==4){
if(newPosition != oldPosition){oldPosition = newPosition;ch4=ch4-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ch4_conf();audio();}
if(ir.value==DW){ch4--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ch4_conf();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){ch4--;gr2=0;cl();times=millis();w=1;w2=1;ch4_conf();audio();}// кнопка >>>>>>
if(ir.value==UP){ch4++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ch4_conf();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){ch4++;gr1=0;cl();times=millis();w=1;w2=1;ch4_conf();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("ATT_RR"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(-ch4, 65, 0);
myOLED.setFont(SmallFont);myOLED.print(F("dB"), RIGHT, 20);
myOLED.update();
}}
//////// ATT CEN//////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==5){
if(newPosition != oldPosition){oldPosition = newPosition;ch5=ch5-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ch5_conf();audio();}
if(ir.value==DW){ch5--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ch5_conf();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){ch5--;gr2=0;cl();times=millis();w=1;w2=1;ch5_conf();audio();}// кнопка >>>>>>
if(ir.value==UP){ch5++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ch5_conf();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){ch5++;gr1=0;cl();times=millis();w=1;w2=1;ch5_conf();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("ATT_CEN"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(-ch5, 65, 0);
myOLED.setFont(SmallFont);myOLED.print(F("dB"), RIGHT, 20);
myOLED.update();
}}
//////// ATT SUB //////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==6){
if(newPosition != oldPosition){oldPosition = newPosition;ch6=ch6-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ch6_conf();audio();}
if(ir.value==DW){ch6--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ch6_conf();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){ch6--;gr2=0;cl();times=millis();w=1;w2=1;ch6_conf();audio();}// кнопка >>>>>>
if(ir.value==UP){ch6++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ch6_conf();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){ch6++;gr1=0;cl();times=millis();w=1;w2=1;ch6_conf();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("ATT_SUB"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(-ch6, 65, 0);
myOLED.setFont(SmallFont);myOLED.print(F("dB"), RIGHT, 20);
myOLED.update();
}}
/////////////////// ЧАСЫ ///////////////////////////////////////////////////////////////////
if(power==1){
DateTime = clock.getDateTime();hour = DateTime.hour;minut = DateTime.minute;secon = DateTime.second;
a[0]=hour/10;
a[1]=hour%10;
a[2]=minut/10;
a[3]=minut%10;
a[4]=secon/10;
a[5]=secon%10;
if(old_sec!=secon){
myOLED.clrScr();
myOLED.setFont(BigNumbers);myOLED.printNumI(a[0], 15, 5);myOLED.printNumI(a[1], 30, 5);
myOLED.setFont(SmallFont);myOLED.print(F(":"), 45, 15);
myOLED.setFont(BigNumbers);myOLED.printNumI(a[2], 50, 5);myOLED.printNumI(a[3], 65, 5);
myOLED.setFont(SmallFont);myOLED.print(F(":"), 80, 15);
myOLED.setFont(BigNumbers);myOLED.printNumI(a[4], 85, 5);myOLED.printNumI(a[5], 100, 5);
myOLED.setFont(SmallFont);myOLED.print(F("POWER OFF"), CENTER, 45);
myOLED.update();
}
old_sec=secon;
//// set time ////
if(digitalRead(10)==LOW&&digitalRead(2)==LOW){hour++;if(hour>23){hour=0;} clock.setDateTime(2022, 11, 4, hour, minut, secon);delay(300);}// SET button HH++
if(digitalRead(10)==LOW&&digitalRead(4)==LOW){minut++;if(minut>59){minut=0;} clock.setDateTime(2022, 11, 4, hour, minut, secon);delay(300);}// POWER MM++
}
////////////////// EEPROM //////////////////////////////////////////////////////////////
if(millis()-times>5000 && w2==1 && mute==0){
EEPROM.update(0,vol);EEPROM.update(1,ch1);EEPROM.update(2,ch2);EEPROM.update(3,ch3);
EEPROM.update(4,ch4);EEPROM.update(5,ch5);EEPROM.update(6,ch6);EEPROM.update(7,in);
cl();menu=0;w2=0;w=1;}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
} // end loop
void ch1_conf(){if(ch1<0){ch1=0;}if(ch1>15){ch1=15;}}
void ch2_conf(){if(ch2<0){ch2=0;}if(ch2>15){ch2=15;}}
void ch3_conf(){if(ch3<0){ch3=0;}if(ch3>15){ch3=15;}}
void ch4_conf(){if(ch4<0){ch4=0;}if(ch4>15){ch4=15;}}
void ch5_conf(){if(ch5<0){ch5=0;}if(ch5>15){ch5=15;}}
void ch6_conf(){if(ch6<0){ch6=0;}if(ch6>15){ch6=15;}}
void vol_func(){if(vol<0){vol=0;}if(vol>64){vol=64;}}
void to_Timer(){newPosition = myEnc.read()/4;}
void cl(){myOLED.clrScr();ir.value=0;delay(200);}
void audio(){
pt.clear();
// pt.setVolume(75); // int 0...79
pt.setVol1(79-(vol+ch1)); // int 0...79
pt.setVol2(79-(vol+ch2)); // int 0...79
pt.setVol3(79-(vol+ch3)); // int 0...79
pt.setVol4(79-(vol+ch4)); // int 0...79
pt.setVol5(79-(vol+ch5)); // int 0...79
pt.setVol6(79-(vol+ch6)); // int 0...79
pt.setMute(mute); // mute 0 - off / 1 - on
}
Александр, отличая работа. Только я не могу опробовать на усилителе. Выпаял с центра , и сабвуфура микросхему ум, на контроллере проверю. А мс ум , только к концу недели привезут. Я в отдаленном поселке живу. Как все проверю отпишусь.
Добрый день Александр. Собрал, все работает практически идеально. Правда убрал кнопки, энкодер и часы, посчитали с сыном что это лишнее для нас. отлично управляется с пульта, но с пульта выключает но не вулючает приходится выключать питание. И регулировка атюнюатора есть не совпадение , не понял почему но фронт оба канала совпадают RF=Att RF LF=Att LF. А далее идет не совпадение Centr=Att RR Sub=Att LR , LR=Att Sub , RR=Att Cen. Для меня это не критично , если только кто то повторять будет, будут мучаться.
Завтра соберу схему посмотрю почему не включается с пульта, а так же поправлю названия выходов. Опубликуйте скетч с Вашими исправлениями.
Добрый день. Александр скетч скину чуть позже. Я не дома. Сын если найдет в моем бедламе, то скину сегодня. Вообще в вашем скетче только адреса ик пульта менял, и инверсию стандби как вы рекомендовали
#define POWER 0xFFA25D
#define DW 0xFFA857
#define UP 0xFFE01F
#define MUT 0xFFE21D
#define SET 0xFFC23D
#define IN 0xFF22DD
#include <Wire.h>
#include <OLED_I2C.h> // http://rcl-radio.ru/wp-content/uploads/ … ED_I2C.zip
#include <Encoder.h> // http://rcl-radio.ru/wp-content/uploads/ … ncoder.zip
#include <EEPROM.h>
#include <MsTimer2.h> // http://rcl-radio.ru/wp-content/uploads/ … Timer2.zip
#include <boarddefs.h> // входит в состав библиотеки IRremote
#include <IRremote.h> // http://rcl-radio.ru/wp-content/uploads/ … remote.zip
#include <PT2258.h> // https://github.com/liman324/PT2258.git
#include <DS3231.h> // http://rcl-radio.ru/wp-content/uploads/ … DS3231.zip
PT2258 pt;
DS3231 clock;RTCDateTime DateTime;
OLED myOLED(SDA, SCL, 8);
extern uint8_t SmallFont[],BigNumbers[];
IRrecv irrecv(12); // указываем вывод модуля IR приемника
Encoder myEnc(9, 8);// DT, CLK
decode_results ir;
unsigned long times,oldPosition = -999,newPosition;
int vol,ch1,ch2,ch3,ch4,ch5,ch6,menu,mute,in;
bool w,w2,gr1,gr2,power;
int hour,minut,secon,old_sec;
byte a[6];
void setup(){
Wire.begin();
Wire.setClock(400000L);
Serial.begin(9600);
irrecv.enableIRIn();
myOLED.begin();
myOLED.setBrightness(100);
pinMode(10,INPUT); // MUTE КНОПКА SW энкодера
pinMode(2,INPUT_PULLUP); // КНОПКА SET
pinMode(3,INPUT_PULLUP); // КНОПКА INPUT
pinMode(4,INPUT_PULLUP); // КНОПКА POWER
pinMode(5,OUTPUT); // Выход управления STANDBY усилителя
pinMode(A0,OUTPUT);pinMode(A1,OUTPUT); pinMode(A2,OUTPUT);
MsTimer2::set(3, to_Timer);MsTimer2::start();
if(EEPROM.read(100)!=0){for(int i=0;i<101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении
myOLED.clrScr();
myOLED.setFont(SmallFont);
myOLED.print(F("Sound Processors"), CENTER, 10);
myOLED.print(F("PT2258"), CENTER, 30);
myOLED.update();
delay(2000);
vol = EEPROM.read(0);ch1 = EEPROM.read(1);ch2 = EEPROM.read(2);ch3 = EEPROM.read(3);
ch4 = EEPROM.read(4);ch5 = EEPROM.read(5);ch6 = EEPROM.read(6);
audio();
}
void loop(){
////////////////////////////////// IR ////////////////////////////////////////
if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);irrecv.resume();times=millis();w=1;w2=1;}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта
///////// BUTTON /////////////////////////////////////////////////////////////
if(power==0){
if((digitalRead(10)==LOW||ir.value==MUT)&&mute==0){mute=1;w=1;menu=100;cl();audio();myOLED.clrScr();myOLED.setFont(SmallFont);myOLED.print(F("MUTE"), CENTER, 25);myOLED.update();}
if((digitalRead(10)==LOW||ir.value==MUT)&&mute==1){mute=0;w=1;menu=0;cl();audio();}
if(digitalRead(3)==LOW||ir.value==IN){in++;if(in>2){in=0;}times=millis();w=1;w2=1;cl();}
if(digitalRead(2)==LOW||ir.value==SET){menu++;if(menu>6){menu=0;}times=millis();w=1;w2=1;cl();}
}
///////////// INPUT ///////////////////
switch(in){
case 0: digitalWrite(A0,LOW); digitalWrite(A1,LOW);digitalWrite(A2,LOW);break;// mp3
case 1: digitalWrite(A0,LOW); digitalWrite(A1,HIGH);digitalWrite(A2,LOW);break;// cd
case 2: digitalWrite(A0,HIGH); digitalWrite(A1,HIGH);digitalWrite(A2,HIGH);break;// ac-3
}
/// POWER ////////////////////////////////////
if(((digitalRead(4)==LOW||ir.value==POWER)&&digitalRead(10)==HIGH)&&power==0){power=1;menu=100;myOLED.setBrightness(1);cl();myEnc.write(0);mute=1;
myOLED.clrScr();myOLED.setFont(SmallFont);myOLED.print(F("POWER OFF"), CENTER, 10);myOLED.update();
audio();delay(2000);cl();}
if(((digitalRead(4)==LOW||ir.value==POWER)&&digitalRead(10)==HIGH)&&power==1&&digitalRead(10)==HIGH){power=0;menu=0;myOLED.setBrightness(100);cl();myEnc.write(0);mute=0;w=1;
myOLED.clrScr();myOLED.setFont(SmallFont);myOLED.print(F("POWER ON"), CENTER, 10);myOLED.update();
audio();delay(2000);cl();}
/// standby output
if(power==0){digitalWrite(5,LOW);}else{digitalWrite(5,HIGH);}
//////// VOLUME //////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==0){
if(newPosition != oldPosition){oldPosition = newPosition;vol=vol-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;vol_func();audio();}
if(ir.value==DW){vol--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;vol_func();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){vol--;gr2=0;cl();times=millis();w=1;w2=1;vol_func();audio();}// кнопка >>>>>>
if(ir.value==UP){vol++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;vol_func();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){vol++;gr1=0;cl();times=millis();w=1;w2=1;vol_func();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("VOLUME"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(64-vol, 75, 0);
switch(in){
case 0: myOLED.setFont(SmallFont);myOLED.print(F("MP3 "), LEFT, 20);break;
case 1: myOLED.setFont(SmallFont);myOLED.print(F("CD "), LEFT, 20);break;
case 2: myOLED.setFont(SmallFont);myOLED.print(F("AC-3"), LEFT, 20);break;
}
myOLED.drawLine(0, 30, 128, 30);
myOLED.setFont(SmallFont);myOLED.print(F("LF"), LEFT, 35);myOLED.printNumI(-ch1, 40, 35);
myOLED.setFont(SmallFont);myOLED.print(F("RF"), 70, 35);myOLED.printNumI(-ch2, 110, 35);
myOLED.setFont(SmallFont);myOLED.print(F("LR"), LEFT, 45);myOLED.printNumI(-ch3, 40, 45);
myOLED.setFont(SmallFont);myOLED.print(F("RR"), 70, 45);myOLED.printNumI(-ch4, 110, 45);
myOLED.setFont(SmallFont);myOLED.print(F("CEN"), LEFT, 55);myOLED.printNumI(-ch5, 40, 55);
myOLED.setFont(SmallFont);myOLED.print(F("SUB"), 70, 55);myOLED.printNumI(-ch6, 110, 55);
myOLED.update();
}}
//////// ATT LF //////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==1){
if(newPosition != oldPosition){oldPosition = newPosition;ch1=ch1-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ch1_conf();audio();}
if(ir.value==DW){ch1--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ch1_conf();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){ch1--;gr2=0;cl();times=millis();w=1;w2=1;ch1_conf();audio();}// кнопка >>>>>>
if(ir.value==UP){ch1++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ch1_conf();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){ch1++;gr1=0;cl();times=millis();w=1;w2=1;ch1_conf();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("ATT_LF"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(-ch1, 65, 0);
myOLED.setFont(SmallFont);myOLED.print(F("dB"), RIGHT, 20);
myOLED.update();
}}
//////// ATT RF //////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==2){
if(newPosition != oldPosition){oldPosition = newPosition;ch2=ch2-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ch2_conf();audio();}
if(ir.value==DW){ch2--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ch2_conf();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){ch2--;gr2=0;cl();times=millis();w=1;w2=1;ch2_conf();audio();}// кнопка >>>>>>
if(ir.value==UP){ch2++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ch2_conf();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){ch2++;gr1=0;cl();times=millis();w=1;w2=1;ch2_conf();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("ATT_RF"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(-ch2, 65, 0);
myOLED.setFont(SmallFont);myOLED.print(F("dB"), RIGHT, 20);
myOLED.update();
}}
//////// ATT LR //////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==3){
if(newPosition != oldPosition){oldPosition = newPosition;ch3=ch3-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ch3_conf();audio();}
if(ir.value==DW){ch3--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ch3_conf();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){ch3--;gr2=0;cl();times=millis();w=1;w2=1;ch3_conf();audio();}// кнопка >>>>>>
if(ir.value==UP){ch3++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ch3_conf();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){ch3++;gr1=0;cl();times=millis();w=1;w2=1;ch3_conf();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("ATT_LR"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(-ch3, 65, 0);
myOLED.setFont(SmallFont);myOLED.print(F("dB"), RIGHT, 20);
myOLED.update();
}}
//////// ATT RR //////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==4){
if(newPosition != oldPosition){oldPosition = newPosition;ch4=ch4-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ch4_conf();audio();}
if(ir.value==DW){ch4--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ch4_conf();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){ch4--;gr2=0;cl();times=millis();w=1;w2=1;ch4_conf();audio();}// кнопка >>>>>>
if(ir.value==UP){ch4++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ch4_conf();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){ch4++;gr1=0;cl();times=millis();w=1;w2=1;ch4_conf();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("ATT_RR"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(-ch4, 65, 0);
myOLED.setFont(SmallFont);myOLED.print(F("dB"), RIGHT, 20);
myOLED.update();
}}
//////// ATT CEN//////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==5){
if(newPosition != oldPosition){oldPosition = newPosition;ch5=ch5-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ch5_conf();audio();}
if(ir.value==DW){ch5--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ch5_conf();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){ch5--;gr2=0;cl();times=millis();w=1;w2=1;ch5_conf();audio();}// кнопка >>>>>>
if(ir.value==UP){ch5++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ch5_conf();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){ch5++;gr1=0;cl();times=millis();w=1;w2=1;ch5_conf();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("ATT_CEN"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(-ch5, 65, 0);
myOLED.setFont(SmallFont);myOLED.print(F("dB"), RIGHT, 20);
myOLED.update();
}}
//////// ATT SUB //////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==6){
if(newPosition != oldPosition){oldPosition = newPosition;ch6=ch6-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ch6_conf();audio();}
if(ir.value==DW){ch6--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ch6_conf();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){ch6--;gr2=0;cl();times=millis();w=1;w2=1;ch6_conf();audio();}// кнопка >>>>>>
if(ir.value==UP){ch6++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ch6_conf();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){ch6++;gr1=0;cl();times=millis();w=1;w2=1;ch6_conf();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("ATT_SUB"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(-ch6, 65, 0);
myOLED.setFont(SmallFont);myOLED.print(F("dB"), RIGHT, 20);
myOLED.update();
}}
/////////////////// ЧАСЫ ///////////////////////////////////////////////////////////////////
if(power==1){
DateTime = clock.getDateTime();hour = DateTime.hour;minut = DateTime.minute;secon = DateTime.second;
a[0]=hour/10;
a[1]=hour%10;
a[2]=minut/10;
a[3]=minut%10;
a[4]=secon/10;
a[5]=secon%10;
if(old_sec!=secon){
myOLED.clrScr();
myOLED.setFont(BigNumbers);myOLED.printNumI(a[0], 15, 5);myOLED.printNumI(a[1], 30, 5);
myOLED.setFont(SmallFont);myOLED.print(F(":"), 45, 15);
myOLED.setFont(BigNumbers);myOLED.printNumI(a[2], 50, 5);myOLED.printNumI(a[3], 65, 5);
myOLED.setFont(SmallFont);myOLED.print(F(":"), 80, 15);
myOLED.setFont(BigNumbers);myOLED.printNumI(a[4], 85, 5);myOLED.printNumI(a[5], 100, 5);
myOLED.setFont(SmallFont);myOLED.print(F("POWER OFF"), CENTER, 45);
myOLED.update();
}
old_sec=secon;
//// set time ////
if(digitalRead(10)==LOW&&digitalRead(2)==LOW){hour++;if(hour>23){hour=0;} clock.setDateTime(2022, 11, 4, hour, minut, secon);delay(300);}// SET button HH++
if(digitalRead(10)==LOW&&digitalRead(4)==LOW){minut++;if(minut>59){minut=0;} clock.setDateTime(2022, 11, 4, hour, minut, secon);delay(300);}// POWER MM++
}
////////////////// EEPROM //////////////////////////////////////////////////////////////
if(millis()-times>5000 && w2==1 && mute==0){
EEPROM.update(0,vol);EEPROM.update(1,ch1);EEPROM.update(2,ch2);EEPROM.update(3,ch3);
EEPROM.update(4,ch4);EEPROM.update(5,ch5);EEPROM.update(6,ch6);
cl();menu=0;w2=0;w=1;}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
} // end loop
void ch1_conf(){if(ch1<0){ch1=0;}if(ch1>15){ch1=15;}}
void ch2_conf(){if(ch2<0){ch2=0;}if(ch2>15){ch2=15;}}
void ch3_conf(){if(ch3<0){ch3=0;}if(ch3>15){ch3=15;}}
void ch4_conf(){if(ch4<0){ch4=0;}if(ch4>15){ch4=15;}}
void ch5_conf(){if(ch5<0){ch5=0;}if(ch5>15){ch5=15;}}
void ch6_conf(){if(ch6<0){ch6=0;}if(ch6>15){ch6=15;}}
void vol_func(){if(vol<0){vol=0;}if(vol>64){vol=64;}}
void to_Timer(){newPosition = myEnc.read()/4;}
void cl(){myOLED.clrScr();ir.value=0;delay(200);}
void audio(){
pt.clear();
// pt.setVolume(75); // int 0...79
pt.setVol1(79-(vol+ch1)); // int 0...79
pt.setVol2(79-(vol+ch2)); // int 0...79
pt.setVol3(79-(vol+ch3)); // int 0...79
pt.setVol4(79-(vol+ch4)); // int 0...79
pt.setVol5(79-(vol+ch5)); // int 0...79
pt.setVol6(79-(vol+ch6)); // int 0...79
pt.setMute(mute); // mute 0 - off / 1 - on
}
Я поправил скетч, изменил названия в аттенюаторах, убрал из скетча код часов. Нельзя просто убрать модуль часов, код программы его опрашивает, поэтому вероятней всего при выключении программа зависала.
#define POWER 0xFFA25D
#define DW 0xFFA857
#define UP 0xFFE01F
#define MUT 0xFFE21D
#define SET 0xFFC23D
#define IN 0xFF22DD
//#define POWER 0x2FD00FF
#include <Wire.h>
#include <OLED_I2C.h> // http://rcl-radio.ru/wp-content/uploads/ … ED_I2C.zip
#include <Encoder.h> // http://rcl-radio.ru/wp-content/uploads/ … ncoder.zip
#include <EEPROM.h>
#include <MsTimer2.h> // http://rcl-radio.ru/wp-content/uploads/ … Timer2.zip
#include <boarddefs.h> // входит в состав библиотеки IRremote
#include <IRremote.h> // http://rcl-radio.ru/wp-content/uploads/ … remote.zip
#include <PT2258.h> // https://github.com/liman324/PT2258.git
PT2258 pt;
OLED myOLED(SDA, SCL, 8);
extern uint8_t SmallFont[],BigNumbers[];
IRrecv irrecv(12); // указываем вывод модуля IR приемника
Encoder myEnc(9, 8);// DT, CLK
decode_results ir;
unsigned long times,oldPosition = -999,newPosition;
int vol,ch1,ch2,ch3,ch4,ch5,ch6,menu,mute,in;
bool w,w2,gr1,gr2,power;
byte a[6];
void setup(){
Wire.begin();
Wire.setClock(400000L);
Serial.begin(9600);
irrecv.enableIRIn();
myOLED.begin();
myOLED.setBrightness(100);
pinMode(10,INPUT); // MUTE КНОПКА SW энкодера
pinMode(2,INPUT_PULLUP); // КНОПКА SET
pinMode(3,INPUT_PULLUP); // КНОПКА INPUT
pinMode(4,INPUT_PULLUP); // КНОПКА POWER
pinMode(5,OUTPUT); // Выход управления STANDBY усилителя
pinMode(A0,OUTPUT);pinMode(A1,OUTPUT); pinMode(A2,OUTPUT);
MsTimer2::set(3, to_Timer);MsTimer2::start();
if(EEPROM.read(100)!=0){for(int i=0;i<101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении
myOLED.clrScr();
myOLED.setFont(SmallFont);
myOLED.print(F("Sound Processors"), CENTER, 10);
myOLED.print(F("PT2258"), CENTER, 30);
myOLED.update();
delay(2000);
vol = EEPROM.read(0);ch1 = EEPROM.read(1);ch2 = EEPROM.read(2);ch3 = EEPROM.read(3);
ch4 = EEPROM.read(4);ch5 = EEPROM.read(5);ch6 = EEPROM.read(6);
audio();
}
void loop(){
////////////////////////////////// IR ////////////////////////////////////////
if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);irrecv.resume();times=millis();w=1;w2=1;}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта
///////// BUTTON /////////////////////////////////////////////////////////////
if(power==0){
if((digitalRead(10)==LOW||ir.value==MUT)&&mute==0){mute=1;w=1;menu=100;cl();audio();myOLED.clrScr();myOLED.setFont(SmallFont);myOLED.print(F("MUTE"), CENTER, 25);myOLED.update();}
if((digitalRead(10)==LOW||ir.value==MUT)&&mute==1){mute=0;w=1;menu=0;cl();audio();}
if(digitalRead(3)==LOW||ir.value==IN){in++;if(in>2){in=0;}times=millis();w=1;w2=1;cl();}
if(digitalRead(2)==LOW||ir.value==SET){menu++;if(menu>6){menu=0;}times=millis();w=1;w2=1;cl();}
}
///////////// INPUT ///////////////////
switch(in){
case 0: digitalWrite(A0,LOW); digitalWrite(A1,LOW);digitalWrite(A2,LOW);break;// mp3
case 1: digitalWrite(A0,LOW); digitalWrite(A1,HIGH);digitalWrite(A2,LOW);break;// cd
case 2: digitalWrite(A0,HIGH); digitalWrite(A1,HIGH);digitalWrite(A2,HIGH);break;// ac-3
}
/// POWER ////////////////////////////////////
if(((digitalRead(4)==LOW||ir.value==POWER)&&digitalRead(10)==HIGH)&&power==0){power=1;menu=100;myOLED.setBrightness(1);cl();myEnc.write(0);mute=1;
myOLED.clrScr();myOLED.setFont(SmallFont);myOLED.print(F("POWER OFF"), CENTER, 10);myOLED.update();
audio();delay(2000);cl();}
if(((digitalRead(4)==LOW||ir.value==POWER)&&digitalRead(10)==HIGH)&&power==1&&digitalRead(10)==HIGH){power=0;menu=0;myOLED.setBrightness(100);cl();myEnc.write(0);mute=0;w=1;
myOLED.clrScr();myOLED.setFont(SmallFont);myOLED.print(F("POWER ON"), CENTER, 10);myOLED.update();
audio();delay(2000);cl();}
/// standby output
if(power==0){digitalWrite(5,LOW);}else{digitalWrite(5,HIGH);}
//////// VOLUME //////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==0){
if(newPosition != oldPosition){oldPosition = newPosition;vol=vol-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;vol_func();audio();}
if(ir.value==DW){vol--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;vol_func();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){vol--;gr2=0;cl();times=millis();w=1;w2=1;vol_func();audio();}// кнопка >>>>>>
if(ir.value==UP){vol++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;vol_func();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){vol++;gr1=0;cl();times=millis();w=1;w2=1;vol_func();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("VOLUME"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(64-vol, 75, 0);
switch(in){
case 0: myOLED.setFont(SmallFont);myOLED.print(F("MP3 "), LEFT, 20);break;
case 1: myOLED.setFont(SmallFont);myOLED.print(F("CD "), LEFT, 20);break;
case 2: myOLED.setFont(SmallFont);myOLED.print(F("AC-3"), LEFT, 20);break;
}
myOLED.drawLine(0, 30, 128, 30);
myOLED.setFont(SmallFont);myOLED.print(F("LF"), LEFT, 35);myOLED.printNumI(-ch1, 40, 35);
myOLED.setFont(SmallFont);myOLED.print(F("RF"), 70, 35);myOLED.printNumI(-ch2, 110, 35);
myOLED.setFont(SmallFont);myOLED.print(F("CEN"), LEFT, 45);myOLED.printNumI(-ch3, 40, 45);
myOLED.setFont(SmallFont);myOLED.print(F("SUB"), 70, 45);myOLED.printNumI(-ch4, 110, 45);
myOLED.setFont(SmallFont);myOLED.print(F("LR"), LEFT, 55);myOLED.printNumI(-ch5, 40, 55);
myOLED.setFont(SmallFont);myOLED.print(F("RR"), 70, 55);myOLED.printNumI(-ch6, 110, 55);
myOLED.update();
}}
//////// ATT LF //////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==1){
if(newPosition != oldPosition){oldPosition = newPosition;ch1=ch1-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ch1_conf();audio();}
if(ir.value==DW){ch1--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ch1_conf();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){ch1--;gr2=0;cl();times=millis();w=1;w2=1;ch1_conf();audio();}// кнопка >>>>>>
if(ir.value==UP){ch1++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ch1_conf();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){ch1++;gr1=0;cl();times=millis();w=1;w2=1;ch1_conf();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("ATT_LF"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(-ch1, 65, 0);
myOLED.setFont(SmallFont);myOLED.print(F("dB"), RIGHT, 20);
myOLED.update();
}}
//////// ATT RF //////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==2){
if(newPosition != oldPosition){oldPosition = newPosition;ch2=ch2-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ch2_conf();audio();}
if(ir.value==DW){ch2--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ch2_conf();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){ch2--;gr2=0;cl();times=millis();w=1;w2=1;ch2_conf();audio();}// кнопка >>>>>>
if(ir.value==UP){ch2++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ch2_conf();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){ch2++;gr1=0;cl();times=millis();w=1;w2=1;ch2_conf();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("ATT_RF"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(-ch2, 65, 0);
myOLED.setFont(SmallFont);myOLED.print(F("dB"), RIGHT, 20);
myOLED.update();
}}
//////// ATT LR //////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==3){
if(newPosition != oldPosition){oldPosition = newPosition;ch3=ch3-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ch3_conf();audio();}
if(ir.value==DW){ch3--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ch3_conf();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){ch3--;gr2=0;cl();times=millis();w=1;w2=1;ch3_conf();audio();}// кнопка >>>>>>
if(ir.value==UP){ch3++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ch3_conf();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){ch3++;gr1=0;cl();times=millis();w=1;w2=1;ch3_conf();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("ATT_LR"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(-ch3, 65, 0);
myOLED.setFont(SmallFont);myOLED.print(F("dB"), RIGHT, 20);
myOLED.update();
}}
//////// ATT RR //////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==4){
if(newPosition != oldPosition){oldPosition = newPosition;ch4=ch4-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ch4_conf();audio();}
if(ir.value==DW){ch4--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ch4_conf();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){ch4--;gr2=0;cl();times=millis();w=1;w2=1;ch4_conf();audio();}// кнопка >>>>>>
if(ir.value==UP){ch4++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ch4_conf();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){ch4++;gr1=0;cl();times=millis();w=1;w2=1;ch4_conf();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("ATT_RR"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(-ch4, 65, 0);
myOLED.setFont(SmallFont);myOLED.print(F("dB"), RIGHT, 20);
myOLED.update();
}}
//////// ATT CEN//////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==5){
if(newPosition != oldPosition){oldPosition = newPosition;ch5=ch5-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ch5_conf();audio();}
if(ir.value==DW){ch5--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ch5_conf();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){ch5--;gr2=0;cl();times=millis();w=1;w2=1;ch5_conf();audio();}// кнопка >>>>>>
if(ir.value==UP){ch5++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ch5_conf();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){ch5++;gr1=0;cl();times=millis();w=1;w2=1;ch5_conf();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("ATT_CEN"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(-ch5, 65, 0);
myOLED.setFont(SmallFont);myOLED.print(F("dB"), RIGHT, 20);
myOLED.update();
}}
//////// ATT SUB //////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==6){
if(newPosition != oldPosition){oldPosition = newPosition;ch6=ch6-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ch6_conf();audio();}
if(ir.value==DW){ch6--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ch6_conf();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){ch6--;gr2=0;cl();times=millis();w=1;w2=1;ch6_conf();audio();}// кнопка >>>>>>
if(ir.value==UP){ch6++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ch6_conf();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){ch6++;gr1=0;cl();times=millis();w=1;w2=1;ch6_conf();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("ATT_SUB"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(-ch6, 65, 0);
myOLED.setFont(SmallFont);myOLED.print(F("dB"), RIGHT, 20);
myOLED.update();
}}
////////////////// EEPROM //////////////////////////////////////////////////////////////
if(millis()-times>5000 && w2==1 && mute==0){
EEPROM.update(0,vol);EEPROM.update(1,ch1);EEPROM.update(2,ch2);EEPROM.update(3,ch3);
EEPROM.update(4,ch4);EEPROM.update(5,ch5);EEPROM.update(6,ch6);
cl();menu=0;w2=0;w=1;}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
} // end loop
void ch1_conf(){if(ch1<0){ch1=0;}if(ch1>15){ch1=15;}}
void ch2_conf(){if(ch2<0){ch2=0;}if(ch2>15){ch2=15;}}
void ch3_conf(){if(ch3<0){ch3=0;}if(ch3>15){ch3=15;}}
void ch4_conf(){if(ch4<0){ch4=0;}if(ch4>15){ch4=15;}}
void ch5_conf(){if(ch5<0){ch5=0;}if(ch5>15){ch5=15;}}
void ch6_conf(){if(ch6<0){ch6=0;}if(ch6>15){ch6=15;}}
void vol_func(){if(vol<0){vol=0;}if(vol>64){vol=64;}}
void to_Timer(){newPosition = myEnc.read()/4;}
void cl(){myOLED.clrScr();ir.value=0;delay(200);}
void audio(){
pt.clear();
// pt.setVolume(75); // int 0...79
pt.setVol1(79-(vol+ch1)); // int 0...79
pt.setVol2(79-(vol+ch2)); // int 0...79
pt.setVol3(79-(vol+ch3)); // int 0...79
pt.setVol4(79-(vol+ch4)); // int 0...79
pt.setVol5(79-(vol+ch5)); // int 0...79
pt.setVol6(79-(vol+ch6)); // int 0...79
pt.setMute(mute); // mute 0 - off / 1 - on
}
Спасибо. Завтра наверное доберусь до дома, загружу. Отпишусь по результатам.
Добрый день Александр. Залил прошивку без часов. Вкл выкл питания с пульта работает. А вот аттенюатор остался так же. Мне это не принципиально. Это если Вам так принципиально то давайте будем доделывать. Я тогда не буду производить окончательную сборку. И я не в курсе в каком вы регионе живете, возможно у нас разница по времени , а я вам надоедаю. Я сам в Иркутской области.
И сегодня с Вашим сайтом были проблемы. Не мог зайти.
До четверга я буду на месте , потом опять отлучусь не известно на какое время, но сам расчитываю до понедельника. Приходится в город в больничку мотаться
А вот аттенюатор остался так же.
Попробуйте поменять местами названия входов, я поменял, но похоже не правильно:
myOLED.setFont(SmallFont);myOLED.print(F("LF"), LEFT, 35);myOLED.printNumI(-ch1, 40, 35);
myOLED.setFont(SmallFont);myOLED.print(F("RF"), 70, 35);myOLED.printNumI(-ch2, 110, 35);
myOLED.setFont(SmallFont);myOLED.print(F("CEN"), LEFT, 45);myOLED.printNumI(-ch3, 40, 45);
myOLED.setFont(SmallFont);myOLED.print(F("SUB"), 70, 45);myOLED.printNumI(-ch4, 110, 45);
myOLED.setFont(SmallFont);myOLED.print(F("LR"), LEFT, 55);myOLED.printNumI(-ch5, 40, 55);
myOLED.setFont(SmallFont);myOLED.print(F("RR"), 70, 55);myOLED.printNumI(-ch6, 110, 55);
И сегодня с Вашим сайтом были проблемы. Не мог зайти.
Сервер завис пока я был на работе
И я не в курсе в каком вы регионе живете,
Омск
Александр. Я так понял вот эти функции отвечают за отображение информации на экране?
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("ATT_SUB"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(-ch6, 65, 0);
myOLED.setFont(SmallFont);myOLED.print(F("dB"), RIGHT, 20);
myOLED.update();
}}
тоесть если эту функцию ("ATT_SUB") поменять местами с ("ATT_LR") то отображение на экране аттюнюатора и его действие должны будут совпась? Я в програмировании полный нол, чисто аналитически размышляю. научиться не смогу потому что проблемы с памятью мне приходится каждый раз все заново начинать. моя пзу разрушается болезнью. занимаюсь просто чтобы в овощь не превратиться. Извините за тупые вопросы
Я поправил скетч:
#define POWER 0xFFA25D
#define DW 0xFFA857
#define UP 0xFFE01F
#define MUT 0xFFE21D
#define SET 0xFFC23D
#define IN 0xFF22DD
//#define POWER 0x2FD00FF
#include <Wire.h>
#include <OLED_I2C.h> // http://rcl-radio.ru/wp-content/uploads/ … ED_I2C.zip
#include <Encoder.h> // http://rcl-radio.ru/wp-content/uploads/ … ncoder.zip
#include <EEPROM.h>
#include <MsTimer2.h> // http://rcl-radio.ru/wp-content/uploads/ … Timer2.zip
#include <boarddefs.h> // входит в состав библиотеки IRremote
#include <IRremote.h> // http://rcl-radio.ru/wp-content/uploads/ … remote.zip
#include <PT2258.h> // https://github.com/liman324/PT2258.git
PT2258 pt;
OLED myOLED(SDA, SCL, 8);
extern uint8_t SmallFont[],BigNumbers[];
IRrecv irrecv(12); // указываем вывод модуля IR приемника
Encoder myEnc(9, 8);// DT, CLK
decode_results ir;
unsigned long times,oldPosition = -999,newPosition;
int vol,ch1,ch2,ch3,ch4,ch5,ch6,menu,mute,in;
bool w,w2,gr1,gr2,power;
byte a[6];
void setup(){
Wire.begin();
Wire.setClock(400000L);
Serial.begin(9600);
irrecv.enableIRIn();
myOLED.begin();
myOLED.setBrightness(100);
pinMode(10,INPUT); // MUTE КНОПКА SW энкодера
pinMode(2,INPUT_PULLUP); // КНОПКА SET
pinMode(3,INPUT_PULLUP); // КНОПКА INPUT
pinMode(4,INPUT_PULLUP); // КНОПКА POWER
pinMode(5,OUTPUT); // Выход управления STANDBY усилителя
pinMode(A0,OUTPUT);pinMode(A1,OUTPUT); pinMode(A2,OUTPUT);
MsTimer2::set(3, to_Timer);MsTimer2::start();
if(EEPROM.read(100)!=0){for(int i=0;i<101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении
myOLED.clrScr();
myOLED.setFont(SmallFont);
myOLED.print(F("Sound Processors"), CENTER, 10);
myOLED.print(F("PT2258"), CENTER, 30);
myOLED.update();
delay(2000);
vol = EEPROM.read(0);ch1 = EEPROM.read(1);ch2 = EEPROM.read(2);ch3 = EEPROM.read(3);
ch4 = EEPROM.read(4);ch5 = EEPROM.read(5);ch6 = EEPROM.read(6);
audio();
}
void loop(){
////////////////////////////////// IR ////////////////////////////////////////
if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);irrecv.resume();times=millis();w=1;w2=1;}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
if(ir.value==0){gr1=0;gr2=0;}// запрет нажатий не активных кнопок пульта
///////// BUTTON /////////////////////////////////////////////////////////////
if(power==0){
if((digitalRead(10)==LOW||ir.value==MUT)&&mute==0){mute=1;w=1;menu=100;cl();audio();myOLED.clrScr();myOLED.setFont(SmallFont);myOLED.print(F("MUTE"), CENTER, 25);myOLED.update();}
if((digitalRead(10)==LOW||ir.value==MUT)&&mute==1){mute=0;w=1;menu=0;cl();audio();}
if(digitalRead(3)==LOW||ir.value==IN){in++;if(in>2){in=0;}times=millis();w=1;w2=1;cl();}
if(digitalRead(2)==LOW||ir.value==SET){menu++;if(menu>6){menu=0;}times=millis();w=1;w2=1;cl();}
}
///////////// INPUT ///////////////////
switch(in){
case 0: digitalWrite(A0,LOW); digitalWrite(A1,LOW);digitalWrite(A2,LOW);break;// mp3
case 1: digitalWrite(A0,LOW); digitalWrite(A1,HIGH);digitalWrite(A2,LOW);break;// cd
case 2: digitalWrite(A0,HIGH); digitalWrite(A1,HIGH);digitalWrite(A2,HIGH);break;// ac-3
}
/// POWER ////////////////////////////////////
if(((digitalRead(4)==LOW||ir.value==POWER)&&digitalRead(10)==HIGH)&&power==0){power=1;menu=100;myOLED.setBrightness(1);cl();myEnc.write(0);mute=1;
myOLED.clrScr();myOLED.setFont(SmallFont);myOLED.print(F("POWER OFF"), CENTER, 10);myOLED.update();
audio();delay(2000);cl();}
if(((digitalRead(4)==LOW||ir.value==POWER)&&digitalRead(10)==HIGH)&&power==1&&digitalRead(10)==HIGH){power=0;menu=0;myOLED.setBrightness(100);cl();myEnc.write(0);mute=0;w=1;
myOLED.clrScr();myOLED.setFont(SmallFont);myOLED.print(F("POWER ON"), CENTER, 10);myOLED.update();
audio();delay(2000);cl();}
/// standby output
if(power==0){digitalWrite(5,LOW);}else{digitalWrite(5,HIGH);}
//////// VOLUME //////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==0){
if(newPosition != oldPosition){oldPosition = newPosition;vol=vol-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;vol_func();audio();}
if(ir.value==DW){vol--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;vol_func();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){vol--;gr2=0;cl();times=millis();w=1;w2=1;vol_func();audio();}// кнопка >>>>>>
if(ir.value==UP){vol++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;vol_func();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){vol++;gr1=0;cl();times=millis();w=1;w2=1;vol_func();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("VOLUME"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(64-vol, 75, 0);
switch(in){
case 0: myOLED.setFont(SmallFont);myOLED.print(F("MP3 "), LEFT, 20);break;
case 1: myOLED.setFont(SmallFont);myOLED.print(F("CD "), LEFT, 20);break;
case 2: myOLED.setFont(SmallFont);myOLED.print(F("AC-3"), LEFT, 20);break;
}
myOLED.drawLine(0, 30, 128, 30);
myOLED.setFont(SmallFont);myOLED.print(F("LF"), LEFT, 35);myOLED.printNumI(-ch1, 40, 35);
myOLED.setFont(SmallFont);myOLED.print(F("RF"), 70, 35);myOLED.printNumI(-ch2, 110, 35);
myOLED.setFont(SmallFont);myOLED.print(F("CEN"), LEFT, 45);myOLED.printNumI(-ch3, 40, 45);
myOLED.setFont(SmallFont);myOLED.print(F("SUB"), 70, 45);myOLED.printNumI(-ch4, 110, 45);
myOLED.setFont(SmallFont);myOLED.print(F("LR"), LEFT, 55);myOLED.printNumI(-ch5, 40, 55);
myOLED.setFont(SmallFont);myOLED.print(F("RR"), 70, 55);myOLED.printNumI(-ch6, 110, 55);
myOLED.update();
}}
//////// ATT LF //////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==1){
if(newPosition != oldPosition){oldPosition = newPosition;ch1=ch1-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ch1_conf();audio();}
if(ir.value==DW){ch1--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ch1_conf();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){ch1--;gr2=0;cl();times=millis();w=1;w2=1;ch1_conf();audio();}// кнопка >>>>>>
if(ir.value==UP){ch1++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ch1_conf();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){ch1++;gr1=0;cl();times=millis();w=1;w2=1;ch1_conf();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("ATT_LF"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(-ch1, 65, 0);
myOLED.setFont(SmallFont);myOLED.print(F("dB"), RIGHT, 20);
myOLED.update();
}}
//////// ATT RF //////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==2){
if(newPosition != oldPosition){oldPosition = newPosition;ch2=ch2-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ch2_conf();audio();}
if(ir.value==DW){ch2--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ch2_conf();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){ch2--;gr2=0;cl();times=millis();w=1;w2=1;ch2_conf();audio();}// кнопка >>>>>>
if(ir.value==UP){ch2++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ch2_conf();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){ch2++;gr1=0;cl();times=millis();w=1;w2=1;ch2_conf();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("ATT_RF"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(-ch2, 65, 0);
myOLED.setFont(SmallFont);myOLED.print(F("dB"), RIGHT, 20);
myOLED.update();
}}
//////// ATT CEN //////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==3){
if(newPosition != oldPosition){oldPosition = newPosition;ch3=ch3-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ch3_conf();audio();}
if(ir.value==DW){ch3--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ch3_conf();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){ch3--;gr2=0;cl();times=millis();w=1;w2=1;ch3_conf();audio();}// кнопка >>>>>>
if(ir.value==UP){ch3++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ch3_conf();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){ch3++;gr1=0;cl();times=millis();w=1;w2=1;ch3_conf();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("ATT_CEN"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(-ch3, 65, 0);
myOLED.setFont(SmallFont);myOLED.print(F("dB"), RIGHT, 20);
myOLED.update();
}}
//////// ATT SUB //////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==4){
if(newPosition != oldPosition){oldPosition = newPosition;ch4=ch4-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ch4_conf();audio();}
if(ir.value==DW){ch4--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ch4_conf();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){ch4--;gr2=0;cl();times=millis();w=1;w2=1;ch4_conf();audio();}// кнопка >>>>>>
if(ir.value==UP){ch4++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ch4_conf();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){ch4++;gr1=0;cl();times=millis();w=1;w2=1;ch4_conf();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("ATT_SUB"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(-ch4, 65, 0);
myOLED.setFont(SmallFont);myOLED.print(F("dB"), RIGHT, 20);
myOLED.update();
}}
//////// ATT LR//////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==5){
if(newPosition != oldPosition){oldPosition = newPosition;ch5=ch5-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ch5_conf();audio();}
if(ir.value==DW){ch5--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ch5_conf();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){ch5--;gr2=0;cl();times=millis();w=1;w2=1;ch5_conf();audio();}// кнопка >>>>>>
if(ir.value==UP){ch5++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ch5_conf();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){ch5++;gr1=0;cl();times=millis();w=1;w2=1;ch5_conf();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("ATT_LR"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(-ch5, 65, 0);
myOLED.setFont(SmallFont);myOLED.print(F("dB"), RIGHT, 20);
myOLED.update();
}}
//////// ATT RR //////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(menu==6){
if(newPosition != oldPosition){oldPosition = newPosition;ch6=ch6-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w2=1;ch6_conf();audio();}
if(ir.value==DW){ch6--;gr1=1;gr2=0;cl();times=millis();w=1;w2=1;ch6_conf();audio();}// кнопка >
if(ir.value==0xFFFFFFFF and gr1==1){ch6--;gr2=0;cl();times=millis();w=1;w2=1;ch6_conf();audio();}// кнопка >>>>>>
if(ir.value==UP){ch6++;gr1=0;gr2=1;cl();times=millis();w=1;w2=1;ch6_conf();audio();}// кнопка <
if(ir.value==0xFFFFFFFF and gr2==1){ch6++;gr1=0;cl();times=millis();w=1;w2=1;ch6_conf();audio();}// кнопка <<<<<<
if(w==1){w=0;
myOLED.clrScr();
myOLED.setFont(SmallFont);myOLED.print(F("ATT_RR"), LEFT, 0);myOLED.setFont(BigNumbers);myOLED.printNumI(-ch6, 65, 0);
myOLED.setFont(SmallFont);myOLED.print(F("dB"), RIGHT, 20);
myOLED.update();
}}
////////////////// EEPROM //////////////////////////////////////////////////////////////
if(millis()-times>5000 && w2==1 && mute==0){
EEPROM.update(0,vol);EEPROM.update(1,ch1);EEPROM.update(2,ch2);EEPROM.update(3,ch3);
EEPROM.update(4,ch4);EEPROM.update(5,ch5);EEPROM.update(6,ch6);
cl();menu=0;w2=0;w=1;}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
} // end loop
void ch1_conf(){if(ch1<0){ch1=0;}if(ch1>15){ch1=15;}}
void ch2_conf(){if(ch2<0){ch2=0;}if(ch2>15){ch2=15;}}
void ch3_conf(){if(ch3<0){ch3=0;}if(ch3>15){ch3=15;}}
void ch4_conf(){if(ch4<0){ch4=0;}if(ch4>15){ch4=15;}}
void ch5_conf(){if(ch5<0){ch5=0;}if(ch5>15){ch5=15;}}
void ch6_conf(){if(ch6<0){ch6=0;}if(ch6>15){ch6=15;}}
void vol_func(){if(vol<0){vol=0;}if(vol>64){vol=64;}}
void to_Timer(){newPosition = myEnc.read()/4;}
void cl(){myOLED.clrScr();ir.value=0;delay(200);}
void audio(){
pt.clear();
// pt.setVolume(75); // int 0...79
pt.setVol1(79-(vol+ch1)); // int 0...79
pt.setVol2(79-(vol+ch2)); // int 0...79
pt.setVol3(79-(vol+ch3)); // int 0...79
pt.setVol4(79-(vol+ch4)); // int 0...79
pt.setVol5(79-(vol+ch5)); // int 0...79
pt.setVol6(79-(vol+ch6)); // int 0...79
pt.setMute(mute); // mute 0 - off / 1 - on
}
Сейчас загружу
1.Поменялось переключение входа mp3 c AS3 но это еще с прошивки без часов Вчера 18:59:21 возможно я и не заметил ранее
2.Поменялось в аттенюаторе теперь Attcen регулирует sab. Attsub регулирует cen. Сегодня 21:38:33
forum.rcl-radio.ru → Переделки → PT2258 + OLED 0.96 + encoder + IR
Форум работает на PunBB, при поддержке Informer Technologies, Inc
|