144 個の単一 LED 用の ISSI による IS31FL3732A LED ドライバーがあります。このダイバーは、オーディオ入力信号によって LED の明るさを変調できます。LED の 1 つのグループを静的にし、2 番目のグループをアニメーション化し、3 番目のグループをオーディオ IN で明るさを調整したいと考えています。最初の 2 つのグループの動作を行い、3 番目のグループに固執しました。オーディオ変調はすべての 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 レジスタ) のみをオーディオ IN で変調する方法について、アイデアをいただければ幸いです。
これが不可能な場合は、Raspberry pi pico ADC を使用してこのアニメーションを手動で作成しようとしていますが、最初に簡単な方法を確認したいと思います :)