声控 8 路 LED 灯光秀:Arduino 入门项目
元器件清单
| 元器件 | 数量 | 备注 |
|---|---|---|
| Arduino UNO | 1 | 主控板 |
| 全尺寸无焊面包板 | 1 | 用于电路搭建 |
| 5mm 红色 LED | 3 | |
| 5mm 黄色 LED | 2 | |
| 蓝绿色 LED | 2 | |
| 220Ω 电阻 | 8 | 每个 LED 串联一个 |
| SparkFun 声音检测模块(含排针) | 1 | 模拟输出,灵敏度可调 |
所需软件
- Arduino IDE
项目简介
这是一个适合初学者的 Arduino 声控灯光项目。通过声音传感器检测环境声音强度,控制 8 个不同颜色的 LED 依次点亮,形成类似频谱仪的视觉效果。项目代码简单易懂,适合初学者理解模拟信号读取、串口调试和条件判断等基础概念。
工作原理
声音检测模块输出模拟电压值(0-1023),Arduino 通过 A0 引脚读取该值。根据预设的阈值,依次点亮对应的 LED:声音越大,点亮的 LED 越多。每个 LED 的触发阈值可在代码中单独调整。声音传感器上的蓝色电位器可调节灵敏度。
核心代码
/*
* 声控 8 LED 灯光秀
* 作者:Mantas Utka
*/
int ledPin[8] = {13, 12, 11, 10, 9, 8, 7, 6}; // 8 个 LED 引脚
int sensorPin = A0; // 声音传感器模拟输入引脚
int val = 0; // 存储读取的模拟值
// 各 LED 触发阈值(可根据实际情况调整)
int threshold[8] = {127, 378, 505, 632, 759, 886, 980, 1000};
void setup() {
for (int i = 0; i < 8; i++) {
pinMode(ledPin[i], OUTPUT);
}
pinMode(sensorPin, INPUT);
Serial.begin(9600);
}
void loop() {
val = analogRead(sensorPin);
Serial.println(val); // 串口打印数值,便于调试阈值
for (int i = 0; i < 8; i++) {
if (val >= threshold[i]) {
digitalWrite(ledPin[i], HIGH);
} else {
digitalWrite(ledPin[i], LOW);
}
}
}
代码优化说明
- 使用数组管理 LED 引脚和阈值,代码更简洁、易维护
- 通过串口实时输出传感器数值,方便根据实际环境调整阈值
- 每个 LED 独立判断,形成渐变点亮效果
调试技巧
- 打开串口监视器(波特率 9600),观察安静环境下的基准值
- 拍手或播放音乐,观察数值变化范围
- 根据观察到的数值范围,修改
threshold数组中的值 - 拧动声音传感器上的蓝色电位器调节灵敏度
制造工艺
- 木琴:从非洲古老起源到现代管弦乐完美
- 黑胶唱片LP制作的艺术与工艺
- 发光二极管:从诞生到百年寿命
- Arduino复刻“棺材舞”旋律:蜂鸣器+三色LED灯光秀完整教程
- 用 Arduino Mega 制作惊艳的 5×5×5 LED 光立方
- Arduino + HC-05 蓝牙控制 LED:MIT App Inventor 手机 App 开发全攻略
- 从零构建智能 Arduino 四足机器人:完整指南
- 使用 Arduino Nano 33 BLE Sense 实现音频数据传输
- 扬声器极性反转演示声波抵消实验
- LED vs 白炽灯工业照明:能效与 ROI 终极指南
- 英飞凌 NLM0011/NLM0010:NFC 使能无接触 LED 驱动编程
- 研究人员利用LED室内照明和智能手机捕获3D图像