LEDの全点灯 – プログラム例2

プログラム例 6-2

#include <Arduino.h> // Arduino.h の読み込み

// ドットマトリクスLEDのアノードピンおよびカソードピン
int a0 = 0;
int a1 = 2;
int a2 = 4;
int a3 = 5;
int a4 = 16;
int a5 = 17;
int a6 = 18;
int a7 = 19;
int c0 = 21;
int c1 = 22;
int c2 = 23;
int c3 = 25;
int c4 = 26;
int c5 = 27;
int c6 = 32;
int c7 = 33;

/*
 * setup 関数
 */
void setup() {
  /* ここにプログラムの最初に1回だけ実行したい処理を上から順に記述していきます */

  // シリアル通信を115200bpsで開始
  Serial.begin(115200);

  Serial.println("初期設定の開始");

  // 入出力設定(アノード)
  pinMode(a0, OUTPUT);
  pinMode(a1, OUTPUT);
  pinMode(a2, OUTPUT);
  pinMode(a3, OUTPUT);
  pinMode(a4, OUTPUT);
  pinMode(a5, OUTPUT);
  pinMode(a6, OUTPUT);
  pinMode(a7, OUTPUT);
  // 入出力設定(カソード)
  pinMode(c0, OUTPUT);
  pinMode(c1, OUTPUT);
  pinMode(c2, OUTPUT);
  pinMode(c3, OUTPUT);
  pinMode(c4, OUTPUT);
  pinMode(c5, OUTPUT);
  pinMode(c6, OUTPUT);
  pinMode(c7, OUTPUT);

Code language: Arduino (arduino)
  // 出力レベル設定(アノード)
  digitalWrite(a0, HIGH);
  digitalWrite(a1, HIGH);
  digitalWrite(a2, HIGH);
  digitalWrite(a3, HIGH);
  digitalWrite(a4, HIGH);
  digitalWrite(a5, HIGH);
  digitalWrite(a6, HIGH);
  digitalWrite(a7, HIGH);
  // 出力レベル設定(カソード)
  digitalWrite(c0, HIGH);
  digitalWrite(c1, HIGH);
  digitalWrite(c2, HIGH);
  digitalWrite(c3, HIGH);
  digitalWrite(c4, HIGH);
  digitalWrite(c5, HIGH);
  digitalWrite(c6, HIGH);
  digitalWrite(c7, HIGH);

  Serial.println("初期設定の完了");
}

/*
 * loop 関数
 */
void loop() {
  /* ここにプログラム中で繰り返し実行したい処理を上から順に記述していきます */

  digitalWrite(c0, LOW);  // 1列目を点灯
  delay(1);               // 時間待ち
  digitalWrite(c0, HIGH); // 1行目を消灯

  digitalWrite(c1, LOW);  // 2列目を点灯
  delay(1);               // 時間待ち
  digitalWrite(c1, HIGH); // 2行目を消灯

  digitalWrite(c2, LOW);  // 3列目を点灯
  delay(1);               // 時間待ち
  digitalWrite(c2, HIGH); // 3行目を消灯

  digitalWrite(c3, LOW);  // 4列目を点灯
  delay(1);               // 時間待ち
  digitalWrite(c3, HIGH); // 4行目を消灯

  digitalWrite(c4, LOW);  // 5列目を点灯
  delay(1);               // 時間待ち
  digitalWrite(c4, HIGH); // 5行目を消灯

  digitalWrite(c5, LOW);  // 6列目を点灯
  delay(1);               // 時間待ち
  digitalWrite(c5, HIGH); // 6行目を消灯

  digitalWrite(c6, LOW);  // 7列目を点灯
  delay(1);               // 時間待ち
  digitalWrite(c6, HIGH); // 7行目を消灯

  digitalWrite(c7, LOW);  // 8列目を点灯
  delay(1);               // 時間待ち
  digitalWrite(c7, HIGH); // 8行目を消灯
}
Code language: Arduino (arduino)

ドットマトリクスLEDは点灯しましたか?

でも、各行の点灯プログラムは、ほぼ同じ形なので簡略化できそうです。こんな時は配列を使いましょう。

次の記事

配列