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 手动制作此动画,但我想先检查更简单的方法:)