Arduino 与 HC-SR04 传感器的交互式伺服电机艺术装置
项目概述
本项目利用 36 个 SG90 微型伺服电机、Arduino Uno 以及三块 16 通道 PWM 伺服驱动板,打造一个动态电子艺术装置。灵感源自现代艺术博物馆中拥有 450 个伺服的大型装置,即使是这个小型版本也能呈现出迷人的视觉效果。
可选的交互功能:在装置顶部边缘安装 5 个 HC-SR04 超声波测距传感器。当手掌悬停在中间传感器上方时,系统进入交互模式,所有伺服尝试跟随手部移动;手掌离开几秒后自动恢复演示模式。该功能完全可选,不影响基础演示程序运行。
硬件清单
- Arduino Uno ×1
- Adafruit 16 通道 PWM 伺服驱动板 ×3
- SG90 微型伺服电机 ×36
- 5V 30W 开关电源 ×1
- 伺服延长线 ×1 套
- 24×48 英寸穿孔板(宽度裁至 32 英寸)×1
- 冰棒棒(裁剪至 3.25 英寸)×36
- HC-SR04 超声波测距传感器 ×5(可选)
所需工具
- 电烙铁
- 热熔胶枪
软件与库
- Arduino IDE
- Adafruit PWM Servo Driver 库(需从 Adafruit 安装)
硬件组装要点
机械结构
伺服电机以 4 英寸间距通过热熔胶固定在穿孔板背面。冰棒棒粘接在伺服输出轴上,作为显示“像素”。
关键校准: 所有伺服需在 PWM 值 150(最小位置)时将冰棒棒设为水平向右(从正面视)。提供了 SetServosToMinimum 测试程序辅助校准。建议购买 5 套 8 支装的 SG90,挑选行程 ≥160° 的 36 个合格电机。
电路布局
三块 PWM 驱动板安装在伺服阵列左侧,5V 30W 电源置于最右侧。Arduino 通过 USB 单独供电,方便拔插更新程序。可选的超声波传感器沿顶部边缘排列,用热熔胶和冰棒棒固定;一个小型万用板为传感器提供电源和地线分发。
软件架构
核心数据结构
curPos[36]:当前位置 ÷ 3(存为 byte)tarPos[36]:目标位置 ÷ 3
除以 3 的原因:1) 节省内存存入 byte;2) 统一以 3 步为增量移动。
初始化流程
setup() 将所有伺服设为垂直位置(中间值),同步初始化两个数组。
主运动子程序 goToTargets()
通过设定 tarPos 控制目标位置,参数控制速度:
reps:以 15 步为单位的重复次数mydelay:每次调用额外延时(毫秒)
交互跟踪子程序 trackRoutine()
当 goToTargets() 检测到中间超声波传感器有物体(手掌)时触发。尝试让所有伺服跟随手部在传感器阵列上方的移动;若数秒未检测到手掌则退出,恢复常规演示。
程序代码
完整代码仅供下载:ServosArt Software for Arduino Uno
原理图
- Arduino Uno 与三块 16 通道驱动板及伺服连接图
- 5 个超声波传感器与 Uno 连接图(启用交互跟踪)
制造工艺
- 专业 Fanuc 伺服电机维修服务
- 专业西门子伺服电机维修:快速可靠,恢复生产核心动力
- 伺服电机故障排查与专业维修指南:6 步 DIY 测试法与选维修商 6 大硬指标
- Raspoulette:太阳能自主鸡舍门控制系统原型
- Simple Pi Robot:用树莓派打造 2WD 自主巡航车
- MOSMusic 套件:MOSFET + Arduino 打造音乐同步灯光控制系统
- 线性电机原理与演进:从电能到精密直线运动的技术演变
- 行星减速机为何能提升伺服电机性能
- 伺服压力机核心解析:动力、精度与效率的完美平衡
- 伺服电机深度解析:工作原理、分类与核心价值
- 伺服电机减速机:功能原理、优势与应用场景全解析
- 齿轮箱与伺服电机完美搭配:精准运动控制的黄金法则