LEDで二進カウンター
CoddyのArduinoジャーニー「出力」セクションの一部。レッスン 19/24。
4つのLEDで、コンピューターが数値を保存する方法である二進数を使って、0から15までの任意の数を表せます。各LEDの値は、その前のLEDの2倍です。値は1、2、4、8です。点灯しているLEDの値を足します。
- 5は4 + 1です。値が4と1のLEDが点灯します
- 10は8 + 2です
- 15は4つすべてです
各桁はビットと呼ばれ、値が1の桁を0として番号が付けられます。bitRead(number, n)は数値のビットnを返します。値は1または0です。
bitRead(5, 0); // 1: 5には1が含まれる
bitRead(5, 1); // 0: 5には2が含まれない
bitRead(5, 2); // 1: 5には4が含まれる1はHIGH、0はLOWなので、ビットiをそのままLEDiに渡せます。
for (int i = 0; i < 4; i++) {
digitalWrite(ledPins[i], bitRead(count, i));
}ここでは、ledPins[0](ピン2)は右側のLEDで、値は1です。これは数値の最後の桁と同じです。
チャレンジ
中級4つのLEDで2進数を数えます:
countを0で開始するbitRead()を使ってLEDに表示する。ビットiをledPins[i]に表示する- 250 ms待ち、1を加算し、15の後に0から再開する
Runを押してから、Checkを押します。
自分で試してみよう
int ledPins[] = {2, 3, 4, 5}; // それぞれの値は 1, 2, 4, 8
int count = 0;
void setup() {
for (int i = 0; i < 4; i++) {
pinMode(ledPins[i], OUTPUT);
}
}
void loop() {
// count を2進数で表示し、250 ms 待ってからカウントアップする(15 の次は 0 に戻る)
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
出力のすべてのレッスン
自分で練習してみよう: Arduinoプレイグラウンド