1

Тема: PT2323 - коммутатор аудио сигналов

PT2323 представляет собой коммутатор аудио сигналов. Микросхема имеет 4-е стерео входа и один шести канальный вход формата 5.1. Стерео сигнал подаваемый на входы микросхемы преобразуется в аудио сигнал формата 5.1, а аудио сигнал формата 5.1 поступает на выход 5.1 без изменений.

PT2323 имеет следующие аудио выходы:

FR — правый канал фронт
FL — левый канал фронт
SR — правый канал тыл
SL — левый канал тыл
CT — центральный канал
SUB — канал сабвуфера

http://rcl-radio.ru/wp-content/uploads/2019/06/3475634932434.png

PT2323.h

//  PT2323
#ifndef  PT2323_H
#define  PT2323_H

#define  PT2323_address 0b1001010 // адрес

#include <Arduino.h>
class  PT2323
{
  public:
     PT2323();
        void setInput(int in); // входы 1...4 (in = 0...3), 6 моно входов (in = 4)
        void setMute(int fl, int fr, int ct, int sub, int sl, int sr, int mute); 
        // MUTE OFF для выходов (0,0,0,0,0,0,0); 
        // MUTE ON  для выходов (1,1,1,1,1,1,1); 
        // fl,  fr,  ct,  sub,  sl,  sr, все  выходы mute
        void setFeature(int surr, int mix); // дополнительные функции 0...1, 0...1
               // 0 - Enhanced Surround Function Active
               // 1 - Enhanced Surround Function Disabled
               // 0 - Mixed Channel (0dB) Setup
               // 1 - Mixed Channel (+6dB) Setup 
  private:
    void writeWire(char a);
};
    
#endif // PT2323_H

PT2323.cpp

#include <Arduino.h>
#include <Wire.h>
#include "PT2323.h"

PT2323::PT2323(){
    Wire.begin();
}

void PT2323::setInput(int in){
     switch(in){
        case 0: in = 0b11001011;break;
    case 1: in = 0b11001010;break;
    case 2: in = 0b11001001;break;
    case 3: in = 0b11001000;break;
        case 4: in = 0b11000111;break;
        } 
        writeWire(in);}

void PT2323::setMute(int fl, int fr, int ct, int sub, int sl, int sr, int mute){
      if(fl==1){fl = 0b11110001;}else{fl = 0b11110000;}
      if(fr==1){fr = 0b11110011;}else{fr = 0b11110010;}
      if(ct==1){ct = 0b11110101;}else{ct = 0b11110100;}
    if(sub==1){sub = 0b11110111;}else{sub= 0b11110110;}
      if(sl==1){sl = 0b11111001;}else{sl = 0b11111000;}
      if(sr==1){sr = 0b11111011;}else{sr = 0b11111010;} ///
  if(mute==1){mute = 0b11111111;}else{mute=0b11111110;}
      
  writeWire(fl);
  writeWire(fr);
  writeWire(ct);
  writeWire(sub);
  writeWire(sl);
  writeWire(sr);
  writeWire(mute);
}

void PT2323::setFeature(int surr, int mix){
     switch(surr){
        case 0: surr = 0b11010000;break;
    case 1: surr = 0b11010001;break;
        }
     switch(mix){
        case 0: mix = 0b10010000;break;
    case 1: mix = 0b10010001;break;
        } 
        writeWire(surr);
        writeWire(mix);
}

void PT2323::writeWire(char a){
  Wire.beginTransmission(PT2323_address);
  Wire.write (a);
  Wire.endTransmission();
}