基于Arduino的智能台灯: 调整亮度,检测人体,测距 确保代码好用和原理图,红外测有没有人,测距的模块用来测距离 系统两个模式,自动模式下红外探测有没有人,没人关灯,有人开灯,且测距,距离小于30,响蜂鸣器 手动模式下,可以手动调整灯光亮度,自动模式下的亮度是根据环境光自动调整的。 自己有arduino和这些硬件的话,可以直接组装起来,确保代码好用,有注释 首先导入了必要的库文件,包括U8glib库用于OLED显示屏的控制,SPI库、Wire库、String库和SoftwareSerial库等。 接着定义了一些变量,包括人的存在与否、系统模式、LED亮度等。 接下来是一些函数的定义,包括读取旋钮的值、人体探测传感器的检测、光敏电阻传感器的读取、控制灯光亮度、自动控制灯光亮度、手动控制灯光亮度、模式切换中断函数、开关切换中断函数、距离读取及判断函数和屏幕显示函数等。 在setup函数中进行一些初始化的操作,包括串口的初始化、引脚的设置、中断的设置等。 主循环部分,在循环中首先检测人体探测传感器的信号,并根据系统模式来控制灯光亮度。在自动模式下,通过检测光敏电阻传感器的信号来自动调整灯光亮度,并通过超声波测距模块来判断是否需要报警。在手动模式下,通过旋钮来手动调整灯光的亮度。 最后通过OLED显示屏显示一些相关的信息。 总体来说,这段代码实现了一个智能台灯的控制功能,通过人体探测传感器、光敏电阻传感器、旋钮和超声波测距模块来实现智能调光和报警功能,并通过OLED显示屏显示相关信息。

当然可以,以下是一篇关于您提供的 Arduino 智能台灯代码的功能说明文章,适用于项目文档、技术分享或产品介绍:


项目概述

本系统是一个基于 Arduino 的智能台灯控制系统,具备环境光自适应调节人体感应控制手动/自动模式切换距离检测报警OLED屏幕状态显示等功能。系统通过多种传感器协同工作,实现节能、智能、安全的照明控制。


硬件组成

模块名称 引脚/接口 功能说明
OLED 屏幕 I2C 接口 显示系统状态、亮度、模式等
人体感应传感器 12 (PEOPLE_PIN) 检测是否有人
光敏电阻 A3 (IDR_OUT) 检测环境光强度
旋钮电位器 A2 (VR_OUT) 手动调节亮度
超声波测距模块 5 (TrigPin)
6 (EchoPin)
测量前方物体距离
蜂鸣器 10 (BEEP_PIN) 距离过近时报警
模式切换按钮 3 (MODE_SWITCH) 切换自动/手动模式
用户控制按钮 2 (USER_SWITCH) 切换距离报警阈值
LED 灯控制 9 (LED_CTL) PWM 控制灯光亮度

功能详述

1. 人体感应与延时关灯

  • 使用人体红外传感器(SR501)检测是否有人。
  • 若检测到无人,系统会延迟约 15秒(可调nopeople_times)后自动关灯,避免误判。

2. 环境光自适应调节(自动模式)

  • 使用光敏电阻检测环境光强度。
  • 光线越暗,灯光亮度越高;光线充足时自动调暗或关闭灯光。
  • 实现“按需照明”,节能且护眼。

3. 手动调光模式

  • 通过旋钮电位器调节灯光亮度。
  • 亮度范围:0%~100%,通过 PWM 输出控制 LED 亮度。

4. 模式切换

  • 使用按钮切换自动模式手动模式
  • 自动模式下根据人体和环境光自动控制灯光。
  • 手动模式下用户可通过旋钮自由调节亮度。

5. 距离检测与报警

  • 使用超声波模块检测前方障碍物距离。
  • 当距离小于设定阈值(默认30cm,可在20~50cm间调节)时,蜂鸣器报警。
  • 阈值可通过用户按钮循环切换。

6. 状态显示

  • 使用 128x64 OLED 屏幕实时显示:
  • 当前灯光亮度
  • 系统模式(AUTO / MANUAL)
  • 距离报警阈值

系统流程图

开始 → 初始化传感器与屏幕 → 循环执行:
    ↓
检测是否有人 → 无人则延时关灯
    ↓
判断当前模式:
    - 自动模式:有人 → 根据环境光调节亮度
    - 手动模式:根据旋钮调节亮度
    ↓
检测距离 → 过近则蜂鸣器报警
    ↓
更新屏幕显示 → 延时750ms → 下一循环

适用场景

  • 家庭书房、卧室
  • 办公室工位
  • 学生宿舍
  • 任何需要智能照明与安全提醒的场合

扩展建议

  • 可接入 Wi-Fi 模块,实现手机远程控制。
  • 增加语音控制模块(如LD3320)。
  • 记录用电数据,生成节能报告。
  • 添加定时开关功能。

基于Arduino的智能台灯: 调整亮度,检测人体,测距 确保代码好用和原理图,红外测有没有人,测距的模块用来测距离 系统两个模式,自动模式下红外探测有没有人,没人关灯,有人开灯,且测距,距离小于30,响蜂鸣器 手动模式下,可以手动调整灯光亮度,自动模式下的亮度是根据环境光自动调整的。 自己有arduino和这些硬件的话,可以直接组装起来,确保代码好用,有注释 首先导入了必要的库文件,包括U8glib库用于OLED显示屏的控制,SPI库、Wire库、String库和SoftwareSerial库等。 接着定义了一些变量,包括人的存在与否、系统模式、LED亮度等。 接下来是一些函数的定义,包括读取旋钮的值、人体探测传感器的检测、光敏电阻传感器的读取、控制灯光亮度、自动控制灯光亮度、手动控制灯光亮度、模式切换中断函数、开关切换中断函数、距离读取及判断函数和屏幕显示函数等。 在setup函数中进行一些初始化的操作,包括串口的初始化、引脚的设置、中断的设置等。 主循环部分,在循环中首先检测人体探测传感器的信号,并根据系统模式来控制灯光亮度。在自动模式下,通过检测光敏电阻传感器的信号来自动调整灯光亮度,并通过超声波测距模块来判断是否需要报警。在手动模式下,通过旋钮来手动调整灯光的亮度。 最后通过OLED显示屏显示一些相关的信息。 总体来说,这段代码实现了一个智能台灯的控制功能,通过人体探测传感器、光敏电阻传感器、旋钮和超声波测距模块来实现智能调光和报警功能,并通过OLED显示屏显示相关信息。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐