見出し画像

LEDマトリクスを制御する2(RaspberryPi + HUB75規格)

前回の続き。
LEDマトリクスの挙動がおかしいところを調査した結果をまとめる。

セクションの数を間違えていた
セクションを選択するピンが3本あるため、0~7の8セクションあると思っていたが実際は4セクションだった。(Cピンは未使用)
1セクション当たり16回だけ書き込みを行っていたが、32回書き込むように修正し解決。
(セクション数(4) × セクション当たりのマス数(32) = 128マス
それが2つのエリア毎にあるので×2 で 256マスになる。)

LED情報の書き込み方を間違えていた
クロックでずれるのはLED情報を書き込む先ではなく、書き込んだLED情報がずれる。図にすると以下のようになる。
最初はこのように書き込むものだと思っていた。
(※図の矢印は書き込む先を表している)

しかし、実際は次のように書き込まれる。

つまり、書き込む先は常に固定になっていて、書き込んだLED情報がクロックの度にずれていく。なので、このずれを考慮しで書き込む必要がある。
セクション毎にどのようにずれていくかをまとめたのが次の図。

マスの中の数字は必要なクロックの回数です。書き込みは常に0番に行われるため、31番のマスを光らせようと思った場合は、0番に情報を書き込んでからクロックを31回発生させる必要がある。なお、31番の次は0番に戻る。

ここまで解れば後は実装するだけです。
ソースは、ここに置いておくので、参考になると思います。

このライブラリを使ってライフゲームでグライダを飛ばしてみるとこんな感じになる。ところどころ関係ないマスも光ってるのは少し気になるが、まぁいいでしょう。

あとはUI周りをちょいと作っていきたいかなー、と思っています。
といったところで今回はここまで。


この記事が気に入ったらサポートをしてみませんか?