戻る

23 ボリュームの角度でLEDの点滅(てんめつ)の速さを変える

回路かいろ

Arduino と半固定抵抗(左)か可変抵抗(右)を用意します。可変抵抗の値は1kΩから10kΩぐらいが適当です。半固定抵抗は一度角度(抵抗値)を決めるとあまり変えないものに使います。精密ドライバーで回すものが多いです。可変抵抗はボリュームなど、よく設定を変えたいものや、機械の動きを知る(ポテンショメータ)ために使います。必要ならつまみを用意します。どちらも、大きさや形は色々あります(回転形でなくスライド形といって、つまみが直線に動くものもあります)が、ほとんどのものが使えます。 図のように半固定抵抗(可変抵抗)の両端の端子にグラウンド(GND)と5Vをつなぎ、真ん中の端子をアナログピンA0につなぎます。

プログラム

動作どうさ

このプログラムはArduinoボード上のLEDを点滅させます。 点滅の速さは半固定抵抗(可変抵抗)の角度で決まります。

解説かいせつ

analogRead(0)はA0ピンの電圧に比例した0から1023の値を返します。 A0ピンが0Vのときには0で、2.5Vで512、5Vで1023になります。 半固定抵抗(可変抵抗)の抵抗値は、つまみの角度に応じて変わります。 上の回路のようにグラウンドと5Vを1と3の端子につなぐと、2の端子の電圧が0Vから5Vまで、つまみの角度に応じてなめらかに変化します。

したがって

delay(analogRead(0));
の行の待ち時間は、つまみの角度に応じて0秒から約1秒(1023ミリ秒)の間で変わります。

ためしてみよう

Arduinoに計算をさせることが出来ます。+,ー,×,÷は、それぞれ+, -, *, / の記号で表します。

delay(analogRead(0) + 500);
とすると、待ち時間を決める値が500から1523の間になるので、0.5秒から1.5秒の間で変わるようになります。
delay(analogRead(0)*2);
とすると、待ち時間を決める値が0から2046の間になるので、0秒から2秒の間で変わるようになります。
delay(analogRead(0)/2);
とすると、待ち時間を決める値が0から511の間になるので、0秒から0.5秒の間で変わるようになります。
delay(analogRead(0)/2 + 500);
とすると、待ち時間を決める値が500から1011の間になるので、0秒から1秒の間で変わるようになります。

ほんとうになるか試してみましょう。また1秒から10秒にするにはどうしたらいいでしょうか?1秒から1000秒になるようにしたとき、ちょうど10秒になるよう調整することは簡単でしょうか?難しいでしょうか。そうなる理由を考えてみましょう。


戻る
(c) 2014 N. Mitsunaga
サンプルプログラムの著作権は放棄します。fritzingで作成した図は、そちらのライセンスに従って再配布して構いません。