Menu
CoddyTech

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です。これは数値の最後の桁と同じです。

challenge icon

チャレンジ

中級

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 に戻る)
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

出力のすべてのレッスン

自分で練習してみよう: Arduinoプレイグラウンド