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

ソースコード
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の照明を制御できます。商用電源の電圧は危険です。配線は機器の電源プラグを抜いた状態で行い、大人や電気工事士に手伝ってもらってください。
