0

ISSI 的 IS31FL3732A LED 驱动器适用于 144 个单 LED。该潜水员可以通过音频输入信号调制 LED 亮度。我想让一组 LED 静止,第二组动画,第三组亮度由音频输入调制。我做了前两组的行为并坚持第三组。看起来音频调制只能应用于所有 LED。

我的想法可行吗?如何实施?

我使用 Raspberry pi pico + CircuitPython 通过 i2c 连接来控制驱动程序。IS31FL3732 数据表

驱动初始化:

    write(0xFD, 0x0B)  # write function register
    write(0x0A, 0x00)  # enter software shutdown mode
    write(0x04, 0xff)  # global current=255
    for page in range(0, 8):
        write(0xFD, page)  # write frame
        for i in range(0, 0x12):
            write(i, 0xff)  # turn on all LED//Need to turn off the position where LED is not mounted
        for i in range(0x24, 0xB4):
            write(i, 0xff)  # write all PWM set 0x00//init all the PWM data to 0
    write(0xFD, 0x0B)  # write function register
    write(0x00, 0b00011000)  # audio frame play mode
    write(0x02, 0x00)  # endless frame play
    write(0x03, 0x18)  # frame delay 24 * 11 ms
    write(0x05, 0x00)  # display options: no blinking
    write(0x09, 0b00000000)  # breathing OFF
    write(0x06, 0x01)  # audio sync on
    write(0x01, 0x00)  # select first frame
    write(0x0A, 0x01)  # normal operation

然后我只是为每一帧设置 LED 的亮度

for frame in range(0, 8):
    write(0xFD, frame)  # write frame
    for i in range(0, 0x12):
        write(i, 0xff)  # turn on all LED
    for i in range(0x24, 0x54):
        write(i, 0xff)  # write PWM
    for i in range(0x54, 0x56 + frame * 2):
        write(i, 0xff)  # write PWM
    for i in range(0x56 + frame * 2, 0x64):
        write(i, 0x00)  # write PWM
    for i in range(0x64, 0x66 + frame * 2):
        write(i, 0xff)  # write PWM
    for i in range(0x66 + frame * 2, 0x74):
        write(i, 0x00)  # write PWM
    for i in range(0x74, 0x76 + frame * 2):
        write(i, 0xff)  # write PWM
    for i in range(0x76 + frame * 2, 0x84):
        write(i, 0x00)  # write PWM
    for i in range(0x84, 0xb4):
        write(i, 0xff)  # write PWM

如果您有任何想法如何仅制作由音频输入调制的最后一组 LED(从 0x84 到 0xb3 的 PWM 寄存器),我将不胜感激。

如果这不可能,我尝试使用 Raspberry pi pico ADC 手动制作此动画,但我想先检查更简单的方法:)

4

0 回答 0