戻る

42 明るさの変化に反応する

回路かいろ

24番のプログラム例と回路は同じです。

Arduino とCdSと抵抗(10kΩ茶黒橙金, 1kΩから100kΩぐらいで、CdSにあわせるとよい)を用意します。CdSには大きさの違うものがありますが、ここではどれでも使えます。 CdSの片方の足と抵抗の片方の足をつけてArduinoのアナログピンA0につなぐことに注意してください。

プログラム

動作どうさ

このプログラムを実行するとCdSを影にして暗くするとArduinoボード上のLEDが1秒間点灯します。

解説かいせつ

このプログラムでは

a=analogRead(0);
の行で現在の明るさを変数aに覚えています。

if(a - analogRead(0) > 20) {
}
は、a(過去の値)と現在の値の差(引き算)が20より大きければ{と}の間を実行します。そこでLEDを1秒間点灯しています。プログラムの内容を順番に読むと
  1. ピンの初期化
  2. a に A0 ピンの値を代入
  3. いま a - (今のA0ピンの値) が 20 を超えていれば
    1. LEDを点灯
    2. 1秒待つ
    3. LEDを消灯
  4. a に A0 ピンの値を代入
  5. 0.1秒待つ
  6. 3へ戻る
となっています。したがってif文の中の式は 0.1秒前と今の値の差が20を超えているとき(手などをかざして暗くなったとき)に成り立つので、そのときにLEDが点灯します。
戻る
(c) 2014 N. Mitsunaga
サンプルプログラムの著作権は放棄します。fritzingで作成した図は、そちらのライセンスに従って再配布して構いません。