Тема: PT2323 - коммутатор аудио сигналов
PT2323 представляет собой коммутатор аудио сигналов. Микросхема имеет 4-е стерео входа и один шести канальный вход формата 5.1. Стерео сигнал подаваемый на входы микросхемы преобразуется в аудио сигнал формата 5.1, а аудио сигнал формата 5.1 поступает на выход 5.1 без изменений.
PT2323 имеет следующие аудио выходы:
FR — правый канал фронт
FL — левый канал фронт
SR — правый канал тыл
SL — левый канал тыл
CT — центральный канал
SUB — канал сабвуфера
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();
}