126

Re: M61541fp + PT2323 на Microlab H-600

http://rcl-radio.ru/wp-content/uploads/ … 5220fp.pdf

я не вижу больше настроек которые управляют этими выходами

127

Re: M61541fp + PT2323 на Microlab H-600

Можно попробовать на тестовом скетче запустить эти выходы

// R2A15218FP
#define DATA  2
#define CLK   3


#include "Arduino.h"
#include <Librarie_R2A15218FP_V1_1.h>


Librarie_R2A15218FP_V1_1 librarie_R2A15218FP_V1_1(DATA, CLK); 



// Уровни громкости аудиоканалов (базовое значение — -40 дБ)

int cch_volume = 0;     // Центральный канал (Cch)
    // Диапазон регулировки: –95…+42 дБ (ослабление + усиление)
    // Конфигурация: таблица Volume (0…–95 dB), колонка Cch

int srch_volume = 0;    // Правый тыловой канал (SRch)
    // Диапазон регулировки: –95…+42 дБ (ослабление + усиление)
    // -95…0 дБ: базовое ослабление (таблица Volume, 0…–95 dB)
    // 0…+42 дБ: дополнительное усиление (таблица Volume, 0…+42 dB)

int slch_volume = 0;    // Левый тыловой канал (SLch)
    // Диапазон регулировки: –95…+42 дБ (ослабление + усиление)
    // -95…0 дБ: базовое ослабление (таблица Volume, 0…–95 dB)
    // 0…+42 дБ: дополнительное усиление (таблица Volume, 0…+42 dB)

int swch_volume = 0;   // Сабвуфер (SWch)
    // Диапазон регулировки: –95…+42 дБ (ослабление + усиление)
    // Конфигурация: таблица Volume (0…–95 dB), колонка SWch

int flch_volume = 0;   // Левый фронтальный канал (FLch) — базовое ослабление
    // Диапазон: –95…0 дБ (таблица Volume, 0…–95 dB)

// Дополнительное усиление для левого фронтального канала (над базовым уровнем)
int flch_volume_up = 0; // FLch Volume Up
    // Диапазон усиления: 0…+42 дБ
    // Конфигурация: таблица Volume (0…+42 dB), колонка FLch

int frch_volume = 0;   // Правый фронтальный канал (FRch) — базовое ослабление
    // Диапазон: –95…0 дБ (таблица Volume, 0…–95 dB)

// Дополнительное усиление для правого фронтального канала
int frch_volume_up = 0; // FRch Volume Up
    // Диапазон усиления: 0…+42 дБ
    // Конфигурация: таблица Volume (0…+42 dB), колонка FRch

// Настройки эквалайзера
int bass = 0;             // Регулировка басов (BASS)
    // Диапазон: –14…+14 дБ
    // Позволяет корректировать низкие частоты

int treble = 0;           // Регулировка высоких частот (TREBLE)
    // Диапазон: –14…+14 дБ
    // Управляет яркостью и детализацией звука

// Управление входными сигналами (согласно таблице Input Selector)

int sl_sr_vol_input = 0; // Чувствительность тыловых входов (SL/SR)
    // Задаётся битами D18e и D19e
    // Режимы (см. таблицу Input Selector):
    //   00 (D18e=0, D19e=0) — Multi IN1 (первый мультивход, по умолчанию)
    // Влияет на уровень входного сигнала для SL/SR

int l_r_vol_input = 0;   // Входной сигнал для L/R каналов
    // Управление битами D8a и D9a (см. таблицу Input Selector)
    // Режимы:
    //   00 (D8a=0, D9a=0) — Bypass MAIN (основной вход, без обработки) — по умолчанию
    //   01 (D8a=0, D9a=1) — Multi IN1 (альтернативный источник)
    //   11 (D8a=1, D9a=1) — Multi IN2 (второй альтернативный источник)

// Режимы записи
int rec_i_o = 0;         // Переключение REC I/O (воспроизведение/запись)
    // 0 — воспроизведение (по умолчанию)
    // 1 — активация записи

int input_sub = 0;       // Вспомогательный вход (INPUT SUB)
    // 0 — отключён (по умолчанию)
    // 1 — активирован (альтернативный источник)
    // При активации использует настройки из секции IF D20a = 1 таблицы Input Selector

int input_main = 0;      // Основной вход (INPUT MAIN)
    // 0 — выбран основной вход (по умолчанию)
    // Соответствует IN1–IN14 в таблице Input Selector (выбор основного источника)

int rec_m_s = 0;         // Режим Mid/Side (REC M/S)
    // 0 — отключён (по умолчанию)
    // 1 — включён (захват пространственного звука: Mid + Side)

// Каналы записи (многоканальная система)
int rec5 = 0;            // Канал REC 5
    // 0 — неактивен (по умолчанию)
int rec4 = 0;            // Канал REC 4
    // 0 — неактивен (по умолчанию)
int rec3 = 0;            // Канал REC 3
    // 0 — неактивен (по умолчанию)
int rec2 = 0;            // Канал REC 2
    // 0 — неактивен (по умолчанию)
int rec1 = 0;            // Канал REC 1
    // 0 — неактивен (по умолчанию)

// Аттенюация перед АЦП (ATT out ADC)
int att = 0;             // Ослабление сигнала
    // Уровни (биты D19d, D20d):
    //   00 — 0 дБ (без ослабления)
    //   01 — –6 дБ
    //   10 — –12 дБ
    //   11 — –18 дБ (максимальное ослабление)

// Выбор источника для C/SW каналов
int c_sw_v = 0;         // C/SW Vol INPUT (бит D18d)
    // 0 — Multi IN1 (по умолчанию) — соответствует IN1–IN14 из таблицы
    // 1 — Multi IN2 — альтернативный набор входов (см. таблицу Input Selector)

// Микширование и обход обработки
int mix = 0;            // Режим микширования (MIX)
    // 0 — стандартное микширование (по умолчанию)
    // Другие значения меняют способ объединения каналов

int bypass = 1;          // Режим обхода обработки (BYPASS)
    // 1 — обработка отключена (сигнал идёт напрямую, по умолчанию)
    // 0 — обработка активна (эквалайзер, эффекты включены)

// Примечания по таблице Input Selector:
// - IN1–IN14 — основные входы, выбираются через input_main
// - INA/INB — дополнительные входы, активируются при D20a = 1
// - Комбинации битов D4a–D7a, D0a–D3a определяют конкретный вход
// - По умолчанию всегда активен Multi IN1 (00 в управляющих битах)

void setup() {
  // this calls the library
  librarie_R2A15218FP_V1_1.R2A15218FP_V1_1(rec_i_o, bass, l_r_vol_input, input_sub, input_main, treble, flch_volume_up, flch_volume, rec_m_s, rec5, rec4, rec3, rec2, rec1, frch_volume_up, frch_volume, att, c_sw_v, swch_volume, cch_volume, sl_sr_vol_input, srch_volume, slch_volume, mix, bypass); 
 
}

void loop() {}

128

Re: M61541fp + PT2323 на Microlab H-600

только 5.1 работает

129

Re: M61541fp + PT2323 на Microlab H-600

Раз на 5,1 работает, значит и на стерео входах должно, просто надо подобрать значения переменных.

130 (2026-02-24 03:31:01 отредактировано EssE)

Re: M61541fp + PT2323 на Microlab H-600

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

131

Re: M61541fp + PT2323 на Microlab H-600

int l_r_vol_input = 0;   // Входной сигнал для L/R каналов
    // Управление битами D8a и D9a (см. таблицу Input Selector)
    // Режимы:
    //   00 (D8a=0, D9a=0) — Bypass MAIN (основной вход, без обработки) — по умолчанию
    //   01 (D8a=0, D9a=1) — Multi IN1 (альтернативный источник)
    //   11 (D8a=1, D9a=1) — Multi IN2 (второй альтернативный источник)


int sl_sr_vol_input = 3;  // SL/SR Vol INPUT int 0,1,2,3
     // Multi IN1    int 0
     // Multi IN2    int 1
     // S(R/L)CIN    int 2
     // SB(R/L)CIN   int 3

132 (2026-02-24 11:36:25 отредактировано EssE)

Re: M61541fp + PT2323 на Microlab H-600

когда int sbl_sbr_vol_input=1 задний тил включается но на библиотеку не предусмотрено

133

Re: M61541fp + PT2323 на Microlab H-600

int sbl_sbr_vol_input=1

- из какой это библиотеки?

134

Re: M61541fp + PT2323 на Microlab H-600

r2a15220af

135

Re: M61541fp + PT2323 на Microlab H-600

Я не могу найти этот параметр sbl_sbr_vol_input в библиотеке

136 (Вчера 00:54:04 отредактировано EssE)

Re: M61541fp + PT2323 на Microlab H-600

#ifndef __R2A15220FP__
#define __R2A15220FP__
#include <Arduino.h>

typedef union {
    struct Da {
        unsigned int address     : 3;   // 001
        unsigned int rec_i_o     : 1;
        unsigned int enable_rec_out : 1;
        unsigned int bass        : 4;
        unsigned int frt_to_sur  : 1;
        unsigned int fillerA     : 2;
        unsigned int sblsbr_vol_in : 2;
        unsigned int l_r_vol_in  : 2;
        unsigned int input_sub   : 4;
        unsigned int input_main  : 4;
        unsigned int filler8     : 8;
    } DA ;
    struct ui1 { uint32_t ui; } UI1 ;
} regA ;

typedef union {
    struct Db {
        unsigned int address     : 3;   // 010
        unsigned int fillerA     : 2;
        unsigned int treble      : 4;
        unsigned int flch_vol_hi : 7;
        unsigned int flch_vol_lo : 8;
        unsigned int filler8     : 8;
    } DB ;
    struct ui1 { uint32_t ui; } UI1 ;
} regB ;

typedef union {
    struct Dc {
        unsigned int address     : 3;   // 011
        unsigned int recm_s      : 1;
        unsigned int rec5        : 1;
        unsigned int rec4        : 1;
        unsigned int rec3        : 1;
        unsigned int rec2        : 1;
        unsigned int rec1        : 1;
        unsigned int frch_vol_hi : 7;
        unsigned int frch_vol_lo : 8;
        unsigned int filler8     : 8;
    } DC ;
    struct ui1 { uint32_t ui; } UI1 ;
} regC ;

typedef union {
    struct Dd {
        unsigned int address     : 3;   // 100
        unsigned int ATT         : 2;
        unsigned int c_sw_vol    : 1;
        unsigned int swch_vol    : 9;
        unsigned int cch_vol     : 9;
        unsigned int filler8     : 8;
    } DD ;
    struct ui1 { uint32_t ui; } UI1 ;
} regD ;

typedef union {
    struct De {
        unsigned int address     : 3;   // 101
        unsigned int fillerA     : 1;
        unsigned int sl_sr_vol_i : 2;
        unsigned int srch_vol    : 9;
        unsigned int slch_vol    : 9;
        unsigned int filler8     : 8;
    } DE ;
    struct ui1 { uint32_t ui; } UI1 ;
} regE ;

typedef union {
    struct Df {
        unsigned int address     : 3;   // 110
        unsigned int fillerB     : 1;
        unsigned int mix         : 1;
        unsigned int bypass      : 1;
        unsigned int sbrch_vol   : 9;   // Громкость SBR
        unsigned int sblch_vol   : 9;   // Громкость SBL
        unsigned int filler8     : 8;
    } DF ;
    struct ui1 { uint32_t ui; } UI1 ;
} regF ;

typedef union {
    struct Dg {
        unsigned int address     : 3;   // 111
        unsigned int fillerA     : 21;
        unsigned int filler8     : 8;
    } DG ;
    struct ui1 { uint32_t ui; } UI1 ;
} regG ;

class R2A15220FP {
    private:
        uint8_t _d;
        uint8_t _c;
        int _front_balance; // left - right volume difference
        regA Aregister;
        regB Bregister;
        regC Cregister;
        regD Dregister;
        regE Eregister;
        regF Fregister;
        regG Gregister;

    public:
        R2A15220FP(uint8_t, uint8_t);
        void dump (uint8_t addr);
        void send (uint32_t s);
        void set_front_vol(int16_t v);
        void set_center_vol(int16_t v);
        void set_subwoof_vol(int16_t v);
        void set_surround_vol(int16_t v);
        void set_surround_back_vol(int16_t v); 
        void set_main_input (uint8_t which);
        void set_sub_input (uint8_t which);
        void set_bass (int16_t bv);
        void set_treble (int16_t tv);
        void set_LR_vol_input (uint8_t v);
        void set_SLSR_vol_input (uint8_t v);
        void set_att_out_level (uint8_t v);
        void set_tone_bypass (bool v);
        void set_mix_plus_tone_bypass (bool v);
        void set_cent_subw_vol_input (bool v);
        void set_rec_input_main_sub (bool v);
        void set_recN (uint8_t n, bool v);
        void set_rec_i_o_bypass (bool v);
        void set_SBLSBR_vol_input (uint8_t v);
        void set_front_to_surround_input (bool b);
        void set_enable_rec_out(bool b);
        void set_mystery_A_v(uint8_t v); 
        void set_mystery_B_v(uint8_t v);
        void set_mystery_F_v(uint8_t v); 
        void set_mystery_F_b(bool b);
        void set_mystery_G_v(uint8_t v);
        void set_front_balance(int v);
};

#endif
#include "r2a15220fp.h"
#include <Arduino.h>

#define BIT_DELAY 2

static const uint8_t tone_lookup[16] = { 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0,
                                         0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0 };

R2A15220FP::R2A15220FP(uint8_t data, uint8_t clock) {
    this->_d = data;
    this->_c = clock;
    this->_front_balance = 0;
    this->Aregister.DA.address     = 1;
    this->Bregister.DB.address     = 2;
    this->Cregister.DC.address     = 3;
    this->Dregister.DD.address     = 4;
    this->Eregister.DE.address     = 5;
    this->Fregister.DF.address     = 6;
    this->Gregister.DG.address     = 7;

    // Автоматически направляем сигнал с входов SBLCIN/SBRCIN
    this->Aregister.DA.sblsbr_vol_in = 2;

    pinMode(this->_c, OUTPUT);
    pinMode(this->_d, OUTPUT);
    digitalWrite(this->_c, LOW);
    digitalWrite(this->_d, LOW);
    
    // Сразу отправляем настройку входа в чип
    send(Aregister.UI1.ui);
}

void R2A15220FP::dump (uint8_t address) {
  uint32_t ui32;
  switch(address) {
    case 1 : ui32 = Aregister.UI1.ui; break;
    case 2 : ui32 = Bregister.UI1.ui; break;
    case 3 : ui32 = Cregister.UI1.ui; break;
    case 4 : ui32 = Dregister.UI1.ui; break;
    case 5 : ui32 = Eregister.UI1.ui; break;
    case 6 : ui32 = Fregister.UI1.ui; break;
    case 7 : ui32 = Gregister.UI1.ui; break;
  }
  Serial.printf("%c: ", ('A' - 1) + address);
  for(int i = 0 ; i < 24 ; i++) {
    Serial.printf("%1d ", (unsigned int)((ui32 & 0x800000) >> 23));
    if(!((i+1) % 8)) Serial.printf(" ");
    ui32 <<= 1;
  }
  Serial.printf("\n");
}

void R2A15220FP::send (uint32_t s) {
  for(int i = 0 ; i < 23 ; i++) {
    digitalWrite(_d, (s & 0x800000) >> 23);
    delayMicroseconds(BIT_DELAY);
    digitalWrite(_c, HIGH);
    delayMicroseconds(BIT_DELAY);
    digitalWrite(_d, LOW);
    delayMicroseconds(BIT_DELAY);
    digitalWrite(_c, LOW);
    delayMicroseconds(BIT_DELAY);
    s <<= 1;
  }
  digitalWrite(_d, (s & 0x800000) >> 23);
  delayMicroseconds(BIT_DELAY);
  digitalWrite(_c, HIGH);
  delayMicroseconds(BIT_DELAY);
  digitalWrite(_d, HIGH);
  delayMicroseconds(BIT_DELAY);
  digitalWrite(_c, LOW);
  delayMicroseconds(BIT_DELAY);
  digitalWrite(_d, LOW);
}

void R2A15220FP::set_front_vol(int16_t v) {
  int16_t lv = v + (_front_balance >> 1);
  int16_t rv = v - (_front_balance >> 1);
  if(lv <= 0) {
    Bregister.DB.flch_vol_hi = 0; 
    if(lv < -190) { lv = -190; };
    Bregister.DB.flch_vol_lo = 0 - lv; 
  }
  else {
    Bregister.DB.flch_vol_lo = 0; 
    if(lv > 84) { lv = 84; }
    Bregister.DB.flch_vol_hi = lv; 
  }
  if(rv <= 0) {
    Cregister.DC.frch_vol_hi = 0; 
    if(rv < -190) { rv = -190; };
    Cregister.DC.frch_vol_lo = 0 - rv; 
  }
  else {
    Cregister.DC.frch_vol_lo = 0; 
    if(rv > 84) { rv = 84; }
    Cregister.DC.frch_vol_hi = rv; 
  }
  send(Bregister.UI1.ui);
  send(Cregister.UI1.ui);
}

void R2A15220FP::set_subwoof_vol(int16_t v) {
  if(v <= 0) {
    if(v < -190) { v = -190; };
    Dregister.DD.swch_vol = 0 - v; 
  }
  else {
    if(v > 84) { v = 84; }
    Dregister.DD.swch_vol = v + 384; 
  }
  send(Dregister.UI1.ui);
}

void R2A15220FP::set_center_vol(int16_t v) {
  if(v <= 0) {
    if(v < -190) { v = -190; };
    Dregister.DD.cch_vol = 0 - v; 
  }
  else {
    if(v > 84) { v = 84; }
    Dregister.DD.cch_vol = v + 384; 
  }
  send(Dregister.UI1.ui);
}

void R2A15220FP::set_surround_vol(int16_t v) {
  if(v <= 0) {
    if(v < -190) { v = -190; };
    Eregister.DE.srch_vol = 0 - v; 
    Eregister.DE.slch_vol = 0 - v; 
  }
  else {
    if(v > 84) { v = 84; }
    Eregister.DE.srch_vol = v + 384; 
    Eregister.DE.slch_vol = v + 384; 
  }
  send(Eregister.UI1.ui);
}

void R2A15220FP::set_main_input (uint8_t which) {
  Aregister.DA.input_main = --which;
  Aregister.DA.rec_i_o = (which == 0x0b || which == 0x0c) ? 1 : 0;
  send(Aregister.UI1.ui);
}

void R2A15220FP::set_SBLSBR_vol_input (uint8_t v) {
  Aregister.DA.sblsbr_vol_in = v;
  send(Aregister.UI1.ui);
}

void R2A15220FP::set_front_to_surround_input (bool b) {
  Aregister.DA.frt_to_sur = b;
  send(Aregister.UI1.ui);
}

void R2A15220FP::set_mystery_A_v(uint8_t v) {
  Aregister.DA.fillerA = v;
  send(Aregister.UI1.ui);
}

void R2A15220FP::set_enable_rec_out(bool b) {
  Aregister.DA.enable_rec_out = b;
  send(Aregister.UI1.ui);
}

void R2A15220FP::set_sub_input (uint8_t which) {
  Aregister.DA.input_sub = --which;
  Aregister.DA.rec_i_o = (which == 0x0b || which == 0x0c) ? 1 : 0;
  send(Aregister.UI1.ui);
}

void R2A15220FP::set_bass (int16_t bv) {
  if(bv > 14) { bv = 14; }
  if(bv < -14) { bv = -14; }
  bv += 14;
  Aregister.DA.bass = tone_lookup[bv/2];
  send(Aregister.UI1.ui);
}

void R2A15220FP::set_treble (int16_t tv) {
  if(tv > 14) { tv = 14; }
  if(tv < -14) { tv = -14; }
  tv += 14;
  Bregister.DB.treble = tone_lookup[tv/2];
  send(Bregister.UI1.ui);
}

void R2A15220FP::set_mystery_B_v(uint8_t v) {
  Bregister.DB.fillerA = v;
  send(Bregister.UI1.ui);
}

void R2A15220FP::set_LR_vol_input (uint8_t v) {
  v &= 0x03;
  if(v == 2) return;
  Aregister.DA.l_r_vol_in = v;
  send(Aregister.UI1.ui);
}

void R2A15220FP::set_SLSR_vol_input (uint8_t v) {
  v &= 0x03;
  Eregister.DE.sl_sr_vol_i = v;
  send(Eregister.UI1.ui);
}

void R2A15220FP::set_att_out_level (uint8_t v) {
  v &= 0x03;
  Dregister.DD.ATT = v;
  send(Dregister.UI1.ui);
}

void R2A15220FP::set_tone_bypass (bool b) {
  Fregister.DF.bypass = b;
  send(Fregister.UI1.ui);
}

void R2A15220FP::set_mix_plus_tone_bypass (bool b) {
  Fregister.DF.mix = b;
  send(Fregister.UI1.ui);
}

void R2A15220FP::set_mystery_F_v(uint8_t v) {
  send(Fregister.UI1.ui);
}

void R2A15220FP::set_mystery_F_b(bool b) {
  Fregister.DF.fillerB = b;
  send(Fregister.UI1.ui);
}

void R2A15220FP::set_mystery_G_v(uint8_t v) {
  send(Gregister.UI1.ui);
}

void R2A15220FP::set_cent_subw_vol_input (bool b) {
  Dregister.DD.c_sw_vol = b;
  send(Dregister.UI1.ui);
}

void R2A15220FP::set_rec_input_main_sub (bool v) {
  Cregister.DC.recm_s = v;
  send(Cregister.UI1.ui);
}

void R2A15220FP::set_recN (uint8_t n, bool v) {
  switch(n) {
    case 1 : Cregister.DC.rec1 = v; break;
    case 2 : Cregister.DC.rec2 = v; break;
    case 3 : Cregister.DC.rec3 = v; break;
    case 4 : Cregister.DC.rec4 = v; break;
    case 5 : Cregister.DC.rec5 = v; break;
  }
  send(Cregister.UI1.ui);
}

void R2A15220FP::set_rec_i_o_bypass (bool v) {
  Aregister.DA.rec_i_o = v;
  send(Aregister.UI1.ui);
}

void R2A15220FP::set_front_balance(int v) {
  _front_balance = v;
}

// ИСПРАВЛЕНО: Громкость для SBL/SBR со смещением +256 (согласно даташиту)
void R2A15220FP::set_surround_back_vol(int16_t v) {
  if(v <= 0) {
    if(v < -190) { v = -190; };
    Fregister.DF.sbrch_vol = 0 - v; 
    Fregister.DF.sblch_vol = 0 - v; 
  }
  else {
    if(v > 84) { v = 84; }
    // Используем 256 как бит Gain
    Fregister.DF.sbrch_vol = v + 256; 
    Fregister.DF.sblch_vol = v + 256; 
  }
  // Выключаем mix/bypass, чтобы сигнал 100% шел на выход
  Fregister.DF.mix = 0;
  Fregister.DF.bypass = 0;
  send(Fregister.UI1.ui);
}
liman324 пишет:

Я не могу найти этот параметр sbl_sbr_vol_input в библиотеке

137

Re: M61541fp + PT2323 на Microlab H-600

блин звук серавно нету я не знаю что за проблема или написать библиотеку с нуля

138

Re: M61541fp + PT2323 на Microlab H-600

Вроде как нашел ошибку в библиотеке, в файле .cpp

найдите строки

    if (l_r_vol_input == 0)    var4 = 0b00000000;
    if (l_r_vol_input == 1)    var4 = 0b00000010;
    if (l_r_vol_input == 2) var4 = 0b00000011;

замените на

    if (l_r_vol_input == 0)    var4 = 0b00000000;
    if (l_r_vol_input == 1)    var4 = 0b00000001;
    if (l_r_vol_input == 2) var4 = 0b00000011;

http://forum.rcl-radio.ru/uploads/images/2026/02/c13b791e9d6b13f36b46b47fa45c956b.png

должно быть 00 01 11, а в библиотеке 00 10 11

139

Re: M61541fp + PT2323 на Microlab H-600

ок вечером буду изменить

liman324 пишет:

Вроде как нашел ошибку в библиотеке, в файле .cpp

найдите строки

    if (l_r_vol_input == 0)    var4 = 0b00000000;
    if (l_r_vol_input == 1)    var4 = 0b00000010;
    if (l_r_vol_input == 2) var4 = 0b00000011;

замените на

    if (l_r_vol_input == 0)    var4 = 0b00000000;
    if (l_r_vol_input == 1)    var4 = 0b00000001;
    if (l_r_vol_input == 2) var4 = 0b00000011;

http://forum.rcl-radio.ru/uploads/images/2026/02/c13b791e9d6b13f36b46b47fa45c956b.png

должно быть 00 01 11, а в библиотеке 00 10 11