Table of Contents
この記事で学習できること
LED マトリクスは、複数の LED を格子状に並べて文字や図形を表示できる便利なデバイスです。 Arduino と組み合わせることで、スクロール文字、アニメーション、センサー連動表示など、幅広いプロジェクトに応用できます。この記事では、以下を解りやすく解説します。
- LED マトリクスの基本構造
- 行列制御の仕組み
- Arduino との接続方法
- MAX7219 を使った制御方法
- 実際の表示例
- 応用例とトラブル対処
LED マトリクスとは
- LED マトリクスは、縦横に並んだ LED を「行」と「列」で制御するデバイスです。 8×8 の場合、64 個の LED を 16 本のピンで制御できます。行と列を組み合わせて、特定の LED を点灯させる仕組みになっています。
行列制御の仕組みは
- LED マトリクスは、以下のように制御します。
- 行を HIGH
- 列を LOW → 交差した位置の LED が点灯
- この仕組みにより、少ないピン数で多くの LED を制御できます
Arduino で LED マトリクスを使う方法
LED マトリクスを Arduino で直接制御することもできますが、配線が複雑になります。 そこで一般的には MAX7219 ドライバ IC を使います。MAX7219 を使うメリットに以下があります。
- 配線が簡単
- 複数枚を連結できる
- ライブラリが豊富
- 文字やアニメーションを簡単に表示できる
- [Arduino用のUNO R3 最終版スタータキット]にLED-Matrixモジュールが含まれています。このモジュールはMAX7219が内蔵されており、このモジュールの使い方を学習します。
必要な部品と配線方法
以下の部品を準備します。
| Arduino UNO R3 | 1 個 |
| 8×8 LED マトリクス(MAX7219 搭載) | 1 個 |
| ジャンパーワイヤー | 5 個 |
- 購入した[Arduino用のUNO R3 最終版スタータキット]に付属の資料に従って、ArduinoとMAX7219 LED-Matrixモジュールを接続します。VCCは5Vに、GNDはGNDに接続します。

LED-Matrixを操作するライブラリは?
- ライブラリは”LedControl.h”をインクルードします。
#include "LedControl.h"LED-Matrixの初期設定は?
- ArduinoのPIN番号とMAX7219 LED-Matrixモジュールが何個使われるかを、LedControl()で設定します。MAX7219 LED-Matrixモジュールの、DIN、CS、CLKをArduino UNOの12,11,10ピンに接続し、接続のモジュール数が1個の場合はの例です。
LedControl lc=LedControl(12,10,11,1);- MAX72XX は起動時に省電力モードになっているため、shutdown()関数で省電力モードから抜けます
lc.shutdown(0,false);- LEDの明るさはsetIntensity()関数で設定します。明るさを中程度の例です。
lc.setIntensity(0,8);- ディスプレイをクリアはclearDisplay()関数で実行します
lc.clearDisplay(0);LED-Matrixを操作する関数は?
ライブラリ”LedControl.h”に含まれる、LED-MatrixモジュールのLEDを点灯・消灯させる関数を調べます。
lc.setRow(addr, row, value);addr : デバイス番号(0から始まる)
row : 行番号(0~7)
value : 8ビットの値(byte型)。各ビットがLEDのON/OFFを表します。
lc.setColumn(addr, col, value);addr : デバイス番号(0から始まる)
col : 列番号(0~7)
value : 8ビットの値(byte型)。各ビットがLEDのON/OFFを表します。
lc.setLed(addr, row, col, state);addr : デバイス番号
row : 行番号(0~7)
col : 列番号(0~7)
state : trueで点灯、falseで消灯
LED-Matrixを点灯させるスケッチは
- setRow, setColumn,setLedを使ってLEDを点灯します。行、列、点、全面の点灯と消灯を行うスケッチ作成しました。
#include <LedControl.h>
// MAX7219 接続
// DIN=12, CLK=10, CS=11
LedControl lc = LedControl(12, 10, 11, 1);
void setup() {
lc.shutdown(0, false);
lc.setIntensity(0, 5);
lc.clearDisplay(0); // 初期は全消灯
}
void loop() {
// --- ① 行単位で点灯(1行目 → 8行目) ---
for (int row = 0; row < 8; row++) {
// 行の8個を点灯
for (int col = 0; col < 8; col++) {
lc.setLed(0, row, col, true);
}
delay(200);
// 行を消灯
for (int col = 0; col < 8; col++) {
lc.setLed(0, row, col, false);
}
}
// --- ② 列単位で点灯(1列目 → 8列目) ---
for (int col = 0; col < 8; col++) {
// 列の8個を点灯
for (int row = 0; row < 8; row++) {
lc.setLed(0, row, col, true);
}
delay(200);
// 列を消灯
for (int row = 0; row < 8; row++) {
lc.setLed(0, row, col, false);
}
}
// --- ③ 点単位で走査(1行目1列目 → 8列目、2行目 → 8行目) ---
for (int row = 0; row < 8; row++) {
for (int col = 0; col < 8; col++) {
lc.setLed(0, row, col, true);
delay(100);
lc.setLed(0, row, col, false);
}
}
// --- ④ 全点灯 → 0.5秒 → 全消灯(3回繰り返す) ---
for (int i = 0; i < 3; i++) {
// 全点灯
for (int row = 0; row < 8; row++) {
for (int col = 0; col < 8; col++) {
lc.setLed(0, row, col, true);
}
}
delay(500);
// 全消灯
lc.clearDisplay(0);
delay(500);
}
// --- ⑤ loop 1周終了後、3秒待つ ---
delay(3000);
}LED マトリクスの点灯の映像です。
- 行を1列ずつ点灯し消灯する
- 列を1列ずつ点灯し消灯する
- LEDを最初の行から最後の行まで1個ずつ点灯し消灯する
- LED全面の点灯と消灯を3回繰り返す
応用例
LED マトリクスは、以下のようなプロジェクトに応用できます
- スクロール文字表示
- 時計表示(RTC と組み合わせ)
- 温度センサー連動表示
- 加速度センサーでアニメーション
- ゲーム(ブロック崩し、スネークなど)
よくあるトラブルと対処法
● 点灯しない
- 配線ミス
- VCC と GND の逆接続
- DIN/CS/CLK のピン番号違い
● 明るさが変わらない
- setIntensity() の値が 0〜15 になっているか確認
● 文字が崩れる
- 複数枚連結時の順番設定が間違っている可能性
まとめ
LED マトリクスは、Arduino での表示デバイスとして非常に扱いやすく、応用範囲も広いモジュールです。
- 行列制御の仕組みを理解する
- MAX7219 を使うと配線が簡単
- ライブラリで文字やアニメーションも簡単
- 応用例が豊富で学習に最適
次のステップとして、スクロール文字やアニメーションにも挑戦してみてください。
御質問、誤植の指摘、記事の改善点の気づきなどありましたら「問い合わせ 」のページからお願いします。

