只使用蜂鸣器
时间: 2023-07-11 20:21:11 浏览: 104
蜂鸣器播放音乐
5星 · 资源好评率100%
以下是使用蜂鸣器播放《City of Stars》的示例代码:
```c++
#include "mbed.h"
// 声明蜂鸣器引脚
DigitalOut buzzer(PA_0);
// 声明City of Stars的音乐音符频率表
float city_of_stars_notes[] = { 261.63, 311.13, 349.23, 392.00, 440.00, 494.88, 523.25, 587.33, 659.26, 698.46, 783.99, 880.00, 987.77 };
// 声明City of Stars的音乐音符持续时间表
float city_of_stars_durations[] = { 0.5, 0.5, 0.5, 1, 0.5, 0.5, 1, 0.5, 0.5, 0.5, 0.5, 0.5, 1 };
int main()
{
// 播放City of Stars
for(int i = 0; i < 13; i++) {
float note_frequency = city_of_stars_notes[i];
float note_duration = city_of_stars_durations[i];
// 计算每个音符的周期
float period = 1.0 / note_frequency;
// 计算每个音符的持续时间
int note_time = (int)(note_duration * 1000);
// 计算每个音符的半周期
int half_period = (int)(period * 500);
// 播放音符
for(int j = 0; j < note_time; j += half_period * 2) {
buzzer = 1;
wait_us(half_period);
buzzer = 0;
wait_us(half_period);
}
// 等待一段时间来分隔音符
wait(0.1);
}
}
```
该代码使用DigitalOut引脚PA_0控制蜂鸣器。它使用两个表来存储《City of Stars》的音符频率和持续时间,并在循环中依次播放它们。对于每个音符,它计算周期、持续时间和半周期,并使用wait_us函数在适当的时间内切换蜂鸣器引脚。请注意,该代码使用wait函数在每个音符之间等待0.1秒,以分隔它们。
阅读全文