点滅から明るさの制御へ
【第04期 サーボモーターを動かす】よりLEDの点滅が見分けられなくなるまでPWMの周期を短くし、デューティー比でLEDの明るさを変える。■材料・パーツ・道具(「周期とデューティー比を変えてLEDを点滅」と同じ)可変抵抗10kΩ(つまみ付き半固定抵抗・3端子)×2赤色LED(砲弾型φ5mm)×1抵抗510Ω(カラーコードは緑茶茶金)×1■手順(1) スケッチ「周期とデューティー比を変えてLEDを点滅」を書き換え、コンパイル してエラーが出ないかどうか確かめます。スケッチをArduinoに書き込みます。(2) 2つの可変抵抗のつまみを左にいっぱいに回します。アナログ0番ピンに つないだ可変抵抗のつまみをゆっくり右に回して、LEDの光がどう変わるか 記録します。(3) アナログ0番ピンにつないだ可変抵抗のつまみを中ほどに合わせます。 アナログ1番ピンにつないだ可変抵抗のつまみを回すと、LEDの光はどう 変わるか調べます。(4) ヒトは10ミリ秒で点滅を繰り返す光を見分けることができず、光が点灯した ままに見えます。点滅して見えるか、点灯して見えるかは、デューティー比に よっても変わります。■回路(「周期とデューティー比を変えてLEDを点滅」と同じ)※アナログ0番ピンとアナログ1番ピンで、2つの可変抵抗の電圧レベルを検出する。※デジタル5番ピンでLEDを点灯・消灯する。■スケッチ#define VR_DUTY 0#define VR_PERIOD 1#define LED 5void setup() { pinMode(LED, OUTPUT);}void loop() { long d, t, dc; d = analogRead(VR_DUTY); d = map(d, 0, 1023, 0, 100); t = analogRead(VR_PERIOD); t = map(t, 0, 1023, 10, 100); dc = d * t / 100; digitalWrite(LED, HIGH); delay(dc); digitalWrite(LED, LOW); delay(t - dc);}前回のスケッチから、PWMの周期に関わる部分を変更しました。前回: t = map(t, 0, 1023, 500, 1000);今回: t = map(t, 0, 1023, 10, 100);■コメントPWM(パルス幅変調)方式とは何かの復習の続き。前回は、LEDの点滅の早さが目で見分けられるぐらいの時間スケールでしたが、今回はヒトの目で見分けられないぐらいのPWMの周期にしています。PWMの周期の範囲を広くとれば、点滅が次第に判別できなくなる様子を調べることができます。どのくらいで点滅が判別できなくなるかは、デューティー比、部屋の明るさ、また、個人差があると思います。そういえば、地下鉄の通路にある消火栓の赤いランプ(おそらくLEDを使っている)が、微妙に点滅しているように見えるときがあります。どんな方式で点灯しているか、少々気になります。