14
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

LEDドットマトリクスパネル HUB75規格について調べてみた

Last updated at Posted at 2017-09-24

追記(2019/10/20): 後日談ですが、当時結局この方法でC++のコードを書いたところ、うまく動きませんでした。おそらくどこかが間違っていると思われます。間違った情報をお伝えしてしまい、申し訳ありませんでした。

どうも、予定が一杯でリア充のかちおです(違

諸事情で秋葉原のピカリ館でHUB75型の32x32のLED Matrix Panelを購入し、いじろうと思ったのでメモ。調べても日本語情報全然出てこなかった。

どうやら通常はライブラリを使うらしいが、公式にはArduinoしか対応しておらず、なんとか汎用IOで操作したいため、データシートとにらめっこした。

公式のリファレンスとかデータシートとかサンプルコードを翻訳しながら書いていく。

画面構成

合計1024個のLED(とRGB)をすべて同時に光らせることは現実的ではないので、全16セクションに分けるとのこと。

32のLED、横に32列ある。
全部で32列。
1セクションは一番上の1列目と真ん中の17列目、2セクションは2と18列目…らしい。

余談ですが、32x16のパネルは1と9、2と10…って組み合わせらしい。まあそれが妥当。

セクション
1 1と17
2 2と18
3 3と19
16 16と32

1セクションは 32LED x 2列 で64LED。さらにRGBがあるので3を掛けて192。
なのでセクションごとにこの192bitを送ってあげればいいらしい。

人間の目からしたら残像だけど、実際には同時に1セクション(64LED)しか光らないらしい。
まあそうだよね。

セクション(192個のLED)の光らせ方

まず接続端子にR1、G1、B1、R2、G2、B2、っていうピンがあると思う。もしかしたら1と2じゃなくて0と1の組み合わせかもしれない。ぼくの場合はそうだった。

ブルース展開でいうと{R,G,B}{1,2}か{R,G,B}{0,1}ですね。
とりあえず1と2で行きます。

これによって、同時に2つのLEDの状態を制御できます。RGB2つ分ですね。
で、セクションの上の列と下の列のLEDをそれぞれ同時に光らせることができます。

なので、一回のデータ送信で、セクションの上の列と下の列の一番左のLEDを光らせられるとのこと。これを32回繰り返します。

なので、たとえば1列目を白色に交互に点灯、17列目を赤青緑交互に光らせたい場合は以下のようになります。
ちなみに送信するごとにのクロックは、接続端子CLKから送るようです。これもSLCKとか色々呼び方があるようす。
あと、送信データは逆の値(負論理)、つまり光らせたかったらLOW、消したかったらHIGHらしいです。

送信 1 2 3 4 5 6 7 32
R1 0 1 0 1 0 1 0 1
G1 0 1 0 1 0 1 0 1
B1 0 1 0 1 0 1 0 1
上の色

|
| R2| 0 | 1 | 1 | 0 | 1 | 1 | 0 | … | 0 |
| G2| 1 | 0 | 1 | 1 | 0 | 1 | 1 | … | 1 |
| B2| 1 | 1 | 0 | 1 | 1 | 0 | 1 | … | 1 |
|下の色|赤|緑|青|赤|緑|青|赤|…|青

セクションの選び方

これで同時に離れた2列を表示できるようになりました。次はセクションを選ぶ必要があります。
接続端子にABC(D)があると思うのですが、これがセクションを選ぶ4ビットになります。
2進数で、0000から1111です。これで1セクションから16セクションまでを選択するとのこと。

最終的なピンの操作順序


1. 全ピンをLOWにする。(最初だけ)


2. R1 G1 B1 R2 G2 B2をそれぞれ上に書いたようにLOWかHIGHにする。
3. CLKをHIGHにする。
4. CLKをLOWにする。これでLED2個分が書き込まれた。

5. これと同じように、2~4をあと31回繰り返す。これで1セクションのデータ分書き込み終わる。

6. ABCDの4bit使って送り込みたいセクションを決める。最初は0000とか。
7. OEをHIGHにする。画面表示有効のフラグらしい。
8. LAT(STB)をHIGHにする。これでLEDが光る。
9. LAT(STB)をLOWにする。
10. OEをLOWにする。

11. 以上、2~10をセクションを変えながら8回分繰り返す。これを高速で繰り返すことで画面を全部表示できる。ちなみに止めたらその瞬間消える(たぶん)

参考

https://hima-tubusi.blogspot.jp/2017/05/hub75_30.html
https://gist.github.com/CLCL/4509360739cccfca8f64
https://www.thingiverse.com/thing:1508087
https://cdn-learn.adafruit.com/downloads/pdf/32x16-32x32-rgb-led-matrix.pdf

14
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?