光敏电阻与 LED 环境光感应器 – 入门级 Arduino 教程
项目目标
使用光敏电阻(光依赖电阻,LDR)检测环境光强,通过 Arduino 读取模拟值,分三档控制两颗不同颜色 LED 指示“强光/中光/弱光”,并在串口监视器打印实时数值与状态文本。适合零基础入门模拟输入、条件判断与串口调试。
硬件清单
- Arduino UNO(或任意带模拟输入的开发板)×1
- 光敏电阻 (GL5528 或同类) ×1
- 1kΩ 电阻 ×1 – 与光敏电阻组成分压电路
- LED ×2(不同颜色,如红/绿)
- 220Ω 电阻 ×2 – LED 限流(原文建议 100Ω,220Ω 更稳妥)
- 面包板 ×1
- 跳线若干
电路连接
光敏电阻分压电路
光敏电阻一脚接 5V,另一脚接 A0 与 1kΩ 电阻一端;1kΩ 另一端接 GND。光照越强,电阻越小,A0 读值越大(0~1023)。
LED 指示电路
LED 阳极分别接 D13、D12(或任意数字口),阴极串 220Ω 接地。代码中 D13 为左侧 LED,D12 为右侧 LED。
代码实现
int light = 0; // 存储光照模拟值
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT); // 左 LED
pinMode(12, OUTPUT); // 右 LED
}
void loop() {
light = analogRead(A0); // 读取光敏电阻分压电压
Serial.println(light); // 打印原始值
if (light > 450) { // 强光
Serial.println("It is quite light!");
digitalWrite(13, LOW);
digitalWrite(12, LOW);
} else if (light > 229) { // 中光 (230~450)
Serial.println("It is average light!");
digitalWrite(13, HIGH); // 左 LED 亮
digitalWrite(12, LOW);
} else { // 弱光 (<230)
Serial.println("It is pretty dark!");
digitalWrite(13, HIGH); // 双 LED 亮
digitalWrite(12, HIGH);
}
delay(1000); // 避免串口刷屏
}
阈值调整建议
实际环境中,打开串口绘图器观察不同光照下的数值分布,再修改代码中的 450 与 229 阈值。也可改用 map() 映射为 0~100 百分比,或引入滑动平均滤波减少抖动。
进阶扩展
- 增加第三档 LED(如蓝色)实现四级指示
- 接入 PWM 调节 LED 亮度,模拟呼吸灯效果
- 结合继电器模块控制走廊灯/庭院灯自动开关
- 数据上传至 IoT 平台(Blynk、ThingSpeak)实现远程监控
- 替换为 BH1750 / TSL2591 数字光照度传感器,获得勒克斯单位绝对值
常见问题排查
- 串口始终显示 1023:光敏电阻未接好或 1kΩ 电阻接错,检查分压节点是否悬空。
- LED 不亮:确认极性、限流电阻阻值、引脚号与代码一致。
- 阈值不灵敏:更换不同阻值的固定电阻(如 4.7kΩ、10kΩ)改变分压比例。
制造工艺
- 树莓派与 Python 构建远程温度传感器:分步实战指南
- 树莓派 PIR 运动传感器控制 LED 实战指南
- 树莓派多传感器温度光照监测系统:DS18B20 实战构建
- 基于树莓派的卫生间占用传感器:通过 Twilio 实现语音与短信提醒
- 智能物联网罐:ESP8266 + Arduino + 超声波传感器实时监测罐内物位
- 可见光通信 (Li-Fi) 实验:Arduino 实现 LED 无线数据传输
- Bolt IoT + Arduino UNO 实现 6 路 LED 无级调光
- 仪表盘灯光全解码:颜色含义、常见报警灯与指示灯图文详解
- 色彩传感器:工作原理与关键应用
- OPT3007超薄环境光传感器:智能设备精准光测量
- 环境光传感器:功能、设计与关键应用
- 光学传感器:基础、类型与实用应用