Menu
CoddyTech

PWMでLEDを暗くする

CoddyのArduinoジャーニー「出力」セクションの一部。レッスン 1/24。

digitalWrite()が扱うのは、オンかオフの2段階です。LEDをほのかに光らせるには、ボードが1秒間に何百回もピンをオンとオフに切り替えます。目ではそのちらつきを追えないため、平均的な明るさとして見えます。つまり、時間の4分の1だけオンになっているピンは、4分の1の明るさに見えます。

この仕組みはPWM(パルス幅変調)と呼ばれます。ピンがオンになっている時間の割合がデューティサイクルです。

analogWrite(pin, value)では、0から255までの数値で設定します。

analogWrite(9, 0);    // 常にオフ
analogWrite(9, 64);   // 時間の4分の1だけオン
analogWrite(9, 127);  // 時間の約半分はオン
analogWrite(9, 255);  // 常にオン

値を書き込むと、ボードはdelay()の実行中も、次の値を書き込むまで自動的にピンのパルス出力を続けます。analogWrite()はそれだけでピンを出力にしますが、setup()内のpinMode(9, OUTPUT)は、引き続きピンの用途を指定します。

challenge icon

チャレンジ

簡単

赤色のLEDはピン9に接続されています。最大輝度の4分の1で点灯させましょう。

  • 255の4分の1は約64です
  • analogWrite()で書き込みます

実行を押して動作を確認し、その後チェックを押してください。

自分で試してみよう

const int ledPin = 9;

void setup() {
  pinMode(ledPin, OUTPUT);
  // ここでLEDの明るさを4分の1に設定する
}

void loop() {
  // 繰り返す処理はない:ピンは自動的にパルスを出し続ける
}
quiz icon腕試し

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

出力のすべてのレッスン

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