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)は、引き続きピンの用途を指定します。
チャレンジ
簡単赤色のLEDはピン9に接続されています。最大輝度の4分の1で点灯させましょう。
- 255の4分の1は約64です
analogWrite()で書き込みます
実行を押して動作を確認し、その後チェックを押してください。
自分で試してみよう
const int ledPin = 9;
void setup() {
pinMode(ledPin, OUTPUT);
// ここでLEDの明るさを4分の1に設定する
}
void loop() {
// 繰り返す処理はない:ピンは自動的にパルスを出し続ける
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
出力のすべてのレッスン
自分で練習してみよう: Arduinoプレイグラウンド