俺のクソレシピ

おもにプログラミングについて俺の趣味についてテキトーに書いています。

Arduino Uno PWMでLEDの明るさを制御する

今回はタイトルにある通り、ArduinoのLEDの明るさをPWMを使って制御していきたいと思います。
余談ですが、今回俺は「Arduino Web Editor」というWebサービスを使ってスケッチをArduinoに書き込んでみました。結構使いやすく、俺はインストール版よりUIが好きです。ただ、アカウントを作ってプラグインをインストールする必要があったので最初は少しめんどくさかったですね。
ということで、余談はこの辺にして今回の本題に入っていきたいと思います。

f:id:myprogramming:20170913191316j:plain

PWMとは

PWM(パルス幅変調)とは、簡単に説明すると素早くON・OFFを繰り返しONとOFFの比率を変えることによって、出力される電力を制御する方式の一つです。つまり、PWMを使うと擬似的にアナログ出力することが可能になります。

ArduinoでPWMを実現するには

ArduinoでPWMはanalogWrite関数を使うことによって実現できます。第一引数にPWM出力が可能なピン番号を、第二引数に出力する電力を0~255までの256段階で指定します。ちなみに、PWM出力が可能なピン番号は、「~」が横に書いてあるデジタルピンです。

f:id:myprogramming:20171031205146p:plain
「~」が横に書いてあるデジタルピンがPWM出力可能

だんだん明るくしてまた暗くしていくものを作ってみた

スケッチはこちら

まず、変数iを定義してfor文で0~255の範囲で増やしていきます。このiの値を使ってPWM出力し10ミリ秒待って次の値に変化させます。同じように暗くしていき、それを繰り返すことによってだんだん明るくなってまた暗くなっていく、という風に動作します。

Arduino言語の文法についてはこちら
Arduino 日本語リファレンス

回路はこちら
f:id:myprogramming:20171031210101p:plain

回路は前回のLチカの13番ピンを9番ピンに変更するだけでOKです。

実際に動作している様子

まとめ

今回はArduinoで、PWMを使ってLEDの明るさを制御していきました。このPWMを使えばLEDだけでなくDCモーターの速さやサーボモーターの角度などを制御したりすることができます。
前回はデジタル出力、今回はアナログ出力をやったので、次はデジタル入力、そしてアナログ入力という風にやっていきたいと思います。