资料介绍
摘要:Arduino 是一块基于开放原始代码的Simple I/O平台,具有使用简单,功能多样,价格低廉等优点,广泛应用于电子系统设计和互动产品开发方面。系统以ArduinoUNO开发平台为控制核心,充分利用其内部Tone 库,以数组形式组织乐曲的音高和节拍数据,通过串口和外围无源蜂鸣器进行通信,实现了电子音乐播放,随音乐节拍亮灭的LED为设计添加了温馨感。本系统成本低廉,可靠性高,可实现乐曲DIY,有良好的扩展性。
引言
Arduino是一个基于开放原始代码的Simple I/O平台,由硬件(MCU及外围电路)和软件(编程接口和语言)两部分组成。它基于单片机系统开发,具有使用简单,功能多样,价格低廉等优点,广泛应用于电子系统设计和互动产品开发方面。目前市场所见电子音乐发声器调节不便,价格较高,不能很好地实现和使用者的交互。本电子音乐发声器的设计以ArduinoUNO板为控制核心,在相关乐理基础知识上,充分利用Arduino编辑器自带Tone扩展库,以数组形式输出各音符的指定频率和节拍,送到无源蜂鸣器和彩色LED,实现了音乐播放和随音乐节奏亮灭的LED效果。在操作方面,可以通过简单修改数组数据(音高和节拍)实现电子音乐的DIY,在欣赏美妙音乐的同时,充分发挥使用者的创造性。
1 系统硬件设计
本发声器以ArduinoUNO为控制核心,外部电路包括控制电路、蜂鸣器电路、LED显示节奏电路,系统硬件电路图如图1所示。开关S1对整个电路起控制作用,当检测到开关按下,即D3端口为高电平时,电路开始工作。预先组织好的音符数据(音高和节拍)通过数字端口D8发送到5V无源蜂鸣器J1,无源蜂鸣器接收到特定频率的(即特定的音高)方波去驱动它,可以发出“Do Re Mi Fa Sol La Si”的音乐效果。各数据加上延时(即节拍数据)即可实现乐曲的播放。无源蜂鸣器的优点是声音频率可控,可以和LED复用一个控制口。所以,D8端口的数据同时加到LED1、LED2、LED3上时,其节奏性的亮灭实现了节拍的显示。
2 软件设计
2.1 乐曲播放原理
2.1.1 单音符的演奏原理
一首乐曲由若干音符组成。从物理的角度来说,每一个音符唯一对应一个发声频率。Arduino只要把这个频率数据发送给蜂鸣器或喇叭,就会发出对应的音符。Arduino IDE自带的头文件“pitches.h”中以宏定义的形式给出了各个音符和频率的对应关系表。例如“#define NOTE_C4 262”语句给出了钢琴标准键盘小字一组C4(唱名为Do)按键对应的频率是262Hz。因此,只要能够识别给定的乐谱,就能得到一组对应该乐曲的频率数据,即制作出其数组形式的韵律函数。
2.1.2 节拍
除了音高,构成旋律的另一个重要因素是节拍,即音符演奏的持续时间。它决定了音乐进行的快慢程度。本发声器的设计中,通过读取旋律的节拍速度,来确定基本的延时单位。如二分音符为一拍,每拍延时1/2秒,则四分音符延时1/4秒,八分音符延时为1/8秒,均为基本延时的偶数倍。最终,采用了noteDurations[thisNote]数组来存放每个音符的节拍数据。在应用过程中,我们也可以通过调节基本延时来调节乐曲速度。频率数据按照节拍数据的延时来驱动蜂鸣器,就实现了一首乐曲的播放。
2.2 乐曲播放的软件实现
ArduinoIDE包含的Tone库可以很方便地帮助用户制作音乐。本设计主要采用了Tone(pin, frequency, duration)函数来产生电子音乐。此函数中,pin表示频率数据的数字输出接口,int型;frequency是音符频率,int型;duration是节拍数据,单位是毫秒,unsigned long型。只要把上述频率和节拍数据连续赋值给Tone函数,就可以实现乐曲的播放,系统软件实现的程序流程图见图2。
Arduino语言是以setup( )开头,loop( )作为主体的一个程序构架。本发声器的软件实现过程中, loop( )函数内部包含了控制按键判断函数,乐曲播放函数和延时函数。其中,乐曲播放函数play( )是发声器软件实现的核心语句,函数内所有语句周而复始地循环执行。下面以《生日快乐歌》(简谱见图3)的第一小节为例,给出了play( )函数的实现过程。
引言
Arduino是一个基于开放原始代码的Simple I/O平台,由硬件(MCU及外围电路)和软件(编程接口和语言)两部分组成。它基于单片机系统开发,具有使用简单,功能多样,价格低廉等优点,广泛应用于电子系统设计和互动产品开发方面。目前市场所见电子音乐发声器调节不便,价格较高,不能很好地实现和使用者的交互。本电子音乐发声器的设计以ArduinoUNO板为控制核心,在相关乐理基础知识上,充分利用Arduino编辑器自带Tone扩展库,以数组形式输出各音符的指定频率和节拍,送到无源蜂鸣器和彩色LED,实现了音乐播放和随音乐节奏亮灭的LED效果。在操作方面,可以通过简单修改数组数据(音高和节拍)实现电子音乐的DIY,在欣赏美妙音乐的同时,充分发挥使用者的创造性。
1 系统硬件设计
本发声器以ArduinoUNO为控制核心,外部电路包括控制电路、蜂鸣器电路、LED显示节奏电路,系统硬件电路图如图1所示。开关S1对整个电路起控制作用,当检测到开关按下,即D3端口为高电平时,电路开始工作。预先组织好的音符数据(音高和节拍)通过数字端口D8发送到5V无源蜂鸣器J1,无源蜂鸣器接收到特定频率的(即特定的音高)方波去驱动它,可以发出“Do Re Mi Fa Sol La Si”的音乐效果。各数据加上延时(即节拍数据)即可实现乐曲的播放。无源蜂鸣器的优点是声音频率可控,可以和LED复用一个控制口。所以,D8端口的数据同时加到LED1、LED2、LED3上时,其节奏性的亮灭实现了节拍的显示。
2 软件设计
2.1 乐曲播放原理
2.1.1 单音符的演奏原理
一首乐曲由若干音符组成。从物理的角度来说,每一个音符唯一对应一个发声频率。Arduino只要把这个频率数据发送给蜂鸣器或喇叭,就会发出对应的音符。Arduino IDE自带的头文件“pitches.h”中以宏定义的形式给出了各个音符和频率的对应关系表。例如“#define NOTE_C4 262”语句给出了钢琴标准键盘小字一组C4(唱名为Do)按键对应的频率是262Hz。因此,只要能够识别给定的乐谱,就能得到一组对应该乐曲的频率数据,即制作出其数组形式的韵律函数。
2.1.2 节拍
除了音高,构成旋律的另一个重要因素是节拍,即音符演奏的持续时间。它决定了音乐进行的快慢程度。本发声器的设计中,通过读取旋律的节拍速度,来确定基本的延时单位。如二分音符为一拍,每拍延时1/2秒,则四分音符延时1/4秒,八分音符延时为1/8秒,均为基本延时的偶数倍。最终,采用了noteDurations[thisNote]数组来存放每个音符的节拍数据。在应用过程中,我们也可以通过调节基本延时来调节乐曲速度。频率数据按照节拍数据的延时来驱动蜂鸣器,就实现了一首乐曲的播放。
2.2 乐曲播放的软件实现
ArduinoIDE包含的Tone库可以很方便地帮助用户制作音乐。本设计主要采用了Tone(pin, frequency, duration)函数来产生电子音乐。此函数中,pin表示频率数据的数字输出接口,int型;frequency是音符频率,int型;duration是节拍数据,单位是毫秒,unsigned long型。只要把上述频率和节拍数据连续赋值给Tone函数,就可以实现乐曲的播放,系统软件实现的程序流程图见图2。
Arduino语言是以setup( )开头,loop( )作为主体的一个程序构架。本发声器的软件实现过程中, loop( )函数内部包含了控制按键判断函数,乐曲播放函数和延时函数。其中,乐曲播放函数play( )是发声器软件实现的核心语句,函数内所有语句周而复始地循环执行。下面以《生日快乐歌》(简谱见图3)的第一小节为例,给出了play( )函数的实现过程。
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- AY-3-8910发声器开源(Arduino Nano控制)
- 基于单片机电子音乐Proteus仿真程序 0次下载
- 基于AT89C51单片机按键选播电子音乐Proteus仿真及程序 4次下载
- 51单片机程序设计——电子音乐盒
- 使用单片机设计电子音乐门铃的程序免费下载 28次下载
- 使用单片机实现按键选播电子音乐的程序和仿真资料免费下载 26次下载
- 使用单片机按键选播电子音乐的proteus仿真电路图 21次下载
- 单片机播放电子音乐的程序资料免费下载 5次下载
- 基于8051的Proteus仿真-按键选播电子音乐 17次下载
- 无源蜂鸣器设计电子音乐 0次下载
- 多功能电子音乐霓虹灯显示装置
- 按键选播电子音乐(基于8051+Proteus仿真)
- 用单片机设计电子音乐门铃
- 电子音乐门铃对讲双用计电路及制作
- 电子音乐盒设计
- 蜂鸣器的发声原理 蜂鸣器电路图分享 1.1w次阅读
- 基于Arduino的音乐创作系统设计 958次阅读
- 电力变压器保护设计方案 573次阅读
- DIY电子调频闪烁灯电路 1323次阅读
- 节拍器声音发生器的电子电路图 2248次阅读
- 带有触摸开关和定时器的音乐铃电路图 2414次阅读
- 如何利用Arduino UNO和SD卡制作音乐播放器 7315次阅读
- 如何使用通用单片机制作MIDI键盘 6843次阅读
- 蜂鸣器的发声原理及选型时的参数注意 2.1w次阅读
- 工程师制作电子音乐木管乐器 3100次阅读
- 电子电路设计方案的步骤和注意事项 1.4w次阅读
- 使用51单片机设计倒计时发声器的资料概述 5228次阅读
- 无线语音门铃怎么样?无线语音门铃工作原理浅析 3355次阅读
- 三路抢答器电路设计方案汇总(三款模拟电路设计原理图详解) 8.1w次阅读
- 带柔性开关的报警发声器 2084次阅读
下载排行
本周
- 1TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 2开关电源基础知识
- 5.73 MB | 6次下载 | 免费
- 3100W短波放大电路图
- 0.05 MB | 4次下载 | 3 积分
- 4嵌入式linux-聊天程序设计
- 0.60 MB | 3次下载 | 免费
- 5基于FPGA的光纤通信系统的设计与实现
- 0.61 MB | 2次下载 | 免费
- 6基于FPGA的C8051F单片机开发板设计
- 0.70 MB | 2次下载 | 免费
- 751单片机窗帘控制器仿真程序
- 1.93 MB | 2次下载 | 免费
- 8基于51单片机的RGB调色灯程序仿真
- 0.86 MB | 2次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33564次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21548次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6653次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537796次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191185次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183278次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多