Project 2: LEDの明るさ調整
1.説明
前回のレッスンでは、LEDの点灯・消灯と点滅を制御しました。
このプロジェクトでは、PWMを使ってLEDの明るさを制御し、呼吸のような効果をシミュレートします。
PWMはデジタル手段でアナログ出力を制御する方法です。デジタル制御を用いて異なるデューティサイクルの方形波(高レベルと低レベルを絶えず切り替える信号)を生成し、アナログ出力を制御します。一般的に、ポートの入力電圧は0Vと5Vです。
もし3Vが必要だったら?あるいは1V、3V、3.5Vの切り替えが必要だったら?抵抗を常に変えることはできません。そこでPWMを利用します。

Arduinoのデジタルポートの電圧出力はLOWとHIGHのみで、それぞれ0Vと5Vに対応します。LOWを0、HIGHを1と定義し、Arduinoが1秒間に500回0または1の信号を出力するとします。
もし500回すべてが1なら5V、すべてが0なら0Vです。0101010101…のように出力すると、出力ポートは2.5Vとなり、これは映画の表示に似ています。私たちが見る映画は完全に連続しているわけではなく、実際には1秒間に25枚の画像を出力しています。この場合、人間はそれを認識できませんし、PWMも同様です。異なる電圧を得るには、0と1の比率を制御する必要があります。単位時間あたりに出力される0と1の信号が多いほど、制御はより正確になります。
PWMはデジタル手法でアナログ量を得る技術です。デジタル制御により方形波を形成し、方形波信号はオンとオフの2状態(高レベルと低レベル)だけを持ちます。0〜5Vの電圧はオン時間とオフ時間の比率を制御することでシミュレートできます。オンに費やす時間(技術的には高レベル時間)をパルス幅と呼び、PWMはパルス幅変調とも呼ばれます。

緑の縦棒は方形波の1周期を表しています。各analogWrite(value)に書かれた値はパーセンテージに対応し、これをデューティサイクルと呼びます。このパーセンテージは1周期における高レベルの時間の割合、すなわちデューティサイクル = 高レベル時間 / 周期時間を指します。
図の上から下へ、最初の方形波のデューティサイクルは0%で対応する値は0、LEDの明るさは最も暗く、つまり消灯状態です。高レベルが長く続くほど明るくなります。したがって、最後のデューティサイクル100%の値は255で、LEDは最も明るくなります。50%は明るさの半分、25%はより暗い状態です。
PWMはLEDの明るさ調整やモーターの回転速度調整に多く使われ、モーターで駆動される車輪の速度も簡単に制御できます。Arduinoロボットを扱う際にPWMの利点がよりよく実感できます。
2.部品
Development Board *1 |
8833 Motor Driver *1 |
Red LED Module*1 |
|---|---|---|
|
|
|
3P F-F Dupont Wire*1 |
USB Cable*1 |
|
|
|
3.配線図
配線は変更せずそのままにしてください。

4.テストコード
ブロックをドラッグして編集できます。以下のブロックは参考用です。
(1).
(2).
(3).
(4).
(5).
(6).
完成テストコード

5.テスト結果
コードをV4.0ボードに正常にアップロードし、配線図に従って配線を接続し、USBケーブルでコンピュータと接続してボードに電源を供給します。電源を入れると、LEDが明るくなったり暗くなったりを徐々に繰り返し、人の呼吸のような動きをします。すぐに点灯・消灯するわけではありません。
6.応用練習
LEDのピンはそのままにして、コード(waitの後の値)を変更してください。

開発ボードにコードをアップロードすると、LEDがよりゆっくり点滅します。




