蜂鸣器

来自Microduino Wikipedia
跳转至: 导航搜索
Language English

目的

本教程将通过三个案例介绍如何使用Microduino蜂鸣器。

设备

简介

一般蜂鸣器分为有源蜂鸣器和无源蜂鸣器。Microduino蜂鸣器采用的是无源蜂鸣器。

  • 有源蜂鸣器
    • 内部有振荡、驱动电路。加电压信号(高电平)就可以响。
      • 优点:是用起来方便。
      • 缺点:频率固定了,就只一个单音。
  • 无源蜂鸣器
    • 无源内部不带震荡源,用直流信号无法令其鸣叫。必须用变化的电源信号才能驱动它。
      • 优点:声音频率可控,可以做出“多来米发索拉西”的效果。
      • 缺点:控制稍微复杂。

实验一:让蜂鸣器响起来

搭建模块电路

  • Setup 1:用连接线将传感器安装到Hub模块的相应接口(6)上。
  • Setup 2:将Hub模块与CoreUSB模块无上下顺序叠加起来。

调试

  • Setup 1:用USB线将CoreUSB模块与PC/Mac相连,并打开Arduino IDE。
  • Setup 2:加载代码,将程序代买拷贝到IDE中。
#define buzzer_pin 6 //定义蜂鸣器驱动引脚
#define buzzer_fre 600 //定义蜂鸣器输出频率

void setup()
{
  pinMode(buzzer_pin,OUTPUT);
}
 
void loop()
{
    tone(buzzer_pin,buzzer_fre);    //驱动蜂鸣器
}

在工具的板卡中选择Microduino-Core USB,端口中选择好对应的端口号(COMXX)。点击向右的箭头(—>)下载程序,出现上传完成提示,程序就已经写进CoreUSB模块中了。 成功之后可以听到蜂鸣器发出响声了。

  • “tone(pin,fre)”函数
    • 指定引脚(pin)输出频率(fre)的信号。
    • 用户可以更改buzzer_fre的值观察蜂鸣器有啥变化。

实验二:蜂鸣器报警

  • 将程序代重新拷贝到IDE中。并下载到Core板卡。
#define buzzer_pin 6 //定义蜂鸣器驱动引脚

void setup()
{
  pinMode(buzzer_pin,OUTPUT);
}
 
void loop()
{
  for(int i=200;i<=800;i++)  //用循环的方式将频率从200HZ 增加到800HZ
  {
    tone(buzzer_pin,i);    //在四号端口输出频率
    delay(5);      //该频率维持5毫秒   
  }
  delay(2000);     //最高频率下维持2秒钟
  for(int i=800;i>=200;i--)
  {
    tone(buzzer_pin,i);
    delay(10); //该频率维持10毫秒   
  }
}

“for(int i=200;i<=800;i++)”说明:i的值开始为200,然后for函数执行一次i的值加1,直到i大于800时才退出for循环。用户可以更改相关参数观察蜂鸣器有啥变化。
实验采用用for循环的方式来更改频率,从而持续发出不同的声音,达到了报警的效果。

实验三:播放歌曲

  • 程序代码
#define buzzer_pin 6 //定义蜂鸣器驱动引脚

int song[] = {
  262, 262, 294, 262, 349, 330,
  262, 262, 294, 262, 392, 349,
  262, 262, 523, 440, 349, 330, 294,
  494, 494, 440, 349, 392, 349
};

int noteDurations[] = {
  4, 4, 2, 2, 2, 1,
  4, 4, 2, 2, 2, 1,
  4, 4, 2, 2, 2, 2, 2,
  4, 4, 2, 2, 2, 1
};

void setup() {
  pinMode(buzzer_pin, OUTPUT);
}

void loop() {
  song_play();
}

void song_play()
{
  for (int thisNote = 0; thisNote < 25; thisNote++)
  {
    int noteDuration = 1000 / noteDurations[thisNote];
    tone(buzzer_pin, song[thisNote], noteDuration);
    int pauseBetweenNotes = noteDuration * 1.20;
    delay(pauseBetweenNotes);
    noTone(buzzer_pin);
  }
}

“song_play()”为播放音乐函数,“song[]”里面存放音调(频率),“noteDurations[]”为节拍。
音乐由tone()函数控制,改动该函数即可改变音乐旋律,代码有两种形式分别为:tone(pin, frequency, duration)或tone(pin, frequency)
第一个函数中,pin代表连接扬声器的管脚,frequency代表发声频率,duration代表持续的时间,单位是毫秒。
如果用第二个函数,则还需另外的noTone()函数来控制音乐的停止noTone(pin)。

  • 将激活后的电池盒与BM模块相连,将所有模块堆叠在一起,顺序随意,搭建完成。