ゆるく楽しむプログラミング

LEDマトリックスドライバ MAX7219

  連結して使用できる
LEDマトリックスドライバ MAX7219を使用したユニットです。

MAX7219は1個で
8x8ドットのLEDマトリクス または
7セグメントLED8個を制御できます。


LEDマトリクスはソケットに挿さっており、取り外すことが出来ます。
また、基板を見た感じ、切り離して使う事もできそうです。

接続

データ送信手順は SPI MODE0 / MSB FIRST と互換なので、SPIデバイスと同じように接続して使用できます。
接続ピンを変更する場合はSoftwareSPIを利用すると簡単です。

ArduinoUNO
DIN MOSI D11
CS CS D10
CLK CLK D13



ArduinoIDE ~MAX7219ライブラリ~

ライブラリマネージャーでMAX7219を検索
LEDマトリクス用と7セグメントLED用のライブラリがリストアップされますので
今回は、MD_MAX72xxライブラリをインクルードして使用しました。

ディフォルト状態では動作がおかしいので、設定を変更します。

#define HARDWARE_TYPE MD_MAX72XX::FX16_HW
#define MAX_DEVICES 4
ハードウエアタイプとデバイス数を変更。
ハードウエアタイプは▼の4種類なので、表示の向きを見て合わせます。
DigRows RevCols RevRows Enumerator
GENERIC_HW FALSE TRUE FALSE 「一般的」なモジュール
FC16_HW TRUE FALSE FALSE FC-16 モジュール
PAROLA_HW TRUE TRUE FALSE Parola モジュール
ICSTATION_HW TRUE TRUE TRUE ICStation モジュール

ライブラリのリファレンスは、ライブラリをインストールしたフォルダの
\libraries\MD_MAX72XX\docs\index.html
から参照できます。

MAX7219のコマンド

MAX7219を直接操作する場合のコマンドは次の通り
レジスタアドレレス+データの2バイトを書き込むことで操作します。

レジスタ パラメタ 動作
00h 0x00 No-OP (何もしない)
01h 0x00~0xFF ROW 1の8個のLEDをON/OFF
02h 0x00~0xFF ROW 2の8個のLEDをON/OFF
03h 0x00~0xFF ROW 3の8個のLEDをON/OFF
04h 0x00~0xFF ROW 4の8個のLEDをON/OFF
05h 0x00~0xFF ROW 5の8個のLEDをON/OFF
06h 0x00~0xFF ROW 6の8個のLEDをON/OFF
07h 0x00~0xFF ROW 7の8個のLEDをON/OFF
08h 0x00~0xFF ROW 8の8個のLEDをON/OFF
09h 0x00~0xFF ROW1~8のデコードモードを設定
0Ah 0x00~0x0F LEDの明るさを設定
0Bh 0x00~0x07 使用するLEDの数(ROW数)を設定
0Ch 0x00 or 0x01 ShutDowen Mode (全消灯)
0Fh 0x00 or 0x01 Test Mode (全点灯)
 
   

コマンドはCSをLOWからHIGHにしたタイミングで実行されます。
複数のMAX7219を連結している場合、コマンドは心太方式で次のデバイスに押し出されます。
N番目のLEDマトリクスだけを操作したい場合、操作対象の2バイトコマンドに続けて、N-1組のNo-OP(何もしない)命令を送信して動作を制御します。


サンプルスケッチ

MAX7219.zip 解説動画で使用しているサンプルスケッチ

美咲フォントライブラリが必要です
ArduinoIDE用 美咲フォントライブラリ

解説動画