##はじめに
最近、Twitterなどで3色LEDを 64x32 や 64x64 のマトリクス状に配置したマトリクスLEDパネルの書き込みや写真が話題になっているので、便乗して私が分かっている範囲でメモを残したいと思います。
CQ出版の**Interface誌 2018年10月号「ESP実験コーナー」**にもマトリクスLEDパネルに関する記事を執筆していますので、そちらも参考にしてみてください。
https://interface.cqpub.co.jp/magazine/201810/
https://interface.cqpub.co.jp/wp-content/uploads/if10_156.pdf
##マトリクスLEDパネルの種類
マトリクスLEDと一言でいうと多種多様な製品、部品があるのですが、ここでは写真のような3色LEDを配置し、HUB-75というインターフェースを持ったものに絞ります・・・絞りまくって、私の手元にある3種類になるのですが。
###(1) 32x16
以前に秋葉原の秋月電子通商にて販売していました。
横32ドット、縦16ドットで6ミリピッチでLEDが配置されています。
サイズは192mmx96mm。
ラインの選択はA、B、Cの3ビット、8ラインで行います。ラインの選択など制御回りの話しは後で記します。
既に秋月電子通商のホームページでは見つけられず、現在だとakibaピカリ館で同様の製品が購入できそうです。
https://www.akiba-led.jp/product/1161
###(2) 64x32
前項の秋月電子通商で販売していた32×16のパネル以外に何か表示に使えるデバイスがないかと探していて、akibaピカリ館で見つけました。
横64ドット×縦32ドットとそれまでの4倍のLEDが配置されています。
ラインの選択はA、B、C、Dの4ビット、16ラインで行います。
・3ミリピッチ
https://www.akiba-led.jp/product/1160
サイズ192mmx96mm
・4ミリピッチ
https://www.akiba-led.jp/product/1182
サイズ256mmx128mm
少しお高めですが、32x16が約3000円で、その4倍のドット数で価格が3倍程度だったので購入しました。ちなみに最初は1枚づつ購入し、その後追加で何枚か購入しています。
少し高めですが、店頭での購入時は目の前で全点灯チェックをしてくれたり、2回目のときは前にも購入したことを話すとロットにより色味が変わることがあるので、複数枚で大きなパネルを作る場合には同じロットのパネルを選ぶようアドバイスをしてもらえたりしたので、部品単品の価格ではなく、保険+コンサルタント料が込みの値段と捉えています。
ちなみにamazonなどのネット通販でも同様のパネルをかなり安価に購入できるようです。接触不良などによる不点灯のリスクもあるように思いますが、まずは値段!という方はネット通販にトライしてもいいかもしれません。
###(3) 64x64
今回の記事を書くきっかけとなった秋葉原のShigezoneで販売されているパネルです。
https://twitter.com/ShigezoneAkiba
https://twitter.com/ShigezoneAkiba/status/1152776969274064896
https://twitter.com/ShigezoneAkiba/status/1143660456927625216
横64ドットx縦64ドットで2.5ミリピッチでLEDが正方形に配置されています。
サイズは160mmx160mm。
ラインの選択はA、B、C、D、Eの5ビット、32ラインで行います。
##インターフェース
今回紹介したマトリクスLEDパネルは全て HUB-75 というインタフェースで外部から制御することができます。
パネルのコネクタは2x8の16ピンで、パネル側のピン配置は以下のようになります。パネルの種類による大きな違いはありませんが、制御するライン数の違により 制御するライン位置を決めるピンが A/B/C、A/B/C/D、A/B/C/D/E と変わります。
・ピンの説明
| ピン| 意味
|:---:|:----------------------------------------------
| R1 | 上半分の赤(RED)LEDのON/OFFの信号ピン
| G1 | 上半分の緑(GREEN)LEDのON/OFFの信号ピン
| B1 | 上半分の青(BLUE)LEDのON/OFFの信号ピン
| R2 | 下半分の赤LEDのON/OFFの信号ピン
| G2 | 下半分の緑LEDのON/OFFの信号ピン
| B2 | 下半分の青LEDのON/OFFの信号ピン
| A | 制御するラインを選択するデコーダのビット0のピン
| B | 制御するラインを選択するデコーダのビット1のピン
| C | 制御するラインを選択するデコーダのビット2のピン
| D | 制御するラインを選択するデコーダのビット3のピン
| E | 制御するラインを選択するデコーダのビット4のピン
| CLK | R1/G1/B1/R2/G2/B2のON/OFFを次段へ送るクロックピン
| LAT | 1ライン分のデータを確定させる信号ピン
| OE | 1ライン分のデータのLEDへの出力の有効/無効の信号ピン
##マトリクスLEDパネルの制御
今のところ私はマトリクスLEDパネルの制御方法の仕様書やデータシートを見つけられていません。代わりに電子工作向けの部品などを販売しているAdafruitが同様のマトリクスLEDを扱い、サンプルプログラムを公開していたので、そのプログラムを参考に自分用のプログラムを作成しています。
今ですと以下のページが参考になると思います。
https://github.com/adafruit/RGB-matrix-Panel
<手順>
LAT と OE は「0」で有効状態なので初期状態では「1」に設定されているものとします。
また CLKは初期状態では「0」に設定されているものとします。
① パネル上半分側の一番左上のLEDへ出力したい 0/1 を R1,G1,B1に設定します。
② パネル下半分側の一番左上のLEDへ出力したい 0/1 を R2,G2,B2に設定します。
③ CLK を (0)→ 1→ 0へ変化させます。
④ ①~③の操作を1ライン分のドット数分(64x64のパネルなら64回)、繰り返します。
これは、ある1ラインを表示させるため、右側からデータをセットして CLK1回の変化で1つ左へシフトさせる操作の繰り返しになります。
↓1個目のデータをセット
- - - - .... - - - - ← ①
↓ CLKを(0)→ 1→ 0へ変化
- - - - .... - - - ①
↓2個目のデータをセット
- - - - .... - - - - ← ②
↓ CLKを(0)→ 1→ 0へ変化
- - - - .... - - ① ②
↓3個目のデータをセット
- - - - .... - - ① ② ← ③
↓ CLKを(0)→ 1→ 0へ変化
- - - - .... - ① ② ③
:
:
↓64個目のデータをセット
- ① ② ③ .... * * * * ← 64
↓ CLKを(0)→ 1→ 0へ変化
① ② ③ ④ .... * * * 64
⑤ LAT と OE を (0 or 1)→ 1 へ変化させます。
⑥ ①~④まででセットしたデータを表示させたいラインを A,B,C,D,E(パネルのライン数により D,E は未使用)で選択します。
上記は各表示領域の最上段を想定しているので (A,B,C,D,E) = (0,0,0,0,0)を設定します。
⑦ LAT と OE を (1) → 0 へ変化させ、①~④まででセットしたデータを⑥で設定したラインへ表示します。
⑧ ①~⑦までの操作を全ライン数分繰り返します。
なお、ここで紹介したマトリクスLEDパネルは、上記の①~⑧の操作を止めると表示が止まる、もしくは、操作を止める直前に操作したラインだけが表示されたままになります。
これはダイレクト・ドライブと呼ばれる出力方式で、LEDを表示させるデータを保持するたに必要なメモリなどを減らして回路を簡単にすることで、パネルのコストを抑えることができます。
また、表示は各ラインを高速で切り替えることで、人の目には残像によりパネル全体が表示されているように見えます。
さらに、各ドットのRGBの各色の明るさをオン/オフにより巧く制御することで、明るさや微妙な色の変化を作り出すことができます。ただし、微妙な色の変化を出すためには高速でオン/オフを制御しないと「ちらつき」が目立つようになります。
<パネルの延長>
ここで紹介したマトリクスLEDパネルは、通常、写真のように入力用のピンの他に、出力用のピンが用意されています。ピン配置は入力用と同じですが、全てのピンにはデータが出力されます。
「手順」④で1ライン分のドット数分を繰り返すと説明していましたが、それ以上繰り返すとこの出力ピンへ初めの方にセットしたデータがR1,G1,B1, R2,G2,B2に出力されます。
その他のピンは入力されたものと同じ信号が出力されます。これにより、例えば「32x16」のパネルにもう1枚「32x16」のパネルをつなげると、64ドットx 16ドットのパネルとして扱うことができます。
以下は「32x16」のパネルを4枚つないで「128x16」のパネルにした例です。
##おわりに
今回紹介したマトリクスLEDパネルは、異なるサイズでも概ね同じような操作で表示させたり延長したりできます。電子工作で使用するパネルを変更してもプログラムを大きく変更することなく対応できると思います。
ただし、ライン数が変わるようパネルを変更した場合、特に少ないライン数から多くすると使用する制御線が1~2本増えることになります。また、既製のコントローラを使っている場合、ライン数の多いパネルに対応していないと、写真のようにそれまで連続していた部分が離れて表示されます。パネルの上端側と下端側で異なるグループになっているため(R1/G1/B1とR2/G2/B2)、出ている制御線の操作ぐらいでは対応できないと思います。
同じHUB-75でも使用するコントローラがどのライン数まで対応しているのか理解し、使用するパネルが何ラインなのか確認するようにした方がよいと思います。
- 以上 -