1

Тема: Genius SW-HF 5.1 5000 (восстановление микроконтроллерного блока)

http://forum.rcl-radio.ru/uploads/images/2020/02/6be0082dc89a4bf3fba8c760ed38e1e7.png
http://forum.rcl-radio.ru/uploads/images/2020/02/0c6e4e475344ba6ca92704dd412c053b.gif

Паспорт + схема
Данный контент доступен только зарегистрированным пользователям.

бибиотеки
Данный контент доступен только зарегистрированным пользователям.
Данный контент доступен только зарегистрированным пользователям.

тестовый запуск
вход 0
громк макс

#include <Wire.h>
#include <PT2323.h>
#include <PT2258.h>

 PT2323 pt0; 
 PT2258 pt;

void setup() { 
  Wire.begin();
  audio1();
  audio();
}

void loop() {

}

void audio1(){
  pt0.setInput(0); 
  pt0.setMute(0,0,0,0,0,0,0); 
  pt0.setFeature(1,1); 
}

void audio(){
        pt.setVolume(0); //  int 0...79     
      // pt.setVol1(0); //  int 0...79       
      // pt.setVol2(0); //  int 0...79 
      // pt.setVol3(0); //  int 0...79 
      // pt.setVol4(0); //  int 0...79 
      // pt.setVol5(0); //  int 0...79 
      // pt.setVol6(0); //  int 0...79 
        pt.setMute(0); // mute 0 - off / 1 - on
  }

328 hex - Данный контент доступен только зарегистрированным пользователям.
atmega 328
http://forum.rcl-radio.ru/uploads/images/2020/02/62cb37e889c7e91721e01e32dea8321e.png

2

Re: Genius SW-HF 5.1 5000 (восстановление микроконтроллерного блока)

регулировка громкости с регулятора и пульта
селектор входов с кнопок и индикация селектора входов + пульт
КНОПКА И ВЫХОД mute + пульт
КНОПКА И standby + пульт

#define IR_1 0x2FDD02F // Кнопка VOL+
#define IR_2 0x2FD32CD // Кнопка VOL-
#define IR_3 0x2FD5566 // Кнопка MUTE
#define IR_4 0x2FD8888 // Кнопка STANDBY

#define IR_5 0x2FDD02F // Кнопка DVD
#define IR_6 0x2FD32CD // Кнопка TV
#define IR_7 0x2FD5566 // Кнопка GAME
#define IR_8 0x2FD8888 // Кнопка CD/MP3

#include <Wire.h>
#include <PT2323.h>
#include <PT2258.h>
#include <EEPROM.h>
#include <boarddefs.h>
#include <IRremote.h>
 IRrecv irrecv(0); // указываем вывод модуля IR приемника (IR-IN)
 decode_results ir; 
 PT2323 pt0; 
 PT2258 pt;

 int vol,vol_old,in,mute,standby=1;
 byte w,gr1,gr2,moto;
 unsigned long time;

void setup() { 
  irrecv.enableIRIn();
  Serial.begin(9600);
  pinMode(A0,INPUT);// вход регулятора громкости 0...5 В
  pinMode(A1,INPUT);// кнопка MUTE
  pinMode(2,OUTPUT);// ВЫХОД УПР. MUTE
  pinMode(A2,INPUT);// кнопка STANDBY
  pinMode(3,OUTPUT);// ВЫХОД УПР. SRANDBY
  //////// IN ////////////////////////////////
  pinMode(4,INPUT); // in DVD
  pinMode(5,INPUT); // in TV
  pinMode(6,INPUT); // in GAME
  pinMode(7,INPUT); // in CD/MP3
  /////// LED OUTPUT /////////////////////////////
  pinMode(8,OUTPUT); // in DVD
  pinMode(9,OUTPUT); // in TV
  pinMode(10,OUTPUT);// in GAME
  pinMode(11,OUTPUT);// in CD/MP3

  pinMode(12,OUTPUT);// MOUT+
  pinMode(13,OUTPUT);// MOUT-
  
  Wire.begin();
  if(EEPROM.read(100)!=0){for(int i=0;i<101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении
  vol = EEPROM.read(0)-79;in = EEPROM.read(1);
  audio1();
  audio();
}

void loop() {
  ///////////////////// IR ////////////////////////////////////////////////////////////////////////////////////////
  if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);irrecv.resume();delay(100);time=millis();w=1;}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
     if(ir.value==IR_1){vol++;gr1=1;gr2=0;vol_func();audio1();audio();moto=1;}// кнопка VOL+
     if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;vol_func();audio1();audio();moto=1;}// кнопка >>>>>>
     if(ir.value==IR_2){vol--;gr1=0;gr2=1;vol_func();audio1();audio();moto=1;}// кнопка VOL-
     if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;vol_func();audio1();audio();moto=1;}// кнопка <<<<<<

     if(ir.value==IR_3&&mute==0){mute=1;audio1();audio();digitalWrite(2,HIGH);delay(300);} 
     if(ir.value==IR_3&&mute==1){mute=0;audio1();audio();digitalWrite(2,LOW);delay(300);}

     if(ir.value==IR_4&&standby==1){standby=1;digitalWrite(3,HIGH);delay(300);}
     if(ir.value==IR_4&&standby==0){standby=0;digitalWrite(3,LOW);delay(300);}

     if(ir.value==IR_5){in=4;audio1();audio();delay(300);}
     if(ir.value==IR_6){in=0;audio1();audio();delay(300);}
     if(ir.value==IR_7){in=1;audio1();audio();delay(300);}
     if(ir.value==IR_8){in=2;audio1();audio();delay(300);}
  
  /////////////////////////////////////////////////////////////////////////////////////////////////////////////////   

 /////////////////// MUTE /////////////////////////////////////////////////////////////////////////////////////////
  if(analogRead(A1)>900&&mute==0){mute=1;digitalWrite(2,HIGH);audio1();audio();delay(300);}
  if(analogRead(A1)>900&&mute==1){mute=0;digitalWrite(2,LOW);audio1();audio();delay(300);}
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 

 /////////////////// STANDBY /////////////////////////////////////////////////////////////////////////////////////////
  if(analogRead(A2)>900&&standby==1){standby=1;digitalWrite(3,HIGH);delay(300);} // усилитель вкл
  if(analogRead(A2)>900&&standby==0){standby=0;digitalWrite(3,LOW);delay(300);}  // усилитель выкл
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////  

 ////////////// INPUT /////////////////////////////////////////////////////////////////////////////////////////////
  if(digitalRead(4)==HIGH){in=4;audio1();audio();w=1;time=millis();delay(300);}  // in DVD
  if(digitalRead(5)==HIGH){in=0;audio1();audio();w=1;time=millis();delay(300);}  // in TV
  if(digitalRead(6)==HIGH){in=1;audio1();audio();w=1;time=millis();delay(300);}  // in GAME
  if(digitalRead(7)==HIGH){in=2;audio1();audio();w=1;time=millis();delay(300);}  // in CD/MP3
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  switch(in){
    case 4: digitalWrite(8,HIGH);digitalWrite(9,LOW);digitalWrite(10,LOW);digitalWrite(11,LOW);break;
    case 0: digitalWrite(8,LOW);digitalWrite(9,HIGH);digitalWrite(10,LOW);digitalWrite(11,LOW);break;
    case 1: digitalWrite(8,LOW);digitalWrite(9,LOW);digitalWrite(10,HIGH);digitalWrite(11,LOW);break;
    case 2: digitalWrite(8,LOW);digitalWrite(9,LOW);digitalWrite(10,LOW);digitalWrite(11,HIGH);break;
    }

  
  if(moto==1){
  if(vol>map(analogRead(A0),0,1023,0,79)){digitalWrite(12,HIGH);digitalWrite(13,LOW);}
  else if(vol<map(analogRead(A0),0,1023,0,79)){digitalWrite(12,LOW);digitalWrite(13,HIGH);}
  else{digitalWrite(12,LOW);digitalWrite(13,LOW);moto=0;}
  }

  if(moto==0){
  vol_old = vol;
  vol = map(analogRead(A0),0,1023,0,79);
  if(vol_old!=vol){audio1();audio();w=1;time=millis();}
  }
  ////// EEPROM /////////////////////////////////////////////// 
  if(millis()-time>10000 && w==1){EEPROM.update(0,vol+79);EEPROM.update(1,in);}
}

void vol_func(){if(vol>79){vol=79;}if(vol<0){vol=0;}}

void audio1(){
  pt0.setInput(in); 
  pt0.setMute(0,0,0,0,0,0,0); 
  pt0.setFeature(1,1); 
}

void audio(){
        pt.setVolume(vol); //  int 0...79     
      // pt.setVol1(0); //  int 0...79       
      // pt.setVol2(0); //  int 0...79 
      // pt.setVol3(0); //  int 0...79 
      // pt.setVol4(0); //  int 0...79 
      // pt.setVol5(0); //  int 0...79 
      // pt.setVol6(0); //  int 0...79 
        pt.setMute(mute); // mute 0 - off / 1 - on
  }

Данный контент доступен только зарегистрированным пользователям.

3

Re: Genius SW-HF 5.1 5000 (восстановление микроконтроллерного блока)

Здравствуйте. В программе темы "Genius SW-HF 5.1 5000 (восстановление микроконтроллерного блока)" непонятная библиотека "boarddefs.h". В стандартных библиотеках Arduino IDE её нет. Буду благодарен, если вышлете эту библиотеку на почту "sa45home@yandex.ru".

4

Re: Genius SW-HF 5.1 5000 (восстановление микроконтроллерного блока)

Она входит в состав IRremote, ее не надо устанавливать

5

Re: Genius SW-HF 5.1 5000 (восстановление микроконтроллерного блока)

Скетч был написан по просьбе пользователя, скетч не тестирован, в железе не запускался. Нет гарантий что он рабочий.