LEDの点灯パターンの二進数表記
前のSTEPではドットマトリクスLEDの点灯パターンを二次元配列で指定しました。
各LEDの値はLOW(=0)かHIGH(=1)かの2通りなので、点灯パターンは以下のように二進数を用いた一次元の配列でも示すことができます。
byte ledPatternA[8] = {
0b00000000,
0b00001000,
0b00010100,
0b00100010,
0b00100010,
0b00111110,
0b00100010,
0b00100010,
};
Code language: Arduino (arduino)
ここで変数型のbyteは、Arduinoフレームワークの提供する1バイトの値を扱うための変数型で、その実体は8ビット符号無し整数型であり、十進数表記で0〜255、十六進数表記で0x00〜0xFF、二進数表記で0b00000000〜0b11111111の値を取ることができます。
二進数表記の一番大きな桁のビットをMSB(Most Significant Bit)、一番小さな桁のビットをLSB(Least Significant Bit)といいます。通常の二進数表記では、MSBが最も左側に、LSBが最も右側に来ます。
また、どのビットかを表現する時は、最も右のLSBを「0番目」とし、以降左側(MSB側)に向かって1番目、2番目……とするのが一般的であり、8ビットの場合は0〜7番目のビットがあることになります。
二進数の各ビット | ||||||||
---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
値 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 |
値(10進数表示) | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
10進数の100の表示 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 |
以降、ビットを表現するにあたってはこの呼び方を用いることにします。
なお、上記の0〜7番の各ビットをLEDドットマトリクスのアノード(列方向)の0〜7番に対応させると、二進数表示での各行のパターンは二次元配列を使った場合から列の並びが反転し、実際のドットマトリクスLEDの列の並びと一致することになります。実は、最初に行ったドットマトリクス LED の配線は、二進数表示でのパターン設定に最適なように行っていたのです。