光らせるまとめ”明るさ”を変化させるということ前回、前々回で行った制御では、LEDの”ON”と”OFF”のみの制御を行いました。Lチカ!複数のLEDを操るしかしながら、LEDを照明として考えると”明るさ”を変化させられた方が明らかに便利ですね。ArduinoでLEDの明るさを制御するには、PWM制御という方法を使います。Modulation)は、日本語でいうと「パルス幅変調」。普通、LEDの明るさを変えるには流す電流の量を調節します。電流の量を調節するには、加える電圧の大きさを調節すればいいのだけど、Arduinoのデジタル出力は5V一定で、値を変化させることができません。2.5Vで出力して!ってことができないわけです。そこでPWMの出番です。※ここからしばらく小難しい話になります。やってられないという人は下の「準備完了!」まですっ飛ばしちゃって下さい。PWM制御は、簡単にいうと「ものすごい高速で出力の”ON”と”OFF”を繰り返すことによって疑似的に出力を変化させる」ということです。上の図のように、一定の周期で出力(5V一定)をONOFF繰り返します。そのとき、周期T秒のうち出力を”ON”にしている時間τ(タウ)の割合によって、出力が変化します。周期の半分の時間ONにしている場合は5V×50%=2.5Vの出力ですね。図のような長方形の波形を”パルス”といい、そのパルスの幅(=ONの時間)によって出力を変化させるから、パルス幅変調というわけです。Arduinoは5Vを出力しているけど、「半分の時間しか出力してないから、電圧も相対的に半分だよね」という感じです。実際時間で積分すれば2.5V一定出力の場合と一致します。はじめは理解しにくい考え方だけど、マイコンの世界では超定番のテクニックなので慣れてしまいましょう。ArduinoでPWM制御ではこのPWM制御をArduinoで行う場合はどうすればいいのか。上図のように番号の前に”~”がついているものがあります(3,5,6,9,10,11番ピン)。このピンがPWM出力に対応しているピンです。LEDの明るさを制御したいならこのうちのいずれかのピンを使わないといけない。前回までの13番ピンや12番ピンは使えません。続いてスケッチ上ではどのように表現すればよいのかが問題です。LOW);という命令でしたが、PWMの場合はこうなります。//50%の出力はい。引っかかるポイントがいくつかありそうですね。命令がanalogWriteとなってます。単純に命令の名前なので、覚えましょう。11はピン番号なのでいいとして、そのあとの値が問題です。255とか128とか。