光影交响:Arduino DIY 生日祝福灯光音乐装置
项目简介
这是一个充满趣味的 Arduino 入门项目,通过三颗 LED 灯和一个小喇叭,播放《生日快乐》旋律的同时呈现随机灯光效果。项目源于作者尝试制作 LED 距离可视化失败后,转而寻找更简单有趣的创意。无论是作为电子入门练手,还是送给亲友的独特生日惊喜,都是绝佳选择。
所需材料
- Arduino UNO × 1
- 面包板 × 1
- 杜邦线若干
- LED 灯 × 3(红、蓝、白各一,颜色可自行搭配)
- 扬声器 0.25W/8Ω × 1(建议预焊接导线,实测 0.5W 也可使用)
- 220Ω 电阻 × 3
- 烙铁(如需给扬声器焊线)
电路搭建步骤
步骤 1:准备工作
整理所有元件。若扬声器引脚未焊线,请先焊接杜邦线以便插接面包板。
步骤 2:安装 LED
将三颗 LED 并排插在面包板上,正极(长脚)朝同一方向,便于后续接线。
步骤 3:连接 LED 正极
用杜邦线分别将三颗 LED 的正极连接至 Arduino 数字引脚:
- 红色 LED → 引脚 9
- 蓝色 LED → 引脚 10
- 白色 LED → 引脚 11
步骤 4:接地与限流电阻
每颗 LED 负极(短脚)串联一只 220Ω 电阻,电阻另一端接面包板负极轨(蓝色横排),最后用一根杜邦线将负极轨接至 Arduino GND。
步骤 5:连接扬声器
扬声器负极接面包板负极轨,正极接 Arduino 数字引脚 3(PWM 引脚,用于输出音调)。
代码说明
项目包含两个文件:主程序 Happy_Birthday_Lights_Sounds.ino 与音高定义库 pitches.h。主程序在 setup() 中初始化三路 LED 引脚为输出,随后循环播放 25 个音符,每个音符随机点亮两颗 LED、熄灭一颗,营造跳动灯光效果;tone() 函数驱动引脚 3 发声,noTone() 停止,延时由音符时值决定。播放完毕后熄灭所有 LED 并延时 3 秒,loop() 为空,不再重复。
pitches.h 定义了 C0~C8 共 88 个音符对应的频率常量,主程序通过 #include "pitches.h" 引用,使旋律数组更具可读性。
进阶玩法建议
- 更换
melody[]与noteDurations[]即可播放其他曲目。 - 增加更多 LED 并配合移位寄存器(如 74HC595)实现流水灯、频谱跳动等效果。
- 加入按键触发播放,变身“生日贺卡”或“桌面音乐盒”。
原理图与源码下载
原理图文件:happy_birthday_lights__sounds_I16bf0SBDq.fzz(Fritzing 格式)
完整代码已内嵌上方,可直接复制至 Arduino IDE 编译上传。
制造工艺
- Arduino Mega 按键 PWM 调光:三阶段渐变 LED 实战教程
- DHT11 温湿度传感器项目:LED 指示与压电蜂鸣器报警
- 构建 GPS 数据记录器:结合 Azure IoT Hub 实现空间分析
- Arduino + DHT11 + 以太网盾板温湿度数据记录仪
- Arduino 声纳实时测距与 Processing 可视化
- Arduino 驱动的家用风量计:构建与监测指南
- DIY 吉他高速拨片与踏板 - 3D 打印电机驱动拨片制作指南
- 仪表盘灯光全解码:颜色含义、常见报警灯与指示灯图文详解
- 电气原理图导线连接约定:清晰指南
- 网络与总线:数字系统布线的清晰指南
- 庆祝精密制造50年:Metal Cutting Corporation迎来半世纪里程碑
- 钛丝:类型、特性与工业应用