arduino/Mixly技巧:使用喇叭当作蜂鸣器

2023-10-14 03:10

本文主要是介绍arduino/Mixly技巧:使用喇叭当作蜂鸣器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、器材

喇叭

喇叭的作用是用来代替无源蜂鸣器播放声音

滑动变阻器

滑动变阻器的作用是用来调节音量大小

 

二、接线

滑动变阻器的正极接arduino的A0,GND接arduino的GND,out接喇叭的正极,喇叭的负极接地

三、程序

#define NOTE_0  -1#define NOTE_A1 441
#define NOTE_A2 495
#define NOTE_A3 556
#define NOTE_A4 589
#define NOTE_A5 661
#define NOTE_A6 742
#define NOTE_A7 833#define NOTE_AL1 221
#define NOTE_AL2 248
#define NOTE_AL3 278
#define NOTE_AL4 294
#define NOTE_AL5 330
#define NOTE_AL6 371
#define NOTE_AL7 416#define NOTE_AH1 882
#define NOTE_AH2 990
#define NOTE_AH3 1112
#define NOTE_AH4 1178
#define NOTE_AH5 1322
#define NOTE_AH6 1484
#define NOTE_AH7 1665#define NOTE_B1 495
#define NOTE_B2 556
#define NOTE_B3 589
#define NOTE_B4 661
#define NOTE_B5 742
#define NOTE_B6 833
#define NOTE_B7 935#define NOTE_BL1 248
#define NOTE_BL2 278
#define NOTE_BL3 294
#define NOTE_BL4 330
#define NOTE_BL5 371
#define NOTE_BL6 416
#define NOTE_BL7 467#define NOTE_BH1 990
#define NOTE_BH2 1112
#define NOTE_BH3 1178
#define NOTE_BH4 1322
#define NOTE_BH5 1484
#define NOTE_BH6 1665
#define NOTE_BH7 1869#define NOTE_C1 262
#define NOTE_C2 294
#define NOTE_C3 330
#define NOTE_C4 350
#define NOTE_C5 393
#define NOTE_C6 441
#define NOTE_C7 495#define NOTE_CL1 131
#define NOTE_CL2 147
#define NOTE_CL3 165
#define NOTE_CL4 175
#define NOTE_CL5 196
#define NOTE_CL6 221
#define NOTE_CL7 248#define NOTE_CH1 525
#define NOTE_CH2 589
#define NOTE_CH3 661
#define NOTE_CH4 700
#define NOTE_CH5 786
#define NOTE_CH6 882
#define NOTE_CH7 990#define NOTE_D1 294
#define NOTE_D2 330
#define NOTE_D3 350
#define NOTE_D4 393
#define NOTE_D5 441
#define NOTE_D6 495
#define NOTE_D7 556#define NOTE_DL1 147
#define NOTE_DL2 165
#define NOTE_DL3 175
#define NOTE_DL4 196
#define NOTE_DL5 221
#define NOTE_DL6 248
#define NOTE_DL7 278#define NOTE_DH1 589
#define NOTE_DH2 661
#define NOTE_DH3 700
#define NOTE_DH4 786
#define NOTE_DH5 882
#define NOTE_DH6 990
#define NOTE_DH7 1112#define NOTE_E1 330
#define NOTE_E2 350
#define NOTE_E3 393
#define NOTE_E4 441
#define NOTE_E5 495
#define NOTE_E6 556
#define NOTE_E7 624#define NOTE_EL1 165
#define NOTE_EL2 175
#define NOTE_EL3 196
#define NOTE_EL4 221
#define NOTE_EL5 248
#define NOTE_EL6 278
#define NOTE_EL7 312#define NOTE_EH1 661
#define NOTE_EH2 700
#define NOTE_EH3 786
#define NOTE_EH4 882
#define NOTE_EH5 990
#define NOTE_EH6 1112
#define NOTE_EH7 1248#define NOTE_F1 350
#define NOTE_F2 393
#define NOTE_F3 441
#define NOTE_F4 495
#define NOTE_F5 556
#define NOTE_F6 624
#define NOTE_F7 661#define NOTE_FL1 175
#define NOTE_FL2 196
#define NOTE_FL3 221
#define NOTE_FL4 234
#define NOTE_FL5 262
#define NOTE_FL6 294
#define NOTE_FL7 330#define NOTE_FH1 700
#define NOTE_FH2 786
#define NOTE_FH3 882
#define NOTE_FH4 935
#define NOTE_FH5 1049
#define NOTE_FH6 1178
#define NOTE_FH7 1322#define NOTE_G1 393
#define NOTE_G2 441
#define NOTE_G3 495
#define NOTE_G4 556
#define NOTE_G5 624
#define NOTE_G6 661
#define NOTE_G7 742#define NOTE_GL1 196
#define NOTE_GL2 221
#define NOTE_GL3 234
#define NOTE_GL4 262
#define NOTE_GL5 294
#define NOTE_GL6 330
#define NOTE_GL7 371#define NOTE_GH1 786
#define NOTE_GH2 882
#define NOTE_GH3 990
#define NOTE_GH4 1049
#define NOTE_GH5 1178
#define NOTE_GH6 1322
#define NOTE_GH7 1484
//以上部分是定义是把每个音符和频率值对应起来,其实不用打这么多,但是都打上了,后面可以随意编写各种歌,我这里用NOTE_D+数字表示音符,NOTE_DH+数字表示上面有点的那种音符,NOTE_DL+数字表示下面有点的那种音符。这样后面写起来比较好识别。
#define WHOLE 1
#define HALF 0.5
#define QUARTER 0.25
#define EIGHTH 0.25
#define SIXTEENTH 0.625
//这部分是用英文对应了拍子,这样后面也比较好看
#define DURATION 400//每个音符持续的时间,400是调整时间的越大,曲子速度越慢,越小曲子速度越快,自己掌握吧
int t1[] =
{NOTE_0, NOTE_A5, NOTE_A5, NOTE_A3,NOTE_A2, NOTE_A3, NOTE_AL6, NOTE_A2, NOTE_A3, NOTE_A5, NOTE_A3, NOTE_A2, NOTE_0, NOTE_A5, NOTE_A5, NOTE_A3,NOTE_A2, NOTE_A3, NOTE_A5, NOTE_A2, NOTE_A3, NOTE_A5, NOTE_A2, NOTE_A1, NOTE_0, NOTE_A1, NOTE_A2, NOTE_A3,NOTE_A5, NOTE_A6, NOTE_A5, NOTE_A3, NOTE_A5, NOTE_A3, NOTE_A3, NOTE_A2, NOTE_A2, NOTE_0, NOTE_A1, NOTE_A2, NOTE_A1,NOTE_A2, NOTE_A1, NOTE_A2, NOTE_A2, NOTE_A3, NOTE_A5, NOTE_A3, NOTE_A3, NOTE_0, NOTE_A5, NOTE_A5, NOTE_A3,NOTE_A2, NOTE_A3, NOTE_AL6, NOTE_A2, NOTE_A3, NOTE_A5, NOTE_A3, NOTE_A2, NOTE_0, NOTE_A5, NOTE_A5, NOTE_A3,NOTE_A2, NOTE_A3, NOTE_AL5, NOTE_A2, NOTE_A3, NOTE_A5, NOTE_A2, NOTE_A1, NOTE_0, NOTE_A1, NOTE_A2, NOTE_A3,NOTE_A5, NOTE_A6, NOTE_A5, NOTE_A3, NOTE_A5, NOTE_A3, NOTE_A3, NOTE_A2, NOTE_A2, NOTE_AL5, NOTE_A3, NOTE_A2, NOTE_A2,NOTE_A2, NOTE_A1, NOTE_A1
};
//这部分就是整首曲子的音符部分,用了一个序列定义为t1,整数
float d1[] =
{0.25, 0.25, 0.25, 0.25,0.5, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 1, 0.25, 0.25, 0.25, 0.25,0.25, 0.25, 0.5, 0.25, 0.25, 0.25, 0.25, 1, 0.25, 0.25, 0.25, 0.25,0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 1, 0.25, 0.25, 0.25, 0.25,0.5, 0.25, 0.25, 0.25, 0.5, 0.25, 0.5, 0.5, 0.25, 0.25, 0.25, 0.25,0.25, 0.25, 0.5, 0.25, 0.25, 0.25, 0.25, 1, 0.25, 0.25, 0.25, 0.25,0.25, 0.25, 0.5, 0.25, 0.25, 0.25, 0.25, 1, 0.25, 0.25, 0.25, 0.25,0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.5, 0.5, 0.5, 0.25, 0.25,0.5, 0.5, 1
};
//这部分是整首曲子的接拍部分,也定义个序列d1,浮点(数组的个数和前面音符的个数是一样的,一一对应么)(+代表连音)
int length;//这里定义一个变量,后面用来表示共有多少个音符
int tonePin = A1; //蜂鸣器的pinvoid setup()
{pinMode(tonePin, OUTPUT); //设置蜂鸣器的pin为输出模式length = sizeof(t1) / sizeof(t1[0]); //这里用了一个sizeof函数, 可以查出tone序列里有多少个音符Serial.begin(9600);
}void loop()
{for (int x = 0; x < length; x++) //循环音符的次数{tone(tonePin, t1[x]); //此函数依次播放t1序列里的数组,即每个 音符delay(800 * d1[x]); //每个音符持续的时间,即节拍d1,是调整时间的越大,曲子速度越慢,越小曲子速度越快,自己掌握吧noTone(tonePin);//停止当前音符,进入下一音符}delay(2000);//等待5秒后,循环重新开始}

四、效果 

喇叭播放青花瓷,选择滑动变阻器可以调节音量大小

这篇关于arduino/Mixly技巧:使用喇叭当作蜂鸣器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/207722

相关文章

Apache伪静态(Rewrite).htaccess文件详解与配置技巧

《Apache伪静态(Rewrite).htaccess文件详解与配置技巧》Apache伪静态(Rewrite).htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令,主要的... 一、.htAccess的基本作用.htaccess是一个纯文本文件,它里面存放着Apache服务器

Python中conda虚拟环境创建及使用小结

《Python中conda虚拟环境创建及使用小结》本文主要介绍了Python中conda虚拟环境创建及使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录0.前言1.Miniconda安装2.conda本地基本操作3.创建conda虚拟环境4.激活c

Spring中@Lazy注解的使用技巧与实例解析

《Spring中@Lazy注解的使用技巧与实例解析》@Lazy注解在Spring框架中用于延迟Bean的初始化,优化应用启动性能,它不仅适用于@Bean和@Component,还可以用于注入点,通过将... 目录一、@Lazy注解的作用(一)延迟Bean的初始化(二)与@Autowired结合使用二、实例解

SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)

《SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)》本文介绍了如何在SpringBoot项目中使用Jasypt对application.yml文件中的敏感信息(如数... 目录SpringBoot使用Jasypt对YML文件配置内容进行加密(例:数据库密码加密)前言一、J

Spring Boot 中正确地在异步线程中使用 HttpServletRequest的方法

《SpringBoot中正确地在异步线程中使用HttpServletRequest的方法》文章讨论了在SpringBoot中如何在异步线程中正确使用HttpServletRequest的问题,... 目录前言一、问题的来源:为什么异步线程中无法访问 HttpServletRequest?1. 请求上下文与线

在 Spring Boot 中使用异步线程时的 HttpServletRequest 复用问题记录

《在SpringBoot中使用异步线程时的HttpServletRequest复用问题记录》文章讨论了在SpringBoot中使用异步线程时,由于HttpServletRequest复用导致... 目录一、问题描述:异步线程操作导致请求复用时 Cookie 解析失败1. 场景背景2. 问题根源二、问题详细分

从零教你安装pytorch并在pycharm中使用

《从零教你安装pytorch并在pycharm中使用》本文详细介绍了如何使用Anaconda包管理工具创建虚拟环境,并安装CUDA加速平台和PyTorch库,同时在PyCharm中配置和使用PyTor... 目录背景介绍安装Anaconda安装CUDA安装pytorch报错解决——fbgemm.dll连接p

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx

使用Python创建一个能够筛选文件的PDF合并工具

《使用Python创建一个能够筛选文件的PDF合并工具》这篇文章主要为大家详细介绍了如何使用Python创建一个能够筛选文件的PDF合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4

一文详解如何在Python中使用Requests库

《一文详解如何在Python中使用Requests库》:本文主要介绍如何在Python中使用Requests库的相关资料,Requests库是Python中常用的第三方库,用于简化HTTP请求的发... 目录前言1. 安装Requests库2. 发起GET请求3. 发送带有查询参数的GET请求4. 发起PO