找回密码
 立即注册

QQ登录

只需一步,快速开始

基础模块资料库

基于Arduino使用低电平触发有源蜂鸣器模块



蜂鸣器模块

我们可以使用Arduino进行很多互动作品,其中最常用的是声光显示器。之前的所有实验都与LED有关。但是,这个实验中的电路可以产生声音。通常,实验是通过蜂鸣器或扬声器完成的,而蜂鸣器更简单且更易于使用。

有源蜂鸣器与无源蜂鸣器

有源蜂鸣器与无源蜂鸣器有什么区别。这里的“源”不是指电源。而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用 2K~5K 的方波去驱动它。有源蜂鸣器往往比无源的贵,就是因为里面多个震荡电路。

QQ截图20200418202912.jpg
(低电平触发有源蜂鸣器模块)

我们在这里介绍的蜂鸣器是一种被动式蜂鸣器。它不能由其自身驱动,而是由外部脉冲频率驱动。不同的频率产生不同的声音 我们可以使用Arduino来编码歌曲的旋律,这实际上非常有趣和简单。

产品参数

  • 小板PCB尺寸:32mm*14mm
  • 采用S8550三级管驱动
  • 工作电压:3.3V-5V
  • 设有固定螺栓孔,方面安装
  • 当I/O口输入低电平时,蜂鸣器发声

2.jpg
(低电平触发有源蜂鸣器模块   正面)

接线方式

蜂鸣器     <------>  Arduino Nano
   GND     <------>     GND
      I/O    <------>  9
       VCC  <------> 3.3V

程序测试——蜂鸣器发出声音

蜂鸣器处于低电平时,会发出声音,而处于高电平,停止声音发出,即不发出声音。编写蜂鸣器声音响一秒再停一秒,以此来检测蜂鸣器是否能正常发出声音

Mixly图形化编程程序

99.png
(蜂鸣器发出声音程序)


程序实现代码

蜂鸣器发出声音

  1. void setup(){
  2.   pinMode(9, OUTPUT);
  3. }
  4. void loop(){
  5.   digitalWrite(9,LOW);
  6.   delay(1000);
  7.   digitalWrite(9,HIGH);
  8.   delay(1000);
  9. }
复制代码
蜂鸣器制作音乐小案例——两只老虎

七声音阶音乐盒应用编写了音乐中的七个基准音(do、re、mi、fa、sol、la、si),这七个基准音对应的频率数组为:1046.5,1174.7,1318.5,1396.9,1568,1760,1975.5。
使用步长模块与数组模块,让蜂鸣器首先能发出七个基准音,七个基准音声音发出之后,停顿5秒,再次循环播放七个基准音。

Mixly图形化编程程序

111.png
(蜂鸣器发出七个基准音程序)

程序实现代码

  1. float tonelist[]={1046.5,1174.7,1318.5,1396.9,1568,1760,1975.5};
  2. void setup(){
  3.   pinMode(9, OUTPUT);
  4. }
  5. void loop(){
  6.   for (int i = 1; i <= 7; i = i + (1)) {
  7.     tone(9,tonelist[(int)(i - 1)]);
  8.     delay(1000);
  9.   }
  10.   noTone(9);
  11.   digitalWrite(9,HIGH);
  12.   delay(5000);
  13. }
复制代码
222.jpg
(两只老虎简谱)

根据简谱,也可对两只老虎的音符、节拍、高音与低音音调设置数值,然后再编程程序。

333.png
(两只老虎总程序)

程序实现代码

  1. volatile float speed;
  2. volatile long updown;
  3. float tonelist[]={1046.5,1174.7,1318.5,1396.9,1568,1760,1975.5};
  4. long musiclist[]={1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,4,3,1,5,6,5,4,3,1,2,5,1,2,5,1};
  5. long highlist[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,-1,0};
  6. long updownlist[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  7. float rhythmlist[]={1,1,1,1,1,1,1,1,1,1,2,1,1,2,0.5,0.5,0.5,0.5,1,1,0.5,0.5,0.5,0.5,1,1,1,1,2,1,1,2};
  8. void setup(){
  9.   speed = 120.0;
  10.   updown = 0;
  11.   pinMode(9, OUTPUT);
  12. }
  13. void loop(){
  14.   for (int i = 1; i <= 32; i = i + (1)) {
  15.     tone(9,(tonelist[(int)(musiclist[(int)(i - 1)] - 1)] * pow(2, highlist[(int)(i - 1)])) * pow(2, (updownlist[(int)(i - 1)] + updown) / 12.0));
  16.     delay(((1000 * (60 / speed)) * rhythmlist[(int)(i - 1)]));
  17.     noTone(9);
  18.     digitalWrite(9,HIGH);
  19.     delay(10);
  20.   }
  21. }
复制代码
分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册