写在前面:

首先感谢arduino中文社区的tahoroom,开始做这个的时候在他的这个项目里我学了很多东西:

1、Arduino的Tone函数

关于arduino播放音乐的原理,可以看上面链接的tahoroom的文章,他讲得相当详细。

Arduino官方提供的Tone函数用于驱动蜂鸣器或扬声器发出我们需要的声音,通常的应用如下:

tone(pin,frequency,duration);//控制pin脚上的音频输出

//pin:arduino的控制脚位;

//frequency:输出的声音频率,换到音乐上可理解为旋律音高;

//duration:旋律持续时间,单位ms;

noTone(pin);//停止播放;

详细的tone函数定义也可以参考官方介绍:

2、pitches.h的添加

为了避免在主程序里添加太多的定义,我们把音高的定义独立出来放在一个头文件pitches.h里,然后在主程序里引用即可,下次需要同样的功能时,也可以直接拷贝调用该头文件。

代码如下:

//pitches.h 音高定义

//pitches.h 定义了不同音符对应的不同频率

#define NOTE_B0 31 //B0 ····7

#define NOTE_C1 33 //C1 ···1

#define NOTE_CS1 35 //C1#

#define NOTE_D1 37 //D1 ···2

#define NOTE_DS1 39 //D1#

#define NOTE_E1 41 //E1 ···3

#define NOTE_F1 44 //F1 ···4

#define NOTE_FS1 46 //F1#

#define NOTE_G1 49 //G1 ···5

#define NOTE_GS1 52 //G1#

#define NOTE_A1 55 //A1 ···6

#define NOTE_AS1 58 //A1#

#define NOTE_B1 62 //B1 ···7

#define NOTE_C2 65 //C2 ··1

#define NOTE_CS2 69 //C2#

#define NOTE_D2 73 //D2 ··2

#define NOTE_DS2 78 //D2#

#define NOTE_E2 82 //E2 ··3

#define NOTE_F2 87 //F2 ··4

#define NOTE_FS2 93 //F2#

#define NOTE_G2 98 //G2 ··5

#define NOTE_GS2 104 //G2#

#define NOTE_A2 110 //A2 ··6

#define NOTE_AS2 117 //A2#

#define NOTE_B2 123 //B2 ··7

#define NOTE_C3 131 //C3 ·1

#define NOTE_CS3 139 //C3#

#define NOTE_D3 147 //D3 ·2

#define NOTE_DS3 156 //D3#

#define NOTE_E3 165 //E3 ·3

#define NOTE_F3 175 //F3 ·4

#define NOTE_FS3 185 //F3#

#define NOTE_G3 196 //G3 ·5

#define NOTE_GS3 208 //G3#

#define NOTE_A3 220 //A3 ·6

#define NOTE_AS3 233 //A3#

#define NOTE_B3 247 //B3 ·7

#define NOTE_C4 262 //C4 1(中央C大调)

#define NOTE_CS4 277 //C4#

#define NOTE_D4 294 //D4 2

#define NOTE_DS4 311 //D4#

#define NOTE_E4 330 //E4 3

#define NOTE_F4 349 //F4 4

#define NOTE_FS4 370 //F4#

#define NOTE_G4 392 //G4 5

#define NOTE_GS4 415 //G4#

#define NOTE_A4 440 //A4 6

#define NOTE_AS4 466 //A4#

#define NOTE_B4 494 //B4 7

#define NOTE_C5 523 //C5 1·

#define NOTE_CS5 554 //C5#

#define NOTE_D5 587 //D5 2·

#define NOTE_DS5 622 //D5#

#define NOTE_E5 659 //E5 3·

#define NOTE_F5 698 //F5 4·

#define NOTE_FS5 740 //F5#

#define NOTE_G5 784 //G5 5·

#define NOTE_GS5 831 //G5#

#define NOTE_A5 880 //A5 6·

#define NOTE_AS5 932 //A5#

#define NOTE_B5 988 //B5 7·

#define NOTE_C6 1047 //C6 1··

#define NOTE_CS6 1109 //C6#

#define NOTE_D6 1175 //D6 2··

#define NOTE_DS6 1245 //D6#

#define NOTE_E6 1319 //E6 3··

#define NOTE_F6 1397 //F6 4··

#define NOTE_FS6 1480 //F6#

#define NOTE_G6 1568 //G6 5··

#define NOTE_GS6 1661 //G6#

#define NOTE_A6 1760 //A6 6··

#define NOTE_AS6 1865 //A6#

#define NOTE_B6 1976 //B6 7··

#define NOTE_C7 2093 //C7 1···

#define NOTE_CS7 2217 //C7#

#define NOTE_D7 2349 //D7 2···

#define NOTE_DS7 2489 //D7#

#define NOTE_E7 2637 //E7 3···

#define NOTE_F7 2794 //F7 4···

#define NOTE_FS7 2960 //F7#

#define NOTE_G7 3136 //G7 5···

#define NOTE_GS7 3322 //G7#

#define NOTE_A7 3520 //A7 6···

#define NOTE_AS7 3729 //A7#

#define NOTE_B7 3951 //B7 7···

#define NOTE_C8 4186 //C8 1····

#define NOTE_CS8 4435 //C8#

#define NOTE_D8 4699 //D8 2····

#define NOTE_DS8 4978 //D8#

上面大量的宏定义,是用宏的名字代替了频率名,对应到下图的键盘的按键上。同时,在上面宏的注释里,我加了相对应的简谱,方面不懂音乐的我们便于编程应用。

关于创建Arduino的头文件,在Arduino的IDE界面代码框的右上角的向下小三角处点击创建新标签,然后输入自己的头文件名称,记得加上“.h”扩展名。然后输入内容,再保存,便创建好一个头文件了。

3、arduino扬声器接线

注意:因为扬声器(或蜂鸣器)驱动电压要求比较小,远远小于5V,所以最好在扬声器上串联一个大于10uf的电解电容,电解电容负极连接喇叭的正极,电容正极连接另外一端。不接电容长时间使用,会烧毁扬声器。或者串联一个100Ω电阻也可以。

可以再串联一个电位器来调节电流大小,从而控制音量大小。

大概接线如下图所示:

4、音乐编程

在arduino程序里给音乐编程,重要的旋律函数和持续时间函数。

下面以《两只老虎》为例,编写一个播放《两只老虎》旋律的程序。

首先是《两只老虎》的简谱:

代码如下:

#include “pitches.h” //含有所有旋律音高宏定义的头文件

void setup(){

}

void loop(){

play();//播放音乐的命令

delay(300);

}

//旋律函数

int melody[]={

NOTE_C4, //1

NOTE_D4, //2

NOTE_E4, //3

NOTE_C4, //1

NOTE_C4, //1

NOTE_D4, //2

NOTE_E4, //3

NOTE_C4, //1

NOTE_E4, //3

NOTE_F4, //4

NOTE_G4, //5

NOTE_E4, //3

NOTE_F4, //4

NOTE_G4, //5

NOTE_G4, //5

NOTE_A4, //6

NOTE_G4, //5

NOTE_F4, //4

NOTE_E4, //3

NOTE_C4, //1

NOTE_G4, //5

NOTE_A4, //6

NOTE_G4, //5

NOTE_F4, //4

NOTE_E4, //3

NOTE_C4, //1

NOTE_D4, //2

NOTE_G3, //.5

NOTE_C4, //1

0,

NOTE_D4, //2

NOTE_G3, //.5

NOTE_C4, //1

0,

};

//持续时间函数

int noteDurations[]={

8,8,8,8,

8,8,8,8,

8,8,4,

8,8,4,

8,8,8,8,4,4,

8,8,8,8,4,4,

4,4,4,4,

4,4,4,4,

};

//播放命令

void play()

{

for(int thisNote = 0;thisNote<29;thisNote++){

//计算旋律持续时间

//1秒(1000ms)除以音符类型

//比如:四分音符:1000/noteDurations[thisNote],

//八分音符:1000/noteDurations[thisNote].

int noteDuration = 1000/noteDurations[thisNote];

tone(8,melody[thisNote], noteDuration);//播放音乐

//为了区别不同旋律,设置一个最小的间隔时间

//一般设置为旋律持续时间的130%比较合适

int pauseBetweenNotes = noteDuration * 1.30;

delay(pauseBetweenNotes);

//停止当前旋律播放

noTone(8);

}

}

//end

效果如下:https://www.zhihu.com/video/1200743973633089536

arduino 嗡鸣器 音乐_arduino笔记一:用arduino实现蜂鸣器播放音乐相关推荐

  1. arduino 嗡鸣器 音乐_[求助]怎样实现红外遥控蜂鸣器播放音乐,求大神指正

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #define NOTE_0 -1#define NOTE_A1 441 #define NOTE_A2 495 #define NOT ...

  2. arduino 嗡鸣器 音乐_Arduino 蜂鸣器音乐代码转化程序开发

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 最近在做利用蜂鸣器播放音乐的实验,其中环节有以下:1.查找需要播放的音乐简谱.2.对照简谱以及Arduino本身自带库里面的音乐实例toneMelody翻 ...

  3. arduino 嗡鸣器 音乐_【arduino】继续蜂鸣器音乐播放,arduinoIDE里调用音乐播放库...

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 昨天简单的介绍了一下蜂鸣器硬件和米思齐上如何演奏音乐(一种非常简单的用arduino控 ...

  4. Arduino 蜂鸣器播放音乐LED灯闪烁

    一.实验所需组件: led灯 三脚蜂鸣器 面包板 Arduino开发板 杜邦线 二.实验原理 蜂鸣器实现音乐播放: 控制好频率和节拍,就能演奏出好听的音乐.因此,在实验之前要先弄清楚各音调的频率.可参 ...

  5. 一种非常简单的用arduino控制蜂鸣器播放音乐的方案

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 今天来聊聊用arduino控制蜂鸣器播放音乐的方案,当然必须还是老风格,虽然可能不是最 ...

  6. Arduino红外遥控无源蜂鸣器播放音乐

    Arduino红外遥控无源蜂鸣器播放音乐/模拟电子琴 简介 关于频谱 实验材料 接线 实验代码 模拟电子琴 接线 代码 总结 原文链接:https://www.yourcee.com/newsinfo ...

  7. 【Arduino】一个按键开关控制RGB音乐彩灯(蜂鸣器播放音乐+按键控制播放暂停+RGB彩灯随音乐节奏跳动)

    一.项目说明 这里我们需要使用到RGB LED.蜂鸣器.按键开关这个元件.为什么要叫RGB呢?是因为这个LED是由红(Red).绿(Green)和蓝(Blue)三种颜色组成.我们可以通过调整三个LED ...

  8. STM32F40实现 按键密码锁、按键控制LED 、串口选择菜单 、串口控制LED开关 、串口控制蜂鸣器开关及响度 、串口控制蜂鸣器播放音乐 、按键控制LED的亮度

    本人第一次发文,很多都不懂,尤其害怕版权问题,如果有人质疑我有盗权行为,请联系我,因为项目也遇到很多问题,然后就解决嘛,可印象中只有播放音乐代码有借鉴,所以如果有质疑盗了权的,请务必联系我.板子是使用 ...

  9. 蜂鸣器播放音乐 fpga实现

    目录 原理 实现 原理 蜂鸣器分为有源蜂鸣器和无源蜂鸣器,即以有无震荡源分类, 有震荡源直接通直流电就可发生,无震荡源则需要通震荡波才能发声. 这里介绍无源蜂鸣器播放音乐的方法. 思路: 利用计数器产 ...

  10. 【FPGA】五、蜂鸣器播放音乐

    文章目录 前言 一.蜂鸣器简介 二.音频音符简介 三.任务要求 四.程序设计 1.设计思路 2.程序代码 总结 前言 蜂鸣器(Buzzer)是现代常用的一种电子发声器,主要用于产生声音信号.它是一种一 ...

最新文章

  1. 多窗体应用中的注意点
  2. Github-Hexo-theme-NexT
  3. 汇编语言Makefile
  4. c# vscode 配置_[VSCode插件推荐] Code Runner: 代码一键运行,支持超过40种语言
  5. 还不知道 AWS 是什么?这 11 个重点带你认识 AWS !
  6. 没有bug队——加贝——Python 47,48
  7. 求一个二维数组的最大子矩阵的和
  8. 通过onkeydown事件来控制只允许数字
  9. Android 性能优化——之控件的优化
  10. 传说中四个月的java速成“大法”,我见识到了,不过就是没啥用
  11. 输入一个仅含十二进制数的字符串输出二进制
  12. Python最吃香的5个就业方向,薪资收入也非常可观!
  13. 酷我音乐在计算机其他的图标怎么去掉,酷我音乐这个快捷方式怎么删除?
  14. 51单片机学习笔记——串口通信
  15. Windows MinWG 编译 thrift
  16. 护眼色RGB的数值及在福昕阅读器上的设置方法
  17. SVM简单非线性分类,画出分类面与支持向量(MATLAB)
  18. java word apache poi 操作word模板。
  19. 数据增加的两种方法(二)
  20. 安卓网易云信实现仿QQ双方聊天界面功能(附UI界面

热门文章

  1. B站被骂上了热搜。。
  2. 割裂的前端工程师--- 2017年前端生态窥探 1
  3. 绕过AppLocker系列之MSIEXEC的利用
  4. Vivo应用商店上架最全最细流程
  5. UVM中starting_phase
  6. 密码学系列之四:一文搞懂序列密码
  7. 计算机室英语单词怎么读,“计算机”英语单词怎么读?
  8. 五项python小游戏代码测试
  9. Opencv访问图像像素的三种方法
  10. Nginx负载均衡是酱紫做的