関数の宣言のヘッダファイル化

最後に、関数の宣言をヘッダファイルとして別ファイル化しましょう。main.cppの見通しがさらに良くなるほか、別のプロジェクトでドットマトリクスLEDの制御を行いたい場合も、main.cppではこのヘッダファイルをインクルードすれば良いことになります。

エクスプローラでプロジェクト内のincludeを右クリックして「新しいファイル」を選択し、ヘッダファイルを追加しましょう。ここでは「dotmatrixled.h」というファイルを追加することにします。

ファイルの追加が完了したら、まずは「インクルードガード」を行いましょう。

dotmatrixled.hの準備

#ifndef DOTMATRIXLED_H_
#define DOTMATRIXLED_H_

#endif
Code language: Arduino (arduino)

それでは、main.cpp内のドットマトリクスLED関係の変数および関数定義部分をdotmatrixled.hにコピー&ペーストしましょう。コメントの追加およびArduino.hのインクルードも行っています。

dotmatrixled.h

/**********************************************************
  製作者  アドウィン
  解説   ドットマトリクス LED の制御用の関数類
**********************************************************/
#ifndef DOTMATRIXLED_H_
#define DOTMATRIXLED_H_
#include <Arduino.h> // Arduino.h の読み込み

// ドットマトリクスLED初期設定関数
void initLed();
// ドットマトリクスLED点灯パターン設定関数
void setLed(byte patternAnode, byte patternCathode);

#endif
Code language: Arduino (arduino)

main.cppの関数の宣言部分をdotmatrixled.hのインクルードに置き換えて完成です。

プログラム例 (main.cpp) 10-4

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

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

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

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

  // ドットマトリクスLED初期設定
  initLed();

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

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

  for(int i=0; i<8; i++) {
    // ドットマトリクスLEDのi行目を表示
    setLed(ledPatternA[i], ledCathodePattern[i]);
    // 時間待ち
    delay(1);
  }
}
Code language: Arduino (arduino)

プログラムがビルドできること、およびマイコンに書き込んで以前と同様に動作することを確認しましょう。

ずいぶんとすっきりしたソースコードになりましたね。

前の記事

関数の定義の別ファイル化

次の記事

IOエクスパンダとは