ArduinoでLED-Matrixを操作しました

  •  [Arduino用のUNO R3 最終版スタータキット]にMAX7219 LED-Matrixモジュールが含まれています。このモジュールを操作する方法を学習しました。
  • MAX7219はシリアル入力/出力コモンカソードディスプレイドライバで、CPUボードと、最大8桁の7セグメント数字LEDディスプレイ、バーグラフディスプレイ、または64の個別LEDをインタフェースする機能を有するとのこと。便利な4線式シリアルインタフェースでCPUボードと接続可能です。

ArduinoとLED-Matrixを接続します

LED-Matrixを操作する初期設定は?

  • ライブラリ”LedControl.h”をインクルードし、ピンをおよび接続個数を設定し、電源ON後の設定を記述します。
// ライブラリは"LedControl.h"をインクルードします。
#include "LedControl.h"
// ピン12は DIN、ピン11は LOAD(CS)、ピン10は CLK に接続されています。
// MAX7219 は1つだけ使用します。
LedControl lc=LedControl(12,10,11,1);
// MAX72XX は起動時に省電力モードになっているため、省電力モードから抜けます
lc.shutdown(0,false);
// 明るさを中程度の値に設定します
lc.setIntensity(0,8);
// ディスプレイをクリアします
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);
}

AIを使ったスケッチの作成

  • [AIを使ってRGB LEDを点灯するスケッチを作成しました]でAIを使ってスケッチを作成しました。今回もAIを使っています。1回では、完成しませんが、それはAIへの指示に不明瞭な箇所があったから。指示を修正しながら完成させます。点灯方法を色々と変えて作成時間は約1時間程度です。

御質問、誤植の指摘、記事の改善点の気づきなどありましたら「問い合わせ 」のページからお願いします。