【学习分享】蜂鸣器和PWM测试
蜂鸣器Buzzer:
LinkNode提供了一个无源的蜂鸣器,使用一个MOS驱动。控制引脚为P0.22。
本实例会让板上的蜂鸣器发出声音。
硬件清单
1. LinkNode
2. Micro USB 数据
步骤
· 打开mbed在线编译器,创建新程序,或在上一个实例的基础上修改,除此之外;可以使用本地离线版本的MDK工程,也可以利用mbed在线编译环境, 详细情况可以参考我的评测1.
· 编译并生成hex文件
· PC接上LinkNode,将生成的hex文件复制到识别的系统磁盘中
· 完成下载后,按一次板上的RESET键对程序进行复位
· 蜂鸣器会发出一定频率的声音
注意:由于蜂鸣器由一个MOS管驱动,如果不使用到该器件,建议将P0.22设置为低电平,这样做可以降低功耗。
软件清单
#include<mbed.h>
DigitalOut buzzer(P0_22);//定义蜂鸣器输出控制引脚
/* 主函数 : */
int main()
{
while(1)
{
/* 蜂鸣器输出控制 */
buzzer=!buzzer;
/* 延时,决定无源蜂鸣器频率,下个例子可以利用pwm来输出音乐 */
wait_ms(1);
}
}
PWM 实例
LinkNode上没有提供DAC的功能,所以用PWM来实现模拟的输出。通过不同pwm的周期,表示不同的频率 不断的改变pwm,实现音乐的不同元素.
本例通过PWM的方式来实现对Buzzer,使其播出一段旋律。
硬件清单
1. LinkNode
2. Micro USB 数据
步骤
1. 编写程序
· 打开mbed在线编译器,创建新程序,或在上一个实例的基础上进行修改
· 编译并生成hex文件
· PC接上LinkNode,将生成的hex文件复制到识别的系统磁盘中
· 完成下载后,按一次板上的RESET键对程序进行复位
· 蜂鸣器会发出一段旋律。
软件清单
#include "mbed.h"PwmOut buzzer(P0_22);
//频率数组float frequency[]={659,554,659,554,440,494,554,587,494,659,554,440};float beat[]={1,1,1,1,1,0.5,0.5,1,1,1,1,2}; //节拍数组
int main() {
while (1) {
for (int i=0;i<=11;i++) {
buzzer.period(1/(2*frequency[i])); // 设置PWM周期
buzzer=0.5; // 设置占空比
wait(0.4*beat[i]); // 保持节拍周期
}
}
}