有源蜂鸣器arduino播放新年好代码
时间: 2025-07-11 19:20:20 AIGC 浏览: 18
### 使用Arduino控制有源蜂鸣器播放《新年好》歌曲
以下是基于Arduino平台实现通过有源蜂鸣器播放《新年好》歌曲的代码示例。此代码利用了`tone()`函数来生成不同频率的声音信号,从而模拟音符。
#### 音乐参数设置
为了实现音乐播放功能,首先定义两个数组:一个是存储音符对应的频率值 `yindiao[]`,另一个是存储时间比例的数组 `time[]`。这些数据来源于标准音阶频率表以及简谱中的节奏信息[^1]。
```cpp
// 定义音调频率数组(Hz)
const int yindiao[] = {
262, // C4 (Do)
294, // D4 (Re)
330, // E4 (Mi)
349, // F4 (Fa)
392, // G4 (Sol)
440, // A4 (La)
494, // B4 (Si)
-1 // 表示静音
};
// 定义节拍时间比例数组
float time_ratio[] = {1, 0.5, 0.25}; // 对应全音符、二分之一音符、四分之一音符的比例
// 定义歌曲旋律数组(简谱转索引)
const int melody[] = {
1, 1, 6, 5, 3, 2, 2, 3, 5, 6, 1, 1,
1, 1, 6, 5, 3, 2, 2, 3, 5, 6, 1, 1,
1, 1, 6, 5, 3, 2, 2, 3, 5, 6, 1, 1
};
```
#### 主程序逻辑
在主程序中,初始化蜂鸣器连接到指定GPIO引脚,并通过循环逐一读取旋律数组中的每个音符并将其映射至实际频率输出给定持续时间。
```cpp
void setup() {
pinMode(3, OUTPUT); // 将数字引脚3设为输出模式用于驱动蜂鸣器
}
void loop() {
for (int i = 0; i < sizeof(melody)/sizeof(melody[0]); ++i) {
if (melody[i] >= 1 && melody[i] <= 7) {
tone(3, yindiao[melody[i]-1], 700*time_ratio[0]);
} else {
noTone(3);
}
delay(700*time_ratio[0]);
}
delay(2000); // 延迟两秒钟再重新开始播放
}
```
以上代码实现了简单的《新年好》曲目播放过程。其中每一段旋律由多个连续音符组成并通过适当延时形成完整节奏效果[^2]。
---
###
阅读全文
相关推荐


















