#11初級

LDRで光の強さを測定

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

動画

回路図

LDRで光の強さを測定 - Circuit

ソースコード

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で十分です。