1

Тема: PT2323

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

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();
}

PT2323.ino

// rcl-radio.ru / liman324@yandex.ru
#include <Wire.h>
#include <PT2323.h>
PT2323 rt0;
 
void setup() {
  Wire.begin();
}
 
void loop() {
  rt0.setInput(0); // входы 1...4 (0...3) или 6 моно (4)
  rt0.setMute(0,0,0,0,0,0,0); // 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
  rt0.setFeature(0,0); // дополнительные функции 0...3
                     // 0 - Enhanced Surround Function Active
                     // 1 - Enhanced Surround Function Disabled
                     // 0 - Mixed Channel (0dB) Setup
                     // 1 - Mixed Channel (+6dB) Setup 
  delay(1000);
}