Arduino复刻“棺材舞”旋律:蜂鸣器+三色LED灯光秀完整教程
项目简介:病毒级BGM硬核还原
用Arduino UNO、8欧姆扬声器、三颗LED(红/黄/绿)、面包板与跳线,复刻全网刷屏的“棺材舞”旋律(Astronomia),灯光随乐律随机闪烁,趣味性与技术性兼具。
物料清单(BOM)
| 组件 | 规格 | 数量 |
|---|---|---|
| 主控 | Arduino UNO | 1 |
| 扬声器 | 0.25W, 8Ω | 1 |
| LED | 5mm 红/黄/绿 各1 | 3 |
| 面包板 | 通用 | 1 |
| 跳线 | 公对公 | 若干 |
| 开发环境 | Arduino IDE | 1 |
接线指引
- 三颗LED阴极分别接D5/D6/D7,阳极共接GND
- 扬声器正极接D3,负极接GND
核心代码架构
// 音高定义文件 pitches.h 包含 NOTE_C4 到 NOTE_D8 标准音高宏
#include "pitches.h"
int green=7, red=5, blue=6; // LED引脚
int melody[] = { NOTE_AS4, NOTE_AS4, ... NOTE_G4, NOTE_D5, NOTE_C5, ... }; // 112音符序列
int noteDurations[] = { 4,4,4,4, ... }; // 全为4分音符
void setup() {
pinMode(green,OUTPUT); pinMode(red,OUTPUT); pinMode(blue,OUTPUT); pinMode(3,OUTPUT);
}
void loop() {
for(int i=0; i<112; i++) {
int r1=random(5,12), r2=random(5,12), r3=random(5,12);
digitalWrite(r1,HIGH); digitalWrite(r2,HIGH); digitalWrite(r3,LOW); // 随机灯光
int dur = 750 / noteDurations[i];
tone(3, melody[i], dur);
delay(dur * 1.30);
noTone(3);
}
delay(3000);
digitalWrite(5,LOW); digitalWrite(6,LOW); digitalWrite(7,LOW);
}
关键技术点
- pitches.h:标准音高频率宏定义(C0-D8),移植自Arduino官方库
- tone()/noTone():硬件PWM产生方波驱动蜂鸣器
- 随机灯光:每音符随机点亮两灯一灭,视听联动
- 节奏控制:750ms基准/音符时值,间隔1.3倍时值
电路原理图
拓展建议
- 增加OLED显示歌词/波形
- 接入蓝牙模块实现手机选曲
- 设计PCB制作永久装置
点赞支持,更多酷项目持续更新!关注作者主页
制造工艺
- 棺椁制作:工艺、材料与行业未来
- 发光二极管:从诞生到百年寿命
- 用 Arduino Nano 自制 37 灯珠轮盘赌游戏机
- 用 Arduino Mega 制作惊艳的 5×5×5 LED 光立方
- 焕新旧遥控器:用 Arduino 打造 DIY 智能红外控制设备
- Arduino + HC-05 蓝牙控制 LED:MIT App Inventor 手机 App 开发全攻略
- 模拟指针风格 POV 时钟:Arduino Nano + 17 LED + 霍尔传感器
- 声控 8 路 LED 灯光秀:Arduino 入门项目
- 从零构建智能 Arduino 四足机器人:完整指南
- Arduino RGB LED调色器:三电位器混色入门项目
- DIY 节日影子剧场:Arduino 与可寻址 LED 灯条打造光影秀
- DIY Arduino 电子波疗设备 - 基于拉德尼克疗法的 EMR 治疗仪