周囲の明るさによってLEDをON/OFFする

ホームセンターなどでよく見かける簡単な防犯灯(周囲が明るいときは消灯していて,暗くなると点灯するもの.昼間に太陽電池で発電した電気を蓄電池に溜めておくものが多い)のように動作する回路を,明るさセンサ(CdS)を応用して作ってみましょう.

回路

下の実体配線図のように,CdSの抵抗値(つまり周囲の明るさ)によってArduinoのアナログ入力端子にかかる電圧が変化するようにします. このとき,明るいと電圧が高くなり,暗いと低くなるようにした方が直感的なので,電気の流れ方をCdS→抵抗→GNDとなるようにします. 今回は回路を簡単にするためArduinoの内蔵LEDを利用しましたが,デジタル端子から抵抗とLEDに配線してもよいと思います(その方が色も選べて楽しい).

cds.png

スケッチ

スケッチは以下のようにとても単純です.

/*
  Light LED when it's dark
*/

const int analogInput = 0;

void setup() {
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  int analogValue;
  
  analogValue = analogRead(analogInput);
  Serial.println(analogValue);
  if (analogValue < 100)
    digitalWrite(LED_BUILTIN, HIGH);
  else
    digitalWrite(LED_BUILTIN, LOW);
  delay(1000);
}

このスケッチでは loop() の後半で変数 analogValue の値を定数100と比較しています. この100という値は場所などの条件によって変わるので,シリアルモニタの値を眺めながら調整してください.

また,最後の delay(1000) で「1秒おきに周囲の明るさを確認する」ことになっています. この間隔を短くすることでもっと鋭敏に反応するLEDになるし,間隔を長くすればゆったり反応するようになります.

課題

  1. LEDが点灯したり消灯したりするタイミングでブザーが「ぴっ」と鳴るようにしてみよう
  2. 紙で小さな家を作り,窓からLEDの明かりが見えるようにすれば,周囲が暗くなると家の明かりが灯るような工作ができます

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-10-13 (火) 18:45:15