関数の修正

まずは関数を修正してみましょう。

以下は、setLed関数をカソード側の設定にも対応させた修正例です。

/*
 * ドットマトリクスLED点灯パターン設定関数
 * 引数: patternAnode 表示するパターン( アノード側)
 *       patternCathode 表示するパターン( カソード側)
 */
void setLed(byte patternAnode, byte patternCathode) {

  // カソード側のパターンを反転
  patternCathode = ~patternCathode;

  // 列および行の点灯設定
  for(int i=0; i<8; i++) {
    // i 列目に patternAnod の i ビット目の値を設定
    digitalWrite(ledAnodePins[i], bitRead(patternAnode, i));
    // i 行目に patternCathode の i ビット目の値を設定
    digitalWrite(ledCathodePins[i], bitRead(patternCathode, i));
  }
}
Code language: Arduino (arduino)

また、カソード側は点灯がLレベル(0)、消灯がHレベル(1)なので、最初にカソード側のパターンをSTEP08の最後で紹介したビット反転(NOT)で反転させています。

プログラムの修正例を次に示します。

前の記事

関数を作ってみよう1