マイコン工作でLEDマトリックスパネルを光らせるのは楽しいのでいろいろとやっています。
→ ESP32と128x32LEDカラーディスプレイで地元の広島電鉄の路面電車の表示器を作ってみた
→ micro:bitで動かす64X32RGBディスプレイの画像を表計算ソフトで作ってみた
→ PICAXE-28X2のBASIC言語で32X16RGBディスプレイを動かしてみた
Seeeduino XIAOはpin数が少ないのでどうかと思ったのですが,SPI通信のI/Oエキスパンダーと一緒になら使えそうなので試してみました。
128X32のRGBLEDパネルを動かしてみたところです。
地元の広島電鉄の案内版のつもりです。
![](https://stat.ameba.jp/user_images/20201024/12/pta55/92/d1/j/o1200052214839713991.jpg?caw=800)
今の設定ではI/Oエキスパンダーを通して1byteを送るのに10uS程度かかります。そのため1画面2KBで20mS,約50Hzで表示している事になります。
そのため,ジッ〜と見ていると少しちらついているようにも感じますが,まぁまぁ,,,ですかね(^^;;;;;;
1.ハードの構成と配線
ハード的にはSeeeduino XIAO,SPI接続のI/OエキスパンダーMCP23S17,HUB75規格の128X32のRGBLEDドットマトリックスパネルです。
![](https://stat.ameba.jp/user_images/20201024/12/pta55/56/04/j/o1200083714839714081.jpg?caw=800)
配線はパラレル接続の色データとアドレスデータ,後はクロックとコントロール系統です。
![](https://stat.ameba.jp/user_images/20201024/12/pta55/5f/67/j/o1200080014839714089.jpg?caw=800)
2.ソフトの構成
ソフトはHUB75規格通りにダイナミック点灯を繰り返しているだけです(^^;;;;;;;;;
1) HUB75規格のデータの送り方
標準で画面は上下2面に分かれていて,色データは同時に送るというか,クロックは共通ですので同時にしか送れません(^^;;;
![](https://stat.ameba.jp/user_images/20201024/12/pta55/0a/d9/j/o1200073714839714087.jpg?caw=800)
行アドレスの指定も上下画面で共通で,下半分だけ変化させて送るというような事はできません。
2)プログラム例
色データをI/OエキスパンダーのGPAポート,行アドレス指定データをGPBポートにパラレルに配置して送るので,データも上図のように1byteにR1G1B1とR2G2B2を一緒に置くようにしてみました。
考えてみれば,このやり方の方が普通ですね(^^;;;;;; ,以前のデータはRGB毎のデータにしていたので,プログラム内で変換しています。
・PinやSPI設定,色データの定義部です。
![](https://stat.ameba.jp/user_images/20201024/12/pta55/b7/45/j/o1200060314839714083.jpg?caw=800)
・1画面分のデータを送る部分です。
![](https://stat.ameba.jp/user_images/20201024/12/pta55/4f/0a/j/o1200079414839714085.jpg?caw=800)
HUB75規格のLEDドットマトリックスパネルはダイナミック点灯なので,ひたすらこれは繰り返す必要があります(^^)。
うむ,,なんとか表示できましたが,128X32パネルではあまり余裕がないので静止画向きですね。64X32程度でしたら今の構成で行けそうです。
もう少し速くするならシンプルなシリアルパラレルとカウンターを使うのも良いかもしれません。ま,課題としてぼちぼちやっていきましょう(^^)。
速くてPin数の多いマイコンを使う,,,ま,それはそうですけど,やってみたいというのが趣味ですからね(^^;;;;;;;;;
→ ESP32と128x32LEDカラーディスプレイで地元の広島電鉄の路面電車の表示器を作ってみた
→ micro:bitで動かす64X32RGBディスプレイの画像を表計算ソフトで作ってみた
→ PICAXE-28X2のBASIC言語で32X16RGBディスプレイを動かしてみた
Seeeduino XIAOはpin数が少ないのでどうかと思ったのですが,SPI通信のI/Oエキスパンダーと一緒になら使えそうなので試してみました。
128X32のRGBLEDパネルを動かしてみたところです。
地元の広島電鉄の案内版のつもりです。
![](https://stat.ameba.jp/user_images/20201024/12/pta55/92/d1/j/o1200052214839713991.jpg?caw=800)
今の設定ではI/Oエキスパンダーを通して1byteを送るのに10uS程度かかります。そのため1画面2KBで20mS,約50Hzで表示している事になります。
そのため,ジッ〜と見ていると少しちらついているようにも感じますが,まぁまぁ,,,ですかね(^^;;;;;;
1.ハードの構成と配線
ハード的にはSeeeduino XIAO,SPI接続のI/OエキスパンダーMCP23S17,HUB75規格の128X32のRGBLEDドットマトリックスパネルです。
![](https://stat.ameba.jp/user_images/20201024/12/pta55/56/04/j/o1200083714839714081.jpg?caw=800)
配線はパラレル接続の色データとアドレスデータ,後はクロックとコントロール系統です。
![](https://stat.ameba.jp/user_images/20201024/12/pta55/5f/67/j/o1200080014839714089.jpg?caw=800)
2.ソフトの構成
ソフトはHUB75規格通りにダイナミック点灯を繰り返しているだけです(^^;;;;;;;;;
1) HUB75規格のデータの送り方
標準で画面は上下2面に分かれていて,色データは同時に送るというか,クロックは共通ですので同時にしか送れません(^^;;;
![](https://stat.ameba.jp/user_images/20201024/12/pta55/0a/d9/j/o1200073714839714087.jpg?caw=800)
行アドレスの指定も上下画面で共通で,下半分だけ変化させて送るというような事はできません。
2)プログラム例
色データをI/OエキスパンダーのGPAポート,行アドレス指定データをGPBポートにパラレルに配置して送るので,データも上図のように1byteにR1G1B1とR2G2B2を一緒に置くようにしてみました。
考えてみれば,このやり方の方が普通ですね(^^;;;;;; ,以前のデータはRGB毎のデータにしていたので,プログラム内で変換しています。
・PinやSPI設定,色データの定義部です。
![](https://stat.ameba.jp/user_images/20201024/12/pta55/b7/45/j/o1200060314839714083.jpg?caw=800)
・1画面分のデータを送る部分です。
![](https://stat.ameba.jp/user_images/20201024/12/pta55/4f/0a/j/o1200079414839714085.jpg?caw=800)
HUB75規格のLEDドットマトリックスパネルはダイナミック点灯なので,ひたすらこれは繰り返す必要があります(^^)。
うむ,,なんとか表示できましたが,128X32パネルではあまり余裕がないので静止画向きですね。64X32程度でしたら今の構成で行けそうです。
もう少し速くするならシンプルなシリアルパラレルとカウンターを使うのも良いかもしれません。ま,課題としてぼちぼちやっていきましょう(^^)。
速くてPin数の多いマイコンを使う,,,ま,それはそうですけど,やってみたいというのが趣味ですからね(^^;;;;;;;;;