こんにちは、のすけです。

中華で始める Arduino入門日記の6回目です。

この連載は、爆安の中華製のArduino互換機を入手し、色々と苦しみながらも安い互換機でArduinoを学習してしまおうというものです。
入手の話はこちらから。

hollywis.hatenablog.com

本題

前回はブレッドボードを利用して、LEDをチカチカさせました。

hollywis.hatenablog.com

今回はなんと!チカチカではなくほわほわとロウソクのように瞬かせてみたいと思います。

できるんですねぇ、そんなことが。チュートリアルの5章 PWMになります。

では早速やってみましょう。

利用しているキットに近い奴は⇩

アナログ値(PWM)を扱う

指定したピンからアナログ値(PWM波)を出力することができるようです。

何が嬉しいかと言うと、LEDの明るさや、モータの回転スピードなどを調整する時に利用できるとのこと

制御できる段階は256段階(0~255)で、かなり細かく制御できるようですね。

ただし、制御できるDigital I/Oピンは決まっているそうで、3,5,6,9,10,11ピンだけだそうです。

利用方法

analogWrite関数というものが用意されています

実行されるともう一度analogWriteをしたりするまで、安定した矩形波が出力される模様。
周波数はだいたい500Hzだそうです。

ちょっとよくわからないので、ググりました。

矩形波(くけいは、Square wave)とは非正弦波形の基本的な一種であり、電子工学や信号処理の分野で広く使われている。 理想的な矩形波は2レベルの間を規則的かつ瞬間的に変化するが、その2レベルにはゼロが含まれることも含まれないこともある。 方形波とも呼ばれる。

https://upload.wikimedia.org/wikipedia/commons/thumb/0/0a/Synthesis_square.gif/350px-Synthesis_square.gif

by Wikipedia

うん。まだよくわからないけど。

電気を瞬間的にオンにしたりオフにしたりを規則的にすると矩形波になって

オンの時間とオフの時間を調整することで、電圧を擬似的に出力の最大値から256段階に分割していると

だから、抵抗とかを調整しなくても、LEDを明るくしたり暗くしたりができると。

そんな理解でいいのかな?

なるほど便利そうだ。

回路

実は前回と一緒です。9ピンを使います。

緑のジャンパーコードを差した状態を利用します。

f:id:hollywis:20151201185021j:plain

サンプルプログラム

プログラムはこちら。

int led = 9;           // LEDピンを設定
int brightness = 0;    // LEDの明るさ
int fadeAmount = 5;    // LEDの調光段階値
void setup() {
// 9ピンに設定
pinMode(led, OUTPUT);
}
void loop() {
// 9ピンの明るさを設定
analogWrite(led, brightness);
// 明るさを変更
brightness = brightness + fadeAmount;
// 調光の方向を逆にする
if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount ;
}
// 調光のために30ミリ秒のwaitを追加
delay(30);
}

analogWrite()というのが望む電圧を作るやつですな。

loopの度に設定し直していると。

0~255まで設定できるんだけど、1づつ調整してたら面倒だからfadeAmountで5づつ調整する設定にしていると。


if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount ;
}

最初はどんどん増えていくんだけど、255まで来たらもう増やせないから、255の時は-5づつ調整するようにモードを変更していると。
逆に0になったらまた5づつ増えるようにもなっていますね。

最後に30ミリ秒の待ちを入れて、いい感じの調光速度にしていると。

やってみた

お分りいただけるだろうか。チカチカではなく、ほわほわ光っているのが。

ロウソクか?と言われると微妙ですが、もう少しチューニングすればイケそうなレベルですね。

delayとかを調整して遊んでみると良いかと思います。
お試しください。

hollywis.hatenablog.com

Receive the latest news in your email
Table of content
Related articles