
部屋の明るさを数値で見てみませんか?光に反応する小さな部品、LDRで周囲の光を測定し、Arduinoが0.5秒ごとにその値をコンピューターの画面に表示します。手で覆うと数値が変わる様子を確認できます。自動で点灯する常夜灯などのプロジェクトへの第一歩です。
動画
回路図

ソースコード
Arduino (C++)
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// Measuring Light Intensity with an LDR
4// ─────────────────────────────────────────
5// Reads the ambient light on A0 through a voltage divider made of an LDR
6// and a 10k resistor, and prints the 0-1023 value to the Serial Monitor
7// every 0.5 s. The value rises as the light gets brighter.
8//
9// Pins:
10// A0 -> Junction of the LDR and the 10k resistor
11// LDR other leg to 5V, 10k other leg to GND
12
13int value; // Light reading (0-1023)
14
15void setup() {
16 Serial.begin(9600); // Serial at 9600 baud
17}
18
19void loop() {
20 value = analogRead(A0); // Read the LDR voltage
21 Serial.print("Value: ");
22 Serial.println(value);
23 delay(500); // Wait 0.5 s
24}
25
よくある質問
LDRはどのように動作しますか?▾
LDR(光依存抵抗)は、当たる光が強くなるほど抵抗値が小さくなります。10 kΩの抵抗と組み合わせて分圧回路を作ると、光の変化が電圧の変化に変換され、`analogRead`で0〜1023の値として読み取れます。
明るいときと暗いときの読み取り値はどのくらいですか?▾
接続方法によって異なりますが、一般に明るいときは高く、暗いときは低くなります(逆の場合もあります)。実際に使う環境で、明るいときと暗いときの値をシリアルモニタで確認し、記録してください。今後のプロジェクトでしきい値を決める際に使えます。
シリアルモニタの文字が化けるのはなぜですか?▾
シリアルモニタのボーレートは、コード内の`Serial.begin()`で指定した値(例:9600)と一致させる必要があります。異なる値にすると、画面の文字が化けます。
LDRより高感度な光センサーはありますか?▾
はい、BH1750などのI2C光センサーは光の強さをルクス(lx)で直接測定でき、LDRよりも安定した測定ができます。簡単な常夜灯や暗さの検知にはLDRで十分です。
