akira.keiのアイコン画像
akira.kei 2026年09月27日作成 © MIT
セットアップや使用方法 セットアップや使用方法 閲覧数 46
akira.kei 2026年09月27日作成 © MIT セットアップや使用方法 セットアップや使用方法 閲覧数 46

LEDマトリクスを点灯させる

LEDマトリクスをどうやって点灯するのか

結構前に秋月電子通商で100円くらいで投げ売りされていた「TOM1588BH-B」を何個か買ってあって、いつか使おうと思っていた。でも試そうとしたら結構ハードルが高くて面倒くさくなって放置していた。(今買うと代替品が250円する)

  • 8x8ドットマトリクスLEDなので当然16本の結線が必要
  • ダイナミック点灯が前提なのでソフトウェアが煩雑
  • ダイナミック点灯なので暗くなりがちだから電流を多く流したい(一灯当たり10から20mAくらい)
  • 電流を多く流すのでマイコンで直接ドライブできない
  • アノード側とカソード側の両方にトランジスタドライブを入れると3.3V系では電圧不足

結局、アノード側(ソース)ドライバにTBD62783APG、カソード側(シンク)ドライバにTBD62083APDを入れて、電源は5Vにしてrp2040-zeroで16本+5V電源供給でドライブしてみた。
キャプションを入力できます

LEDマトリクスのピンアサインはアノードとカソードが入り乱れているので、後ろの1段目でアノード抵抗220Ωとカソードのピンアサインを分け、2段目でドライバICを配置している。実際に使用する際には8x8では表示領域は足りないわけで、複数個の組み合わせが必要になる。それぞれに8+8+2=18本を配線するのはナンセンスなので、この後ろに更にマイコン基板を実装して配線本数を削減する必要がある。

MicroPythonなら簡単に点灯させられるはずだが

コードは以下のようにダイナミック点灯をさせてみた。ピンアサインはハードウェア優先だったので、かなり入り乱れている。

import utime from machine import Pin, Timer ANODES = [5, 7, 4, 6, 0, 3, 1, 2] CATHODES = [ 11, 12, 14, 8, 15, 9, 10, 13] anodes = [Pin(p, Pin.OUT) for p in ANODES] cathodes = [Pin(p, Pin.OUT) for p in CATHODES] for pin in anodes: pin.value(0) for pin in cathodes: pin.value(0) while True: for i in range(0,8): cathodes[i].value(1) for j in range (0,8): anodes[j].value(1) utime.sleep_ms(100) anodes[j].value(0) cathodes[i].value(0)

で、やってみたのだがどうにもおかしい。明るさが一定じゃないし点灯抜けもあり、何度もはんだ付けをやり直したり、各部の電圧を測ってみたが解決しなかった。

RP2040-Zeroのピン出力がおかしい

そもそもRP2040-zeroのピン出力は3.3Vしかないはずなのに、どのピンにも5Vが出ている!なんでやねん。それにGP11の反応がない。このマイコン、どうやらただのしかばねのようだ。。。

マイコンを交換しても直らない

紆余曲折の後、ストックしてあるマイコンを交換してまた試したが、症状が微妙に改善されただけで直らない。もしかしてマトリクス側の部品の問題なの?と全点灯治具を作って点灯チェックをしてみたら。。。
キャプションを入力できます
つかねぇじゃねえか!!しかもムラがある。。。こいつもダメだw

もう疲れたよ

マイコンもマトリクスも交換してようやく動いたが、今日はもう疲れたよ(パトラッシュ)
キャプションを入力できます

akira.keiのアイコン画像
機械系エンジニアだが電子工作を趣味としている。週末はひとりバーベキュー。
  • akira.kei さんが 前の日曜日の22:31 に 編集 をしました。 (メッセージ: 初版)
ログインしてコメントを投稿する