戻る

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を小さくします(iArduinoTerminal に表示される値を目安にしてください)。
  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つ目が実行されます。

ためしてみよう


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