Seeeduino xiaoは小さくてもパワーがあるのですがPin数が少なく,パラレル入出力が必要な時はIOエキスパンダ的なものを使ってみています。
Seeeduino XIAOのパラレル出力を増やすためにIOエキスパンダを使ってみた
Seeeduino XIAOとI/Oエキスパンダーで128X32のRGBLEDパネルを使ってみた


128X32のRGBLEDパネルを動かすにはもう少し速い方が良いので,シンプルなシフトレジスタとカウンタをつけてやってみました。

なおシフトレジスタにはSPI通信機能の一部を使ってアクセスしていますが,XIAOのSPIの設定には注意が必要です。
Seeeduino XIAOのSPI通信は新しくなった設定方法を使わないとフリーズする


1.機器の構成
Seeeduino XIAO,シフトレジスタSN74HC164,バイナリカウンタTC74HC590とHUB75規格の128X32RGBフルカラーLEDパネルです。


1) シフトレジスタSN74HC164
 色データ,R1G1B1R2G2B2のパラレル出力を担当します。
8bitのパラレル出力のシフトレジスタです。シンプルな構成なのでXIAOとの接続はSPIのCLKとMOSIの2本ですみます。





2) バイナリカウンタTC74HC590
 LEDの表示行,ABCDのパラレル出力を担当します。
表示行は0->15を順に設定するだけなのでカウンタを使うとパルスだけで設定できます。今回のは4bitのカウンタでも大丈夫ですね。
一番シンプルなカウンタならクリアとクロックの2本の信号線で十分なのですが,このカウンタはもう一段レジスタがついていて出力をコントロールするのでXIAOとの通信線は最低3本必要です。




2.プログラム例と注意点
 1画面のデータを送るプログラム例です。
ポートコントロールとSPI通信の一部を使い,またカウンタはパルスだけなのでかなり速くなったと思います。




注意すべき点は表示行の切り替えのタイミングです。
必ず1行分のRGBデータを送った後,ラッチして行に表示する直前に切り替えるのがベストです。
1行を送ってラッチ,表示した後にすぐ表示行を次の行に切り替えるとその行に表示が移ります,,。実はこれにハマって3日ほど悩みました(^^;;;;;;;


今回の構成とプログラムで1画面の表示はカウンタのリセットパルス間隔で見るとだいたい8mSでした。




125Hzぐらいで書き換えられるとさすがに画面のチラつきは無く,カメラで見ても縞模様が流れる事はないですね(^^)。




汎用性は無いですが,,シンプルなICでも結構速くなったので,いろんな画像を動かす気も起こってきますね(^^)。