基于 Arduino 的自动昼夜 LED 灯带控制器设计

基于 Arduino 的自动昼夜 LED 灯带控制器设计
2025年11月14日 11:23 电子产品世界

本项目实现了一个 自动灯光控制系统

当环境变暗时,Arduino 自动打开 12V LED 灯带;

当环境光线变亮时,又自动关闭灯带。

系统核心特性:

  • 利用 LDR 光敏电阻 感知环境亮度;

  • 通过 电压分压电路 将光强转换为可测电压;

  • 使用 Arduino UNO Mini 读取光强并做逻辑判断;

  • 通过 5V 继电器模块 控制 12V LED 灯带通断;

  • 无需按键、无需人为干预,实现 全自动“天黑亮灯,天亮熄灯”

这是一个非常适合入门的 Arduino 项目,可以一次性学到:

  • 模拟传感器读取(analogRead

  • 电阻分压原理

  • 继电器驱动高压/大功率负载

  • 简单的控制逻辑与阈值判断

  1. Arduino UNO Mini × 1

  • 基于 ATmega328P 微控制器;

  • 5V 逻辑电平,板载 USB 接口;

  • 负责采集 LDR 信号、执行控制算法、驱动继电器。

  • LDR 光敏电阻(约 5 MΩ)× 1

    • 亮:电阻值降低;暗:电阻值升高;

    • 通过与 10k 电阻组成分压,将光照强度转换为电压。

  • 10kΩ 电阻 × 1

    • 与 LDR 组成 电压分压器

    • 10k 是典型室内光照下比较常用的分压值,能得到合适的 ADC 读数范围。

  • 5V 继电器模块 × 1(如:DFRobot Gravity 5A Relay)

    • 线圈侧使用 Arduino 的 5V 逻辑控制;

    • 触点侧串联在 12V LED 灯带的供电回路中;

    • 提供 电气隔离,保护 Arduino 不直接接触 12V 负载电路。

  • 12V LED 灯带 × 1

    • 项目中的光源负载;

    • 通常需要单独的 12V DC 电源适配器 供电。

  • 12V 电源适配器 × 1

    • 专门为 LED 灯带提供电源;

    • 通过继电器控制灯带的“断/通”;

    • 注意电流能力应匹配灯带功耗。

  • 面包板与若干杜邦线

    • 用于快速搭建原型电路;

    • 连接 Arduino ↔ LDR 分压 ↔ 继电器模块 ↔ 12V 灯带。

  • 热熔胶枪(可选)

    • 用于固定 LDR 位置或整理线材,提升结构可靠性。

    LDR 的电阻值会随光强变化:

    • 亮光 → 电阻变小(几千欧甚至更低)

    • 黑暗 → 电阻变大(可达兆欧级)

    直接测电阻不方便,因此使用经典的 电压分压电路

    • LDR 一端接 5V

    • LDR 另一端接模拟输入 A0

    • 在 A0 与 GND 之间串接 10k 电阻

    形成如下结构:

    A0 点的电压随光照变化而变化,Arduino 通过 analogRead(A0) 读到 0–1023 之间的数值,即可反映当前亮度。

    为了安全与隔离,LED 灯带不直接由 Arduino 供电,而是:

    • 灯带的 正极(+) 直接接 12V 电源正极

    • 灯带的 负极(-) 经继电器常开触点 (NO, COM) 串联后接到 12V 电源负极

    典型接法:

    当继电器吸合时 NO 与 COM 接通,LED 灯带形成完整回路 → 点亮;

    当继电器断开时,回路被切断 → 熄灭。

    继电器控制脚连接:

    • Relay VCC → Arduino 5V

    • Relay GND → Arduino GND

    • Relay IN  → Arduino 数字引脚 D2

    1. LDR 分压接线

    • LDR 一脚 → 5V

    • LDR 另一脚 → A0

    • 10k 电阻一端接 A0,另一端接 GND

    1. 继电器模块接线

    • VCC → 5V

    • GND → GND

    • IN → D2(即 RELAY_PIN

    1. LED 灯带与 12V 电源

    • 灯带 “+” → 12V 适配器 “+”

    • 灯带 “–” → 继电器 COM 接线端

    • 继电器 NO → 12V 适配器 “–”

    ⚠️ 安全提示:

    虽然这里使用的是 12V 低压直流,但依然要注意极性与接线牢固,避免短路。若将来扩展到市电负载(220V AC),必须使用符合安全规范的继电器与布线方式,并做好绝缘防护。

    你原文里附带的代码是一个 “按键控制继电器” 示例(BUTTON_PIN + INPUT_PULLUP),非常适合练习继电器控制和防抖。但要实现真正的 “自动白天关灯、夜晚开灯”,我们需要改成读取 LDR 的模拟值,并根据阈值控制继电器。

    下面给出一个 基于 LDR 的自动控制完整示例,逻辑为:

    • 读取 A0 模拟值 lightValue

    • 设置“变暗阈值”和“变亮阈值”,形成简单 迟滞,避免光线波动时灯频繁闪烁;

    • 根据当前状态和光照水平,决定是否吸合/释放继电器。

    使用建议:

    • 上传代码后,打开串口监视器(9600 波特率),在不同光照下查看 lightValue 大致范围;

    • 根据实际环境,微调 THRESHOLD_DARKTHRESHOLD_LIGHT

    • 确认继电器模块是否为“低电平触发”,如果不是,将 RELAY_ACTIVE_LOW 改成 false

    你提供的这段代码本身是很好的 继电器 + 按键防抖 教学示例:

    • 使用 INPUT_PULLUP 作为按键输入模式;

    • loop() 中做简单防抖;

    • RELAY_ACTIVE_LOW 适配不同继电器模块的触发逻辑。

    这段代码可以作为 “手动开关模式”调试用模式,例如:

    • 先用按键确认继电器和灯带接线无误;

    • 再切换到上面的 LDR 自动模式。

    你可以把它单独作为“附录:按键控制继电器示例”放在文章末尾。

    1. 单独测试继电器 + 灯带

    • 先使用“按键控制继电器”的简化代码;

    • 手动按键,看灯带是否跟随 ON/OFF;

    • 确认继电器接线、电源极性正确。

  • 测试 LDR 读数

    • 使用一个只做 analogRead(A0)Serial.println() 的小程序;

    • 在明亮、半暗、全暗环境下记录 lightValue

    • 以实际读数为依据设置 THRESHOLD_DARK / THRESHOLD_LIGHT

  • 整体联调

    • 上传自动控制代码;

    • 用手遮住 LDR,观察串口显示是否识别为“DARK”并点亮灯带;

    • 用手机手电筒/台灯照向 LDR,观察是否识别为“BRIGHT”并熄灭灯带;

    • 根据实际使用环境微调阈值和延时。

    这个 基于 Arduino 的自动昼夜 LED 灯带控制器,在结构上非常简单,却完整涵盖了 IoT 与嵌入式入门所需的多个核心知识点:

    • 传感器(LDR) → 模拟信号采集;

    • 电阻分压与 ADC 读数之间的关系;

    • 继电器驱动高功率负载的安全做法;

    • 状态逻辑 + 阈值 + 迟滞,避免抖动。

    在此基础上,你还可以进一步扩展:

    • 使用 电位器 调节“灵敏度”,实时改变阈值;

    • 加入 手动模式/自动模式切换开关

    • OLED 或 LCD1602 实时显示光照值与当前灯状态;

    • 使用 ESP8266 / ESP32 + Wi-Fi,把光照和灯状态上传到手机 App 或云平台。

    灯带Arduino设计
    新浪科技公众号
    新浪科技公众号

    “掌”握科技鲜闻 (微信搜索techsina或扫描左侧二维码关注)

    创事记

    科学探索

    科学大家

    苹果汇

    众测

    专题

    官方微博

    新浪科技 新浪数码 新浪手机 科学探索 苹果汇 新浪众测

    公众号

    新浪科技

    新浪科技为你带来最新鲜的科技资讯

    苹果汇

    苹果汇为你带来最新鲜的苹果产品新闻

    新浪众测

    新酷产品第一时间免费试玩

    新浪探索

    提供最新的科学家新闻,精彩的震撼图片