この記事ではArduinoでPWM出力をする方法を説明する。PWMを利用すればLEDの明るさを簡単に変化させることがでるようになる
Contents
この記事は以前に購入したOSOYOO製のArduino学習キットのレッスン内容について解説した記事です。
OSOYOOの学習キットは複数のグレードがあり、僕が購入したのは「LACC2006AD」という型番のもので低価格帯のグレードのものになります。
OSOYOOはキットの内容を時々変更しているようで、僕が購入したものは品切れになっています。上記のリンクは僕が購入したキットに構成が近い製品です(やや豪華版)
他のレッスンの内容を知りたい場合は、下記のリンク先にまとめていますので、そちらを参照してください。

Arduino互換のスターターキットを買ってみた
Arduinoを触ってみたいけど、何を買ったらいいのか、なにから始めればいいのかわかならない!調べて見れると便利でお得な学習…
この記事ではArduinoでPWM制御を行う方法について解説する。そもそもPWMとは何か?という話は別記事にて説明している。
用意するもの
- Arduino UNO R3互換ボード
- LED
- 抵抗(200オーム)
- ブレッドボード
- ジャンパ線
- パソコン
- USBケーブル
上記はキット付属品を使う場合。LEDにあった抵抗を用意しよう
回路図と結線

ArduinoでPWMが使えるピンは決まっている

回路を見る限り普通にLEDを点灯させるのと一緒に見えるね
ツン子
基本的に一緒でOK。ただPWMに対応しているピンは決まってるのでそこは注意が必要だよ。
ちたまんArduinoでPWMを利用したい場合は「3,5,6,9,10,11」のいずれかのピンでなければいけない。それ以外のピンに繋いでもPWMとして出力されないので注意しよう。

ピン番号の手前に「~」が付いてるピンがあるよね。それがPWM対応の印だよ
ちたまん
ほんとだ!そうやって覚えれば簡単だね
ツン子ブレッドボードに結線する

こんな感じでブレッドボードを使って結線しよう。単純なので難しい点はないはず。
スケッチにプログラムを書く
void setup ()
{
pinMode(3,OUTPUT);// declare pin 3 to be an output
}
void loop()
{
for (int a=0; a<=255;a++)
{
analogWrite(3,a);
delay(8);
}
for (int a=255; a>=0;a--)
{
analogWrite(3,a);
delay(8);
}
delay(800);
}
analogWrite()
PWMで電圧を出力するにはdegitalWriteの代わりにanalogWriteを使用する。
引数は2つ必要でanalogWrite(出力ピン,デューティー比)となっている。
出力ピンには「~」の印字されたピン番号を指定する。デューティー比は0~255までの数値で指定する。
数値が小さいほどデューティー比が小さいのでLEDは暗くなり、大きいほど明るくなる。
ここでは8msごとにデューティー比を1ずつ変化させてLEDの明るさを変化させている。
さてこのスケッチを実行すると・・・

こんな感じでLEDの明るさが変化するはずだ。
今回は連続的にデューティー比を変更しているのでわかりにくいが、試しにanalogWrite(3,1)のように1で固定出力しても弱くともしっかりLEDが点灯することが確認できるはず。抵抗値を変化させるよりはるかに簡単に明るさの制御が行える。

LEDの調光器とか簡単に作れそうだね。
ツン子
そうだね。コンセントの場合交流だからそこの変換が面倒だけど、車とかいじるのが好きな人はArduinoを車載すれば色々遊べそうだよね。
ちたまんArduinoを始めるなら学習キットがおすすめ
学習キットならArduino互換ボード本体に加えてLEDやモーターが付いてくるのですぐに実験&学習がスタートできる。
僕が買ったのはOSOYOO製のセットで比較的シンプルなセット。※セット内容は常に変動するため購入当時と同じものは見つからなかった。リンク先は僕が購入したものになるべく近いものを選んでみた。
OSOYOO学習キットのまとめ記事

Arduino互換のスターターキットを買ってみた
Arduinoを触ってみたいけど、何を買ったらいいのか、なにから始めればいいのかわかならない!調べて見れると便利でお得な学習…
まとめ記事ではこの学習キットを選んだ理由や各レッスンの概要とレッスン毎の詳細記事へのリンクをまとめているので、Arduinoを始めたいという人の参考になればと思う