1

Тема: PT2257

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

PT2257.h

// PT2257 | rcl-radio.ru | liman324@yandex.ru | Автор: Лиман А.А.
#ifndef  PT2257_H
#define  PT2257_H

#define  PT2257_address 0x44 // адрес

#include <Arduino.h>
class  PT2257
{
  public:
     PT2257();
        void setLeft(int left);      // 0...-79 дБ  int 0...79
        void setRight(int right);    // 0...-79 дБ  int 0...79
        void setMute(int mute);      // int 1 - on mute  | int 0 - off mute
  private:
	void writeWire(char a);
};
	
#endif // PT2257_H

PT2257.cpp

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

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

void PT2257::setLeft(int left){
        left = 78 - left;
    int left10 = left / 10;
    int left01 = left - left10 * 10;

  writeWire(left10+0b10110000);
  writeWire(left01+0b10100000);
}

void PT2257::setRight(int right){
        right = 78 - right;
    int right10 = right / 10;
    int right01 = right - right10 * 10;

  writeWire(right10+0b00110000);
  writeWire(right01+0b00100000);
}

void PT2257::setMute(int mute){
 if(mute == 1){
  writeWire(0b01111001);}
 else{
  writeWire(0b01111000);}
}

void PT2257::writeWire(char a){
  Wire.beginTransmission(PT2257_address);
  Wire.write (a);
  Wire.endTransmission();
}

PT2257.ino

#include <Wire.h>
#include <PT2257.h>
PT2257 rt;

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

void loop() {
  rt.setLeft(33); // int 0...79 
  rt.setRight(33);// int 0...79
  rt.setMute(0);  // int 0...1
  delay(1000);
}