76

Re: PT2323+TDA7448

Все ОК, все работает. А так, навскидку, не подскажете, на 9 и 10 контактах будет шим работать? Может энкодер перекину на другие контакты.

77

Re: PT2323+TDA7448

Вроде как остается пин 6, 9-10 заняты таймером 1, на котором работает ИК датчик

78

Re: PT2323+TDA7448

Еще раз спасибо Вам огромное! Дисплей 1602 слишком большой, не влезает в колонки, а у нас в городе 0802 не продается. Закажу с китая дисплей 0802, буду все переделывать под него, если какие вопросы будут, обращусь)

79

Re: PT2323+TDA7448

Хорошо, если что обращайтесь.

80

Re: PT2323+TDA7448

И снова здравствуйте!

Пришел из поднебесной дисплейчик 0802, переделал под него немного оформление. Как получилось, так получиось) Все-таки 8 символов маловато. В процессе переделок и эксплуатации появилось несколько вопросов:

1.Не получается сделать красиво вывод величины аттенюатора по каналам. Когда значение -20 меняется на значение ближе к нулю, то лишние цифры не пропадают. Как мог сделал для первого канала FL, но все равно отображение "dB" как бы в полнакала, остальные каналы не трогал - там при регулировке остаются лишние цифры (как будто не обновляются - да и с чего бы))
2.У меню ATTENUAT какой-то сильный приоритет - оно само исчезает через 10 секунд, но если, например, нажать кнопку Input Sel с пульта, то тоже происходит наложение одних симовлов на другие
3.Придумал как задействовать кнопку Reset с пульта - можно сделать чтобы экран возвращался в изначальный режим отображения громкости (например быстрый выход из режима ATTENUAT)
4.Нелогично переключать входы с пульта - получается нажатием кнопки Input Sel мы попадаем в меню выбора входа, а кнопками Vol+/- переключаем их. Логично сделать чтобы повторное нажатие кнопки Input Sel переключало входы по кругу.

Итоговый на данный момент скетч:

#define IR_8 0xFF21DE // Кнопка MENU (Input Sel)
#define IR_3 0xFF09F6 // Кнопка > (Vol+)
#define IR_4 0xFF29D6 // Кнопка < (Vol-)
#define MUTE 0xFF41BE // Кнопка MUTE
#define MODE 0xFF619E // Кнопка MODE
#define IR_5 0xFF8976 // Кнопка CH+
#define IR_6 0xFF6996 // Кнопка CH-
#define IR_7 0xFFA15E // Кнопка Reset
#define STBY 0xFF01FE // Кнопка Standby
#define TU_1 0xFF916E // Кнопка Tune-
#define TU_2 0xFF51AE // Кнопка Tune+
//#define BRIG_H 250
//#define BRIG_L 0

#include <Wire.h> 
#include <PT2323.h>
#include <TDA7448.h> 
#include <Encoder.h>
#include <EEPROM.h>
#include <MsTimer2.h>
#include <boarddefs.h>
#include <IRremote.h>
#include <LiquidCrystal.h>
  TDA7448 tda;
  PT2323 pt; 
 IRrecv irrecv(10); // указываем вывод модуля IR приемника
 decode_results ir;
 LiquidCrystal lcd(7, 6, 2, 3, 4, 5);// RS,E,D4,D5,D6,D7 подключение LCD
 Encoder myEnc(9, 8);//CLK, DT подключение энкодера
   byte a1[8]={0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
   byte a2[8]={0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
   byte a3[8]={0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000};
  unsigned long newPosition,times,oldPosition  = -999;
  int x,i,w,w1,menu,menu1=0,vol,vol_d,z,z0,z1,gr1,gr2,in,att1,att2,att3,att4,att5,att6;
  bool mute,power;
  
void setup(){
   Serial.begin(9600);Wire.begin();irrecv.enableIRIn(); // запускаем модуль IR
   lcd.begin(8, 2);
   pinMode(13,INPUT);    // КНОПКА ЭНКОДЕРA
   pinMode(12,OUTPUT);   // выход управления MUTE
   pinMode(11,OUTPUT);   // output LED
   digitalWrite(11,HIGH);
   MsTimer2::set(3, to_Timer);MsTimer2::start();
   lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
   lcd.setCursor(0,0);lcd.print("TDA 7448");
   lcd.setCursor(0,1);lcd.print("PT  2323");
   delay(1000);cl();
   if(EEPROM.read(100)!=0){for(i=0;i<101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении 
   vol = EEPROM.read(0)-79;in = EEPROM.read(1);
   att1 = EEPROM.read(11);att2 = EEPROM.read(12);att3 = EEPROM.read(13);att4 = EEPROM.read(14);att5 = EEPROM.read(15);att6 = EEPROM.read(16);
   audio_tda();audio_pt();
   digitalWrite(12,LOW);
}

void loop(){
  if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);times=millis();w=1;w1=1;irrecv.resume();} // IR приемник
  if(ir.value==0){gr1=0;gr2=0;}
  if(mute==0&&power==0){
  if(digitalRead(13)==HIGH&&menu!=100){menu++;x++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu>1){menu=0;}} // меню input
  if(x>5){menu1=1;menu=100;lcd.setCursor(0,0);lcd.print("ATTENUAT");delay(1000);}
  if(digitalRead(13)==LOW){x=0;}
  if(digitalRead(13)==HIGH&&menu==100){menu1++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu1>6){menu1=1;}}
  
  if(ir.value==IR_8){menu++;gr1=0;gr2=0;cl1();times=millis();w=1;w1=1;if(menu>1){menu=0;}} // меню input
  
  if(ir.value==MODE){menu1=1;menu=100;cl();lcd.setCursor(0,0);lcd.print("ATTENUAT");delay(1000);}
  if(ir.value==IR_5&&menu==100){menu1++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu1>6){menu1=1;}}
  if(ir.value==IR_6&&menu==100){menu1--;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu1<1){menu1=6;}}  
  
  }
  if(ir.value==MUTE&&mute==0 && power==0){mute=1;gr1=0;gr2=0;cl1();menu=100;menu1=0;lcd.setCursor(0,0);lcd.print("  MUTE  ");digitalWrite(12,HIGH);}
  if(ir.value==MUTE&&mute==1 && power==0){mute=0;gr1=0;gr2=0;cl1();menu=0;digitalWrite(12,LOW);} 

//////////////////////// POWER //////////////////////////////////////////////////////////////////////////////////////

  if(ir.value==STBY&&power==0){power=1;gr1=0;gr2=0;cl();menu=100;menu1=0;lcd.setCursor(0,0);lcd.print("POWEROFF");digitalWrite(12,HIGH);digitalWrite(11,LOW);delay(2000);cl();}  
  if(ir.value==STBY&&power==1){power=0;gr1=0;gr2=0;cl();menu=0;cl();lcd.setCursor(0,0);lcd.print("POWER ON");digitalWrite(12,LOW);digitalWrite(11,HIGH);delay(2000);cl();} 

/////////////////////// VOLUME ///////////////////////////////////////////////////////////////////////////////////////
 if(menu==0){
     if(ir.value==IR_3){vol++;gr1=1;gr2=0;cl1();w1=1;vol_func();audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl1();w1=1;vol_func();audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_4){vol--;gr1=0;gr2=1;cl1();w1=1;vol_func();audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl1();w1=1;vol_func();audio_tda();audio_pt();}// кнопка <<<<<<
  
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   vol=vol+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;vol_func();audio_tda();audio_pt();}
  lcd.setCursor(0,0);lcd.print(" VOL");
  lcd.print("  ");lcd.print(79+vol);lcd.print(" ");lcd.setCursor(5,0);lcd.print(" ");vol_d=map(abs(vol), 79,0,  0,24);
    if(w1==1){
   for(z=0,z0=0,z1=0;z<=vol_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print(" ");}}
   if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}w1=0;}}

 /////////////////// INPUT //////////////////////////////////////////////////////////////////////////////////////// 
  if(menu==1){
     if(ir.value==IR_3){in++;gr1=1;gr2=0;cl1();w1=1;in_func();audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){in++;gr2=0;cl1();w1=1;in_func();audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_4){in--;gr1=0;gr2=1;cl1();w1=1;in_func();audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){in--;gr1=0;cl1();w1=1;in_func();audio_tda();audio_pt();}// кнопка <<<<<<
    
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   in=in+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;in_func();audio_tda();audio_pt();}
 lcd.setCursor(0,0);lcd.print(" INPUT  ");
 lcd.setCursor(0,1);
 switch(in){case 0: lcd.print("  AUX   "); break;
            case 1: lcd.print("  MP3   "); break;
            case 2: lcd.print("  BT    "); break;
            case 3: lcd.print(" Radio  "); break;
            case 4: lcd.print("  5.1   "); break;}} // пропишите свои названия входов


///////////////////////////////////// Att //////////////////////////////////////////
 
 if(menu1==1){
     if(ir.value==IR_4){att1++;gr1=1;gr2=0;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){att1++;gr2=0;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_3){att1--;gr1=0;gr2=1;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){att1--;gr1=0;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка <<<<<<
     
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   att1=att1-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;}audio_tda();audio_pt();}
   lcd.setCursor(0,0);lcd.print("ATTENUAT");
   lcd.setCursor(0,1);lcd.print("FL ");lcd.setCursor(3,1);lcd.print(-att1);lcd.print("  ");lcd.setCursor(6,1);lcd.print("dB");
 }

  if(menu1==2){
     if(ir.value==IR_4){att2++;gr1=1;gr2=0;cl1();w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;};audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){att2++;gr2=0;cl1();w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;};audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_3){att2--;gr1=0;gr2=1;cl1();w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;};audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){att2--;gr1=0;cl1();w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;};audio_tda();audio_pt();}// кнопка <<<<<<
        
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   att2=att2-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;}audio_tda();audio_pt();}
   lcd.setCursor(0,0);lcd.print("ATTENUAT");
   lcd.setCursor(0,1);lcd.print("FR");lcd.print(-att2);lcd.setCursor(6,1);lcd.print("dB");
 }

  if(menu1==3){
     if(ir.value==IR_4){att3++;gr1=1;gr2=0;cl1();w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;};audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){att3++;gr2=0;cl1();w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;};audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_3){att3--;gr1=0;gr2=1;cl1();w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;};audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){att3--;gr1=0;cl1();w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;};audio_tda();audio_pt();}// кнопка <<<<<<
   
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   att3=att3-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;}audio_tda();audio_pt();}
   lcd.setCursor(0,0);lcd.print("ATTENUAT");
   lcd.setCursor(0,1);lcd.print("CT");lcd.print(-att3);lcd.setCursor(6,1);lcd.print("dB");
 }

  if(menu1==4){
     if(ir.value==IR_4){att4++;gr1=1;gr2=0;cl1();w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;};audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){att4++;gr2=0;cl1();w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;};audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_3){att4--;gr1=0;gr2=1;cl1();w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;};audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){att4--;gr1=0;cl1();w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;};audio_tda();audio_pt();}// кнопка <<<<<<   
   
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   att4=att4-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;}audio_tda();audio_pt();}
   lcd.setCursor(0,0);lcd.print("ATTENUAT");
   lcd.setCursor(0,1);lcd.print("SUB");lcd.print(-att4);lcd.setCursor(6,1);lcd.print("dB");
 }

  if(menu1==5){
     if(ir.value==IR_4){att5++;gr1=1;gr2=0;cl1();w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;};audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){att5++;gr2=0;cl1();w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;};audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_3){att5--;gr1=0;gr2=1;cl1();w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;};audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){att5--;gr1=0;cl1();w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;};audio_tda();audio_pt();}// кнопка <<<<<<
   
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   att5=att5-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;}audio_tda();audio_pt();}
   lcd.setCursor(0,0);lcd.print("ATTENUAT");
   lcd.setCursor(0,1);lcd.print("SL");lcd.print(-att5);lcd.setCursor(6,1);lcd.print("dB");
 }

  if(menu1==6){
     if(ir.value==IR_4){att6++;gr1=1;gr2=0;cl1();w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;};audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){att6++;gr2=0;cl1();w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;};audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_3){att6--;gr1=0;gr2=1;cl1();w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;};audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){att6--;gr1=0;cl1();w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;};audio_tda();audio_pt();}// кнопка <<<<<<   
   
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   att6=att6-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;}audio_tda();audio_pt();}
   lcd.setCursor(0,0);lcd.print("ATTENUAT");
   lcd.setCursor(0,1);lcd.print("SR");lcd.print(-att6);lcd.setCursor(6,1);lcd.print("dB");
 }

 ///////////////// EEPROM ///////////////////////////////////////////////////////////////////////////////////////
 if(millis()-times>10000 && w==1){
     EEPROM.update(0,vol+79);
     EEPROM.update(1,in);
     EEPROM.update(11,att1);EEPROM.update(12,att2);EEPROM.update(13,att3);EEPROM.update(14,att4);EEPROM.update(15,att5);EEPROM.update(16,att6);
     menu=0;cl();w=0,w1=1;menu1=0;}
  
}//loop

void in_func(){if(in<0){in=4;}if(in>4){in=0;}}
void vol_func(){if(vol>0){vol=0;}if(vol<-79){vol=-79;}}
void cl(){ir.value=0;delay(300);lcd.clear();}
void cl1(){ir.value=0;delay(100);}
void audio_pt(){
  pt.setInput(in); // входы 1...4 (0...3) или 6 моно (4)
  pt.setMute(0,0,0,0,0,0,0); 
  pt.setFeature(0,1); // дополнительные функции 0...3
                     // 0 - Enhanced Surround Function Active
                     // 1 - Enhanced Surround Function Disabled
                     // 0 - Mixed Channel (0dB) Setup
                     // 1 - Mixed Channel (+6dB) Setup 
}
void audio_tda(){
  tda.setAtt(1,vol-att1);// 0 макс громк, -79(79) мин громк
  tda.setAtt(2,vol-att2);
  tda.setAtt(3,vol-att3);
  tda.setAtt(4,vol-att4);
  tda.setAtt(5,vol-att5);
  tda.setAtt(6,vol-att6);
  }

void to_Timer(){newPosition = myEnc.read()/4;}

81

Re: PT2323+TDA7448

1. Лишние цифры нужно затирать, например было:
  lcd.setCursor(0,1);lcd.print("CT");lcd.print(-att3);lcd.setCursor(6,1);lcd.print("dB");
надо сделать:
  lcd.setCursor(0,1);lcd.print("CT");if(-att3<9){lcd.print(" ");}lcd.print(-att3);lcd.setCursor(6,1);lcd.print("dB");
2.

.У меню ATTENUAT какой-то сильный приоритет - оно само исчезает через 10 секунд

через 10 сек программно переход в основное меню (громкость)

Далее по наложению символов:
if(ir.value==IR_8){menu++;gr1=0;gr2=0;cl1();times=millis();w=1;w1=1;if(menu>1){menu=0;}} // меню input
исправьте на
if(ir.value==IR_8){menu++;gr1=0;gr2=0;cl();times=millis();w=1;w1=1;if(menu>1){menu=0;}} // меню input

3.
  if(ir.value==IR_7){menu=0;menu1=0;cl();times=millis();w=1;w2=1;}
4. Вот примерный код:
  if(ir.value==INPUT)){in++;menu=1;cl();times=millis();w=1;w1=1;in_func();audio_tda();audio_pt();}

82

Re: PT2323+TDA7448

Все получилось. Не совсем так, как Вы написали, но направление было понятно)

Итоговый скетч:

#define IR_8 0xFF21DE // Кнопка MENU (input sel)
#define IR_3 0xFF09F6 // Кнопка > (Vol+)
#define IR_4 0xFF29D6 // Кнопка < (Vol-)
#define MUTE 0xFF41BE // Кнопка MUTE
#define MODE 0xFF619E // Кнопка MODE
#define IR_5 0xFF8976 // Кнопка CH+
#define IR_6 0xFF6996 // Кнопка CH-
#define IR_7 0xFFA15E // Кнопка Reset
#define STBY 0xFF01FE // Кнопка Standby
#define TU_1 0xFF916E // Кнопка Tune-
#define TU_2 0xFF51AE // Кнопка Tune+
//#define BRIG_H 250
//#define BRIG_L 0

#include <Wire.h> 
#include <PT2323.h>
#include <TDA7448.h> 
#include <Encoder.h>
#include <EEPROM.h>
#include <MsTimer2.h>
#include <boarddefs.h>
#include <IRremote.h>
#include <LiquidCrystal.h>
  TDA7448 tda;
  PT2323 pt; 
 IRrecv irrecv(10); // указываем вывод модуля IR приемника
 decode_results ir;
 LiquidCrystal lcd(7, 6, 2, 3, 4, 5);// RS,E,D4,D5,D6,D7 подключение LCD
 Encoder myEnc(9, 8);//CLK, DT подключение энкодера
   byte a1[8]={0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
   byte a2[8]={0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
   byte a3[8]={0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000};
  unsigned long newPosition,times,oldPosition  = -999;
  int x,i,w,w1,menu,menu1=0,vol,vol_d,z,z0,z1,gr1,gr2,in,att1,att2,att3,att4,att5,att6;
  bool mute,power;
  
void setup(){
   Serial.begin(9600);Wire.begin();irrecv.enableIRIn(); // запускаем модуль IR
   lcd.begin(8, 2);
   pinMode(13,INPUT);    // КНОПКА ЭНКОДЕРA
   pinMode(12,OUTPUT);   // выход управления MUTE
   pinMode(11,OUTPUT);   // output LED
   digitalWrite(11,HIGH);
   MsTimer2::set(3, to_Timer);MsTimer2::start();
   lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
   lcd.setCursor(0,0);lcd.print("TDA 7448");
   lcd.setCursor(0,1);lcd.print("PT  2323");
   delay(1000);cl();
   if(EEPROM.read(100)!=0){for(i=0;i<101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении 
   vol = EEPROM.read(0)-79;in = EEPROM.read(1);
   att1 = EEPROM.read(11);att2 = EEPROM.read(12);att3 = EEPROM.read(13);att4 = EEPROM.read(14);att5 = EEPROM.read(15);att6 = EEPROM.read(16);
   audio_tda();audio_pt();
   digitalWrite(12,LOW);
}

void loop(){
  if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);times=millis();w=1;w1=1;irrecv.resume();} // IR приемник
  if(ir.value==0){gr1=0;gr2=0;}
  if(mute==0&&power==0){
  if(digitalRead(13)==HIGH&&menu!=100){menu++;x++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu>1){menu=0;}} // меню input
  if(x>5){menu1=1;menu=100;lcd.setCursor(0,0);lcd.print("ATTENUAT");delay(1000);}
  if(digitalRead(13)==LOW){x=0;}
  if(digitalRead(13)==HIGH&&menu==100){menu1++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu1>6){menu1=1;}}
  
  //if(ir.value==IR_8){menu++;gr1=0;gr2=0;cl();times=millis();w=1;w1=1;if(menu>1){menu=0;}} // меню input

  if(ir.value==IR_7){menu=0;menu1=0;cl();times=millis();w=1;w1=1;} // кнопка reset
  
  if(menu==0||menu1==1){
  if(ir.value==IR_8){menu1=0;menu=1;gr1=0;gr2=0;cl();times=millis();w=1;w1=1;}} // меню input 
  if(menu==1){
  if(ir.value==IR_8){in++;menu1=0;cl();times=millis();w=1;w1=1;in_func();audio_tda();audio_pt();}} // input - переключение входов с пульта

  if(ir.value==MODE){menu1=1;menu=100;cl();lcd.setCursor(0,0);lcd.print("ATTENUAT");delay(1000);}
  if(ir.value==IR_5&&menu==100){menu1++;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu1>6){menu1=1;}}
  if(ir.value==IR_6&&menu==100){menu1--;cl();myEnc.write(0);times=millis();w=1;w1=1;if(menu1<1){menu1=6;}}  
  
  }
  if(ir.value==MUTE&&mute==0 && power==0){mute=1;gr1=0;gr2=0;cl1();menu=100;menu1=0;lcd.setCursor(0,0);lcd.print("  MUTE  ");digitalWrite(12,HIGH);}
  if(ir.value==MUTE&&mute==1 && power==0){mute=0;gr1=0;gr2=0;cl1();menu=0;digitalWrite(12,LOW);} 

//////////////////////// POWER //////////////////////////////////////////////////////////////////////////////////////

  if(ir.value==STBY&&power==0){power=1;gr1=0;gr2=0;cl();menu=100;menu1=0;lcd.setCursor(0,0);lcd.print("POWEROFF");digitalWrite(12,HIGH);digitalWrite(11,LOW);delay(2000);cl();}  
  if(ir.value==STBY&&power==1){power=0;gr1=0;gr2=0;cl();menu=0;cl();lcd.setCursor(0,0);lcd.print("POWER ON");digitalWrite(12,LOW);digitalWrite(11,HIGH);delay(2000);cl();} 

/////////////////////// VOLUME ///////////////////////////////////////////////////////////////////////////////////////
 if(menu==0){
     if(ir.value==IR_3){vol++;gr1=1;gr2=0;cl1();w1=1;vol_func();audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl1();w1=1;vol_func();audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_4){vol--;gr1=0;gr2=1;cl1();w1=1;vol_func();audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl1();w1=1;vol_func();audio_tda();audio_pt();}// кнопка <<<<<<
  
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   vol=vol+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;vol_func();audio_tda();audio_pt();}
  lcd.setCursor(0,0);lcd.print(" VOL");
  lcd.print("  ");lcd.print(79+vol);lcd.print(" ");lcd.setCursor(5,0);lcd.print(" ");vol_d=map(abs(vol), 79,0,  0,24);
    if(w1==1){
   for(z=0,z0=0,z1=0;z<=vol_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print(" ");}}
   if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}w1=0;}}

 /////////////////// INPUT //////////////////////////////////////////////////////////////////////////////////////// 
  if(menu==1){
     //if(ir.value==IR_3){in++;gr1=1;gr2=0;cl1();w1=1;in_func();audio_tda();audio_pt();}// кнопка > 
     //if(ir.value==0xFFFFFFFF and gr1==1){in++;gr2=0;cl1();w1=1;in_func();audio_tda();audio_pt();}// кнопка >>>>>>
     //if(ir.value==IR_4){in--;gr1=0;gr2=1;cl1();w1=1;in_func();audio_tda();audio_pt();}// кнопка <
     //if(ir.value==0xFFFFFFFF and gr2==1){in--;gr1=0;cl1();w1=1;in_func();audio_tda();audio_pt();}// кнопка <<<<<<
    
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   in=in+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;in_func();audio_tda();audio_pt();}
 lcd.setCursor(0,0);lcd.print(" INPUT  ");
 lcd.setCursor(0,1);
 switch(in){case 0: lcd.print("  AUX   "); break;
            case 1: lcd.print("  MP3   "); break;
            case 2: lcd.print("  BT    "); break;
            case 3: lcd.print(" Radio  "); break;
            case 4: lcd.print("  5.1   "); break;}} // пропишите свои названия входов


///////////////////////////////////// Att //////////////////////////////////////////
 
 if(menu1==1){
     if(ir.value==IR_4){att1++;gr1=1;gr2=0;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){att1++;gr2=0;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_3){att1--;gr1=0;gr2=1;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){att1--;gr1=0;cl1();w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;};audio_tda();audio_pt();}// кнопка <<<<<<
     
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   att1=att1-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att1>20){att1=20;}if(att1<0){att1=0;}audio_tda();audio_pt();}
   lcd.setCursor(0,0);lcd.print("ATTENUAT");
   lcd.setCursor(0,1);lcd.print("FL ");lcd.setCursor(3,1);
   if(-att1>-1){lcd.print(" 0 ");}
   else{lcd.print(-att1);if(-att1>-10){lcd.print(" ");}}
   lcd.setCursor(6,1);lcd.print("dB");
 }

  if(menu1==2){
     if(ir.value==IR_4){att2++;gr1=1;gr2=0;cl1();w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;};audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){att2++;gr2=0;cl1();w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;};audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_3){att2--;gr1=0;gr2=1;cl1();w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;};audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){att2--;gr1=0;cl1();w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;};audio_tda();audio_pt();}// кнопка <<<<<<
        
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   att2=att2-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att2>20){att2=20;}if(att2<0){att2=0;}audio_tda();audio_pt();}
   lcd.setCursor(0,0);lcd.print("ATTENUAT");
   lcd.setCursor(0,1);lcd.print("FR");lcd.setCursor(3,1);
   if(-att2>-1){lcd.print(" 0 ");}
   else{lcd.print(-att2);if(-att2>-10){lcd.print(" ");}}
   lcd.setCursor(6,1);lcd.print("dB");
 }

  if(menu1==3){
     if(ir.value==IR_4){att3++;gr1=1;gr2=0;cl1();w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;};audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){att3++;gr2=0;cl1();w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;};audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_3){att3--;gr1=0;gr2=1;cl1();w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;};audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){att3--;gr1=0;cl1();w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;};audio_tda();audio_pt();}// кнопка <<<<<<
   
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   att3=att3-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att3>20){att3=20;}if(att3<0){att3=0;}audio_tda();audio_pt();}
   lcd.setCursor(0,0);lcd.print("ATTENUAT");
   lcd.setCursor(0,1);lcd.print("CT");lcd.setCursor(3,1);
   if(-att3>-1){lcd.print(" 0 ");}
   else{lcd.print(-att3);if(-att3>-10){lcd.print(" ");}}
   lcd.setCursor(6,1);lcd.print("dB");
 }

  if(menu1==4){
     if(ir.value==IR_4){att4++;gr1=1;gr2=0;cl1();w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;};audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){att4++;gr2=0;cl1();w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;};audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_3){att4--;gr1=0;gr2=1;cl1();w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;};audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){att4--;gr1=0;cl1();w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;};audio_tda();audio_pt();}// кнопка <<<<<<   
   
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   att4=att4-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att4>20){att4=20;}if(att4<0){att4=0;}audio_tda();audio_pt();}
   lcd.setCursor(0,0);lcd.print("ATTENUAT");
   lcd.setCursor(0,1);lcd.print("SUB");lcd.setCursor(3,1);
   if(-att4>-1){lcd.print(" 0 ");}
   else{lcd.print(-att4);if(-att4>-10){lcd.print(" ");}}
   lcd.setCursor(6,1);lcd.print("dB");
 }

  if(menu1==5){
     if(ir.value==IR_4){att5++;gr1=1;gr2=0;cl1();w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;};audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){att5++;gr2=0;cl1();w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;};audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_3){att5--;gr1=0;gr2=1;cl1();w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;};audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){att5--;gr1=0;cl1();w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;};audio_tda();audio_pt();}// кнопка <<<<<<
   
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   att5=att5-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att5>20){att5=20;}if(att5<0){att5=0;}audio_tda();audio_pt();}
   lcd.setCursor(0,0);lcd.print("ATTENUAT");
   lcd.setCursor(0,1);lcd.print("SL");lcd.setCursor(3,1);
   if(-att5>-1){lcd.print(" 0 ");}
   else{lcd.print(-att5);if(-att5>-10){lcd.print(" ");}}
   lcd.setCursor(6,1);lcd.print("dB");
 }

  if(menu1==6){
     if(ir.value==IR_4){att6++;gr1=1;gr2=0;cl1();w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;};audio_tda();audio_pt();}// кнопка > 
     if(ir.value==0xFFFFFFFF and gr1==1){att6++;gr2=0;cl1();w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;};audio_tda();audio_pt();}// кнопка >>>>>>
     if(ir.value==IR_3){att6--;gr1=0;gr2=1;cl1();w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;};audio_tda();audio_pt();}// кнопка <
     if(ir.value==0xFFFFFFFF and gr2==1){att6--;gr1=0;cl1();w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;};audio_tda();audio_pt();}// кнопка <<<<<<   
   
   if (newPosition != oldPosition) {
   oldPosition = newPosition;
   att6=att6-newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;if(att6>20){att6=20;}if(att6<0){att6=0;}audio_tda();audio_pt();}
   lcd.setCursor(0,0);lcd.print("ATTENUAT");
   lcd.setCursor(0,1);lcd.print("SR");lcd.setCursor(3,1);
   if(-att6>-1){lcd.print(" 0 ");}
   else{lcd.print(-att6);if(-att6>-10){lcd.print(" ");}}
   lcd.setCursor(6,1);lcd.print("dB");
 }

 ///////////////// EEPROM ///////////////////////////////////////////////////////////////////////////////////////
 if(millis()-times>10000 && w==1){
     EEPROM.update(0,vol+79);
     EEPROM.update(1,in);
     EEPROM.update(11,att1);EEPROM.update(12,att2);EEPROM.update(13,att3);EEPROM.update(14,att4);EEPROM.update(15,att5);EEPROM.update(16,att6);
     menu=0;cl();w=0,w1=1;menu1=0;}
  
}//loop

void in_func(){if(in<0){in=4;}if(in>4){in=0;}}
void vol_func(){if(vol>0){vol=0;}if(vol<-79){vol=-79;}}
void cl(){ir.value=0;delay(300);lcd.clear();}
void cl1(){ir.value=0;delay(100);}
void audio_pt(){
  pt.setInput(in); // входы 1...4 (0...3) или 6 моно (4)
  pt.setMute(0,0,0,0,0,0,0); 
  pt.setFeature(0,1); // дополнительные функции 0...3
                     // 0 - Enhanced Surround Function Active
                     // 1 - Enhanced Surround Function Disabled
                     // 0 - Mixed Channel (0dB) Setup
                     // 1 - Mixed Channel (+6dB) Setup 
}
void audio_tda(){
  tda.setAtt(1,vol-att1);// 0 макс громк, -79(79) мин громк
  tda.setAtt(2,vol-att2);
  tda.setAtt(3,vol-att3);
  tda.setAtt(4,vol-att4);
  tda.setAtt(5,vol-att5);
  tda.setAtt(6,vol-att6);
  }

void to_Timer(){newPosition = myEnc.read()/4;}

83

Re: PT2323+TDA7448

Господа!!! Приятно читать вас уже 2 года. С вашими трудами я готов реанимировать свои колонки. Буду благодарен если мои вопросы найдут ответы с вашей помощью!!! Да прибудет с вами сила)))

84

Re: PT2323+TDA7448

Добрый день! Наконец-то я нашел то место, где надеюсь смогу найти решение своей проблемы. У меня благополучно умер домашний кинотеатр, а именно схема управления. Коммутация и все управление реализовано на PT2323 и PT2322. Аудиотракт я оживил, вроде работает. Вся информация выводилась на люминесцентный экран ,который перестал работать. Я попытался заменить микросхемы управления им, но увы результат нулевой. Через ИК-пульт все работает и регулируется, но вслепую. Приведенная здесь http://rcl-radio.ru/?p=62504 вами схема практически то что мне нужно, но есть несколько моментов и вопросов, которыми я бы хотел вас помучить, если вы не против.Заранее спасибо
1. Я так понимаю прикрутить другой дисплей к тому контролеру, который там стоит дело непростое, проще повторить вашу схему или же все таки какой то шанс есть?
2. Если все же проще собрать вашу схему, то сможете помочь парой хотелок и доработок. В электронике я разбираюсь, но в программировании не силен, увы...

85

Re: PT2323+TDA7448

Какой экран у Вас в домашнем кинотеатре?

86

Re: PT2323+TDA7448

Да в том то и проблема, что на нем толком ничего не написано, не нашел никаких опознавательных надписей.

87

Re: PT2323+TDA7448

Я могу скинуть фотографии всей платы управления

88

Re: PT2323+TDA7448

Опубликуйте на форуме

89

Re: PT2323+TDA7448

http://forum.rcl-radio.ru/uploads/images/2022/02/8eebe77b4d2cbfcaff99b10e129137f3.jpg

Пошел делать фотографию модуля и решил просто включить, думаю мало ли, вдруг запуститься...и о ЧУДО!!!!Все заработало!!!))))))) Вот уж точно эффект телемастера!!!!Не факт, что завтра заработает или пока соберу все в кучу. Так что вопрос думаю не закрывать. Под дисплеем контролер AT89C52-24PI.

90 (2022-02-01 21:05:19 отредактировано nora11)

Re: PT2323+TDA7448

Почему все же хотелось бы внести изменения в это устройство, даже если оно и будет дальше работать))))
Ну во-первых, мой пытливый детский ум требует приключений))))
Во-вторых, яркость этого дисплея уже не достаточная, хотя сам дисплей информативный.
В-третьих, хотел добавить блютуз модуль и модуль для преобразования АС-3(звук по оптике с приставки) в аналог по каналам, что не так уж сложно.

91

Re: PT2323+TDA7448

Тогда надо делать все поэтапно, сначала запустить аудиопроцессоры на новом контроллере, далее подобрать экран - LCD1602 или LCD2004. Далее необходимо сохранить весь функционал - то есть задействовать все кнопки, энкодер, ИК - датчик. Скетч на сайте и на форуме Вам не подойдет, надо написать новый под Ваши кнопки.

В качестве контроллера может подойти арудино нано или просто atmega328 в dip корпусе, это уже на Ваше усмотрение.
Можно добавить часы, будильник, затемнение экрана по времени.

Если брать арудино нано, то тут надо считать выводы:
6 - кнопки
1 - ик датчик
4 - энкодер (3 если в нем нет кнопки)
2 - шина управления аудипроцессорами

Пока 13 пинов

Потом экран, если подключать по шине i2c, то все нормально, а если последовательно, то надо еще 6 пинов

итого 19, впритык.

92

Re: PT2323+TDA7448

1.Я так понимаю часть работы по запуску аудиопроцессоров как бы есть, по ссылке что я привел. Сами по себе они прекрасно работают, сегодня убедился еще раз))).
2. По размерам LCD1602 идеальный вариант, на али присмотрел, синего цвета. Думаю более чем достаточно двух строк. Я так понимаю надо взять с интерфейсом i2c, так проще. https://aliexpress.ru/item/32413056677. … 26e2lSqDxU
3. Ардуино. такая подойдет https://aliexpress.ru/item/32323945639. … 619beiKw6R
Если делать просто в дип-корпусе, нужен же будет к ней какой-то обвес.Проще думаю взять готовую плату?
4. Энкодер (в нем кнопки нет, но он работает плохо, заедает, надо его будет поменять ), ИК однозначно нужно, а кнопки скорее нужны для сохранения внешнего вида, ну а раз так, то и функционал желательно сохранить, но если это будет усложнять процесс, то можно будет частью пожертвовать, я думаю, потому как основное управление будет все же с пульта.
5. Ну и учитывая, что со временем как всегда туго, то этот процесс будет не быстрым у меня, так что, я сильно вас мучить не буду.Но в любом случае ОГРОМНОЕ ВАМ СПАСИБО что откликнулись и готовы помочь!

93

Re: PT2323+TDA7448

3. Ардуино. такая подойдет https://aliexpress.ru/item/32323945639. … 619beiKw6R
Если делать просто в дип-корпусе, нужен же будет к ней какой-то обвес.Проще думаю взять готовую плату?

Если нет опыта в прошивке микроконтроллеров, то Arduino лучший для Вас вариант.

4. Энкодер (в нем кнопки нет, но он работает плохо, заедает, надо его будет поменять )

Не спешите менять, возможно дело в прошивке Вашего микроконтроллера.

5. Ну и учитывая, что со временем как всегда туго, то этот процесс будет не быстрым у меня, так что, я сильно вас мучить не буду.Но в любом случае ОГРОМНОЕ ВАМ СПАСИБО что откликнулись и готовы помочь!

Мне написать новый код не сложно и не долго, вся работа ляжет на Вас - это тестирование, заливка скетча, пока все доведется до ума Вам раз 20 придется прошивать контроллер.

В-третьих, хотел добавить блютуз модуль и модуль для преобразования АС-3(звук по оптике с приставки) в аналог по каналам, что не так уж сложно.

Вы имели в виду аудио ЦАП? Вы хотите брать готовый модуль или собирать сами? На сайте есть много статей про аудио ЦАПы. Посмотрите если интересно.

94

Re: PT2323+TDA7448

Опыта нет, увы, поэтому возьму готовый.
Тестирование, заливка и все прочее это меня не пугает)))
Да, аудио ЦАП, готовый, который из оптики делает обычный разложенный аналоговый аудио сигнал. Типа такого https://aliexpress.ru/item/100500194866 … 8189125404

95

Re: PT2323+TDA7448

Хорошо, как все посылки получите пишите, открою новую тему на форуме и начнем работу.

96

Re: PT2323+TDA7448

liman324 пишет:

Хорошо, как все посылки получите пишите, открою новую тему на форуме и начнем работу.

Ок, спасибо

97 (2022-02-08 14:50:52 отредактировано boss.reznov)

Re: PT2323+TDA7448

Здравствуйте форумчане .
Использую этот скетч.
Немогу разобратся с библиотекой boardefs.h
В основной библиотеке IRremote этой доп библиотеки нет . Если скачать с гитхаба
,то ничего неработает в мониторе порта ничего неотображается .если убрать из скетча boardefs.h то монитор начинает работать но коды постоянно меняются.
Поделитьесь кто нибудь этой библиотекой .
Заранее спасибо

98

Re: PT2323+TDA7448

http://rcl-radio.ru/wp-content/uploads/ … remote.zip
Удалите библиотеку ик датчика и установите ее с указанного источника

99

Re: PT2323+TDA7448

liman324 пишет:

http://rcl-radio.ru/wp-content/uploads/ … remote.zip
Удалите библиотеку ик датчика и установите ее с указанного источника


Спасибо

100

Re: PT2323+TDA7448

Всем спасибо.
кто принял участие в разработке скетча
Вылечил свой microlab x 5.
Работает как новый.