#12初級

LDRで作る常夜灯

4.8(100)
189 完了
LDRで作る常夜灯
暗くなると自動で点灯し、朝になると消灯する小さな常夜灯です。光センサーが部屋の明るさを測定し、Arduinoが十分に暗くなったらLEDを点灯させ、明るくなったら消灯させます。街灯が夕方になると自動で点灯する仕組みも理解できます。

動画

回路図

LDRで作る常夜灯 - Circuit

ソースコード

Arduino (C++)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   Night Light with Ldr
4// ─────────────────────────────────────────
5// Turns the LED on automatically when it gets dark. The LDR voltage
6// divider is read on A0; when the value drops below 50 (dark) the LED on
7// D13 turns on, and it turns off in the light.
8//
9// Pins:
10//   D13 -> LED (with a 330 ohm resistor)
11//   A0 -> Junction of the LDR and the 10k resistor
12//   LDR other leg to 5V, 10k other leg to GND
13
14int value;   // Light reading (0-1023)
15
16void setup() {
17  pinMode(13, OUTPUT);   // LED output
18}
19
20void loop() {
21  value = analogRead(A0);   // Read the light level
22
23  // Threshold 50: anything below counts as dark. Tune the sensitivity with this number
24  if (value < 50) {
25    digitalWrite(13, HIGH);   // Dark: LED on
26  } else {
27    digitalWrite(13, LOW);    // Bright: LED off
28  }
29}
30

よくある質問

しきい値はどのように決めますか?▾

測定値を見るには、まずsetup()内に`Serial.begin(9600);`を追加し、loop()内の`value = analogRead(A0);`の直後に`Serial.println(value);`を追加してください。次にシリアルモニタを9600ボーで開きます。明るいときと暗くしたときの値を記録してください。暗いときに値が小さくなる接続の場合は、`if (value < 50)`の50を、この2つの値の間で選んだしきい値に置き換えます。

しきい値付近でLEDがちらつくのを防ぐにはどうすればよいですか?▾

明るさがしきい値付近にあると、小さな変動でLEDが点灯と消灯を繰り返します。点灯用と消灯用に別々のしきい値(例:400と450)を使い、ヒステリシスを設けると、ちらつきをなくせます。

LEDがLDRを照らして消灯してしまいます。どうすればよいですか?▾

LEDの光がLDRに当たると、センサーは周囲が明るいと判断します。LDRをLEDから離すか、LEDに向けないように配置してください。必要に応じてLDRの周りに小さな遮光板を設けてください。

この方法で実際の照明を点灯できますか?▾

はい、LEDの代わりにリレーモジュールを接続すれば、220 Vの照明を制御できます。商用電源の電圧は危険です。配線は機器の電源プラグを抜いた状態で行い、大人や電気工事士に手伝ってもらってください。