1

Тема: tc9260

Основная статья - http://rcl-radio.ru/?p=134035

#define STB   2
#define DATA  3
#define CK   4

void setup() {
  Serial.begin(9600);
  pinMode(STB, OUTPUT);digitalWrite(STB, LOW);
  pinMode(DATA, OUTPUT);digitalWrite(DATA, LOW);
  pinMode(CK, OUTPUT);digitalWrite(CK, LOW);
  delay(100);
}

void loop() {
  byte_tc9260(1,0, 1, 0);
  byte_tc9260(0,1, 39, 0);
  delay(1000);Serial.println();
  }
  
  void byte_tc9260(bool lh, bool rh, int vol, bool ld){
    int vol_1 = ((vol&0b100000)>>5)<<0|((vol&0b010000)>>4)<<1|((vol&0b001000)>>3)<<2|((vol&0b000100)>>2)<<3|((vol&0b000010)>>1)<<4|(vol&0b000001)<<5;
    Serial.println(vol_1,BIN);
    unsigned long data_byte = (lh<<12)|(rh<<11)|(vol_1<<5)|(ld<<4)|0b1011;
    // vol 0...40
    // lh rh 0...1
    // ld 0...1
    writeByte(data_byte);  
    }


void writeByte(uint16_t data){
    digitalWrite(STB, LOW); delayMicroseconds(3);
    for (int i = 12; i >= 0; i--) {
        digitalWrite(DATA, (data >> i) & 1); delayMicroseconds(3);
        Serial.print((data >> i) & 1);
        digitalWrite(CK, HIGH); delayMicroseconds(3);
        digitalWrite(CK, LOW); delayMicroseconds(3);
    }
    digitalWrite(STB, HIGH); delayMicroseconds(3);
    digitalWrite(STB, LOW); 
    Serial.println();
}

2

Re: tc9260

http://forum.rcl-radio.ru/uploads/images/2025/09/b3ca75863b63af505cc8f1507ccb6f06.pdf

3

Re: tc9260

Инверсия громкости

#define STB   2
#define DATA  3
#define CK   4

void setup() {
  Serial.begin(9600);
  pinMode(STB, OUTPUT);digitalWrite(STB, LOW);
  pinMode(DATA, OUTPUT);digitalWrite(DATA, LOW);
  pinMode(CK, OUTPUT);digitalWrite(CK, LOW);
  delay(100);
}

void loop() {
  byte_tc9260(1,0, 1, 0);
  byte_tc9260(0,1, 39, 0);
  delay(1000);Serial.println();
  }
  
  void byte_tc9260(bool lh, bool rh, int vol, bool ld){
    vol = 40-vol;
    int vol_1 =  ((vol&0b100000)>>5)<<0|((vol&0b010000)>>4)<<1|((vol&0b001000)>>3)<<2|((vol&0b000100)>>2)<<3|((vol&0b000010)>>1)<<4|(vol&0b000001)<<5;
    vol_1 = vol_1;
    Serial.println(vol_1,BIN);
    unsigned long data_byte = (lh<<12)|(rh<<11)|((vol_1)<<5)|(ld<<4)|0b1011;
    // vol 0...40
    // lh rh 0...1
    // ld 0...1
    writeByte(data_byte);  
    }


void writeByte(uint16_t data){
    digitalWrite(STB, LOW); delayMicroseconds(3);
    for (int i = 12; i >= 0; i--) {
        digitalWrite(DATA, (data >> i) & 1); delayMicroseconds(3);
        Serial.print((data >> i) & 1);
        digitalWrite(CK, HIGH); delayMicroseconds(3);
        digitalWrite(CK, LOW); delayMicroseconds(3);
    }
    digitalWrite(STB, HIGH); delayMicroseconds(3);
    digitalWrite(STB, LOW); 
    Serial.println();
}