戻る
24 暗くなったらLEDを点滅させる
回路
Arduino とCdSと抵抗(10kΩ茶黒橙金, 1kΩから100kΩぐらいで、CdSにあわせるとよい)を用意します。CdSには大きさの違うものがありますが、ここではどれでも使えます。
CdSの片方の足と抵抗の片方の足をつけてArduinoのアナログピンA0につなぐことに注意してください。
プログラム
動作
CdSの上でかげを作り暗くするとLEDが点滅します。もし、ずっと点滅しているときには解説を読んで調節してください。
解説
CdS(硫化カドミウムセル)は明るさに応じて抵抗値が変わる性質を持った部品です。明るいと抵抗値が小さくなり、暗いと抵抗値が大きくなります。上の回路の場合には明るいときにA0ピンの電圧が上がり、暗いときに電圧が下がります。
21番のプログラム例では数が同じあたいかを調べていました。ここでは analogRead(0) の値が 700 未満ならば、13ピンをHIGHにしてLEDを点灯し、0.5秒待っています。
部屋が暗いとずっとLEDが点滅するかもしれません。そのときには700を小さくします。
if(analogRead(0)<700) {
digitalWrite(13, HIGH);
delay(500);
}
前の例と違ってif文のelseから先がありませんね。式が成り立たないときに、実行する必要がなければ省略できるのです。
つぎの2行ではLEDを消灯して 0.5 秒待っています。
digitalWrite(13, LOW);
delay(500);
したがって、明るいときには「LEDを消して 0.5 秒待つ」を繰り返し、暗いときには「LEDを点けて 0.5秒待ち、消して0.5秒待つ」を繰り返します。
ここで「>」(大なり)「>=」(大なりイコール)「<」(小なり)「<=」(小なりイコール)の記号を覚えておきましょう。それぞれ、記号の左より右が大きい(左が右を超える)とき(>)、左が右以上(左と右が一緒でもいい)のとき(>=)、左より右が小さいとき(左が右未満)のとき、左が右以下(左と右が一緒でもいい)のときに,if文の一つ目が実行されます。else から先を書くと、そうでないときに2つ目が実行されます。
ためしてみよう
- 明るいときに光るようにしてみよう
- ブレッドボード上の LED が光るようにしてみよう
戻る
(c) 2014-2015 N. Mitsunaga
サンプルプログラムの著作権は放棄します。fritzingで作成した図は、そちらのライセンスに従って再配布して構いません。