関数の修正
まずは関数を修正してみましょう。
以下は、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)で反転させています。
プログラムの修正例を次に示します。