Arduino控制蜂鸣器播放音乐设计说明书

合集下载

Arduino入门笔记(4):用蜂鸣器演奏音乐并配有LED闪烁

Arduino入门笔记(4):用蜂鸣器演奏音乐并配有LED闪烁

Arduino⼊门笔记(4):⽤蜂鸣器演奏⾳乐并配有LED闪烁转载请注明:@⼩五义欢迎加⼊讨论群 64770604⼀、本次实验所需器材1、Arduino板 https:///item.htm?spm=a1z10.5-c-s.w4002-158********.16.AtgoEm&id=5450933403952、⽆源蜂鸣器:⼀种⼀体化结构的电⼦讯响器,分为有源蜂鸣器与⽆源蜂鸣器。

这⾥的“源”不是指电源,⽽是指震荡源,有源蜂鸣器内部带震荡源,所以只要⼀通电就会响,⽽⽆源内部不带震荡源,所以如果仅⽤直流信号⽆法令其鸣叫,必须⽤2K-5K的⽅波去驱动它。

从外观上看,两种蜂鸣器区别不⼤,但将两种蜂鸣器的引脚都朝上放置时,可以看出有绿⾊电路板的⼀种是⽆源蜂鸣器,没有电路板⽽⽤⿊胶封闭的⼀种是有源蜂鸣器。

如图:3、LED:⼀个4、杜邦线:若⼲5、⾯包板:⼀个⼆、⽆源蜂鸣器发声实验通过上⽹查询参数,得到其⼯作电压为5V,和arduino控制板数字端⼝输出电压⼀致,所以不需要接电阻,于是其与arduino的布线图和原理图如下:把下⾯的代码上传到arduino控制板上:int tonepin=6;//设置控制蜂鸣器的数字6脚void setup(){pinMode(tonepin,OUTPUT);//设置数字IO脚模式,OUTPUT为输出}void loop(){unsigned char i,j;while(1){for(i=0;i<80;i++)//输出⼀个频率的声⾳{digitalWrite(tonepin,HIGH);//发声⾳delay(1);//延时1msdigitalWrite(tonepin,LOW);//不发声⾳delay(1);//延时ms}for(i=0;i<100;i++)//输出另⼀个频率的声⾳,这⾥的100与前⾯的80⼀样,⽤来控制频率,可以⾃⼰调节{digitalWrite(tonepin,HIGH);delay(2);digitalWrite(tonepin,LOW);delay(2);}}}从上⾯的代码可以看出,for语句中的80、100控制了频率,delay控制了时长,类似与⾳乐中的节拍。

Arduino播放音乐的制作教程

Arduino播放音乐的制作教程

Arduino 播放音乐的制作教程看过这个视频 Arduino mango 板播放《江南 Style 》后 大家一定很想知道是如何实现的,实现起来方便么 今天就来为大家揭开这个秘密。

首先,我们需要用到下列器 材: 1、mango 控制板一块 (你也可以使用其他 arduino 兼容版)2、 SD 卡一张3、 7pin 双排长针一条或者 7pin 双排针,单排针各一条4、 7pin 杜邦线一排我们需要用到平口钳子一把首先把长排针的座子往下压,成 如下形状然后我们用平口钳,把双排长针弯折成如下形状所 有针都弯好后就是这个样子这样你就可以插入 SD 卡了当然, 你也可以用 7pin 双排针和单排针把双排针弯折成如下, 5、喇叭一个第 ,制作 SD 读卡器部分然后用电烙铁把单排针和双排针焊在一起第二步,音源文件制作 首先你需要把任意音频文件转换成 .wav 格式,我们用到了 foorbar2000 这个软件,大家也可以使用其他转换软件打开 foorbar2000 后,添加你需要转换的歌曲,然后在歌曲名上 右击,选择转换选择输出格式为 .wav ,然后点击转换,选择(1.41 MB, 下载次数 : 61) 然后可以根据你的 工作频率选择合适的转换程序这里我们选择了 arduino with 16Mhz然后可以看到有很多转换模式这里,我们选择了FullRate@16MHz_Mono 这个模式,全速率单声道模式 将你刚刚生成的 .wav 格式文件拖到这个批处理上当提示如图时, 说明转换完成了然后, 你会发现新建了一个文件夹, 转换好的文件就在里面第三步,将文件放到 SD 卡中 首先, 你需要将 SD 卡格式化成 FAT 格式, 然后将刚才的文 件放到 SD 卡根目录下, 注意,文件名不能使用中文第四步, 连接 SD 卡,喇叭,和 mango 板按下如图所示连接即可喇叭正极接到 D9 ,负极接到 GND ,保存目录就可以了第二步,制作让 arduino 播放的音频文件 首先,我们需要用到一款软件,软件在此下载 tools.rararduino 板子的可以在喇叭负极和GND 之间串联一颗10uF 以上的电容,这样音质会更好接好后如下图第五步,添加arduino 库文件将库文件添加到libraries 文件夹里库文件在此下载SimpleSDAudio.rar (347.6 KB, 下载次数: 37)第六步,下载程序可以下载库里面的MostFunctionDemo.ino 程序下载完成后,打开串口调试器,如果没有出错的情况下,你会看到如下画面然后,将你要播放的文件名输入后发送,正确的情况下回提示如下然后,发送p 就可以播放了,你就可以从喇叭中听到优美的歌曲了演示江南Style 》/v_show/id_XNDc4NDc1ODg0.html 口》/v_show/id_XNDc4NTMyOTc2.html。

单片机控制蜂鸣器播放音乐

单片机控制蜂鸣器播放音乐
单片机控制蜂鸣器播放音乐
制作人:王宇浩
• 首先要了解,蜂鸣器播放音乐的原理。
• 演奏一个音符,是通过引脚,周期性的输 出一个特定频率的方波。这就需要单片机, • 在半个周期内输出低电平、另外半个周期 输出高电平,周而复始。 • 每一个不同的频率对应不同的声音。 • 如图
• 所以要让单片机在半个周期内输出低电平、另外半个周期输 出高电平,周而复始。 • 可以用中断或者是直接延时的方法,为了简洁明了我这里用 了自己写的delay函数控制蜂鸣器的频率
• 然后是蜂鸣器的程序
• 最后在主函数里全部写相应的程序
ቤተ መጻሕፍቲ ባይዱ
谢谢观看

基于Arduino的音乐播放器设计说明

基于Arduino的音乐播放器设计说明

课程设计课题:基于Arduino的音乐播放器设计班级:14计应1班:吕文龙日期:2016.12.05目录目录 (1)引言 (3)一.基本原理 (4)1.1实验目的 (4)1.2实验要求和容 (4)1.3实验器件 (4)二.基本流程图 (5)三.硬件模块 (6)3.1SD卡读写模块 (6)3.2 Arduino模块 (7)3.3 1602液晶显示模块 (7)3.4扬声器模块 (7)3.5电位器模块 (7)3.6步进电机模块 (7)四.实物图 (9)引言进入21世纪越来越来多的电子产品出现在人们的日常生活中,从而形式多样的音乐播放器已广泛应用于各种多媒体,为各种多媒体提供音频效果,人们能够听到悦耳的声音,同时给人类在多媒体播放平台上带来了一定的发展。

现有音乐播放器虽有多种设计样式,各具特色,但是回归到本质,我们可以通过Aduino做一个基于Arduino 的音乐播放器设计。

本文介绍了一种用串口输入模拟用户界面的音乐播放器平台和SD卡模块存储和读取数据,实现音乐的播放,具有反应速序快、可靠性高和连线及扩展方便等特点。

一.基本原理1.1实验目的由arduino控制的串口输入模拟用户控制界面系统和LCD1602液晶显示屏组成,其控制核心是arduino,串口输入信号是本程序的关键,由SD卡读写模块接收信号将之译码输出,扬声器通过读取信号播放音频,最后由液晶显示系统将相应的数据音乐播放信息显示出来。

1.2实验要求和容(1)SD卡模块数据存储,音频转换,读写程序的编写。

(2)设定模拟的用户按键,通过串口输入设定的信号。

(3)音乐播放器具有显示功能。

显示开机界面,播放界面,音乐信息,状态信息等等。

(4)故障模块,步进电机工作方式模拟故障信号。

(5) LED灯状态显示播放状态。

(6)电位器,调音量大小和显示屏的分辨率。

1.3实验器件Arduino板一块Lcd1602液晶一个SD卡一电位器2个步进电机一个Led灯一个电阻1个电容1个扬声器1个导线若干。

单片机课程设计报告利用蜂鸣器播放音乐

单片机课程设计报告利用蜂鸣器播放音乐

课程设计:嵌入式系统应用题目名称:利用蜂鸣器实现音乐播放功能姓名:学号:班级:完成时间:1设计的任务设计内容:动手焊接一个51单片机设计目标:利用单片机上的蜂鸣器实现音乐播放功能2设计的过程基本结构在本次的试验中采用了STC89C52RC单片机,STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期,工作电压:~5V单片机/~3V单片机,工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz,用户应用程序空间为8K字节;STC89C52RC引脚图STC89C52RC单片机的工作模式:(1)典型功耗<μA,可由外部中断唤醒,中断返回后,继续执行原程序(2)空闲模式:典型功耗2mA(3)正常工作模式:典型功耗4Ma~7mA4唤醒,适用于水表、气表等电池供电系统及便携设备2.蜂鸣器及其工作原理:蜂鸣器按其结构分主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型;电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成;接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声;本实验采用的是电磁式蜂鸣器;蜂鸣器按其是否带有信号源又分为有源和无源两种类型;有源蜂鸣器只需要在其供电端加上额定直流电压,其内部的震荡器就可以产生固定频率的信号,驱动蜂鸣器发出声音;无源蜂鸣器可以理解成与喇叭一样,需要在其供电端上加上高低不断变化的电信号才可以驱动发出声音;本实验采用的是有源蜂鸣器;蜂鸣器与单片机连接电路图软件设计过程1.蜂鸣器发声原理本实验由于采用有源蜂鸣器,只需将引脚端口P3^4清零,蜂鸣器即可发声;P3^4置位,蜂鸣器停止发声;采用置1置0的方法只能使蜂鸣器发声或停止发声,想要使蜂鸣器发出声音,必须对蜂鸣器发出声音的音频和节拍进行控制;音乐基础音调:不同音高的乐音是用C、D、E、F、G、A、B来表示,这7个字母就是音乐的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成简谱的1、2、3、4、5、6、7,相当于汉字“多来米发梭拉西”的读音,这是唱曲时乐音的发音,所以叫“音调”,即Tone;把C、D、E、F、G、A、B这一组音的距离分成12个等份,每一个等份叫一个“半音”;两个音之间的距离有两个“半音”,就叫“全音”;在钢琴等键盘乐器上,C–D、D–E、F–G、G–A、A–B两音之间隔着一个黑键,他们之间的距离就是全音;E–F、B–C两音之间没有黑键相隔,它们之间的距离就是半音;通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它们的左上角加上﹟号或者b号的叫变化音;﹟叫升记号,表示把音在原来的基础上升高半音,b叫降记音,表示在原来的基础上降低半音;例如高音DO的频率1046Hz刚好是中音DO的频率523Hz的一倍,中音DO的频率523Hz刚好是低音DO频率266Hz的一倍;同样的,高音RE 的频率1175Hz刚好是中音RE的频率587Hz的一倍,中音RE的频率587Hz 刚好是低音RE频率294Hz的一倍;节拍:节拍是让音乐具有旋律固定的律动,而且可以调节各个音的快满度;“节拍”,即Beat,简单说就是打拍子,就像我们听音乐不自主的随之拍手或跺脚;若1拍实,则1/4拍为;至于1拍多少s,并没有严格规定,就像人的心跳一样,大部分人的心跳是每分钟72下,有些人快一点,有些人慢一点,只要听的悦耳就好;音持续时间的长短即时值,一般用拍数表示;休止符表示暂停发音;1)控制发声频率要产生音频脉冲,只要算出某一音频的周期1/频率,然后将此周期除以2,即为半周期的时间;利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O 脚上得到此频率的脉冲;利用STC89C52RC的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0从而产生不同频率;此外结束符和休止符可以分别用代码00H和FFH来表示,若查表结果为0x00,则表示曲子终了;若查表结果为0xff,则产生相应的停顿效果;以标准音高A为例,A的频率是440Hz,周期T=1/440=2272us;在占空比为50%的情况下,导通时间=断开时间=半周期t=2272us/2=1136us,利用P3^4端口的位操作,经过不断地反相变换即可得到标准音高A的音频脉冲;端口导通时间与断开时的时间利用定时器实现;具体的方法是将单片机定时器的中断触发时间设为半周期t,这样每隔半周期端口反相,输出连续的对应音高的频率;设晶振的频率为f0,中断触发时间半周期为t,定时器工作在模式1时计数器的初值为THL,高8位为THL,低8位为TL;时钟周期即为1/f0,定时器每一次累加用去一个机器周期,一个机器周期包含12个时钟周期,即定时器每次加一所用时间是12/f0;定时器在模式1下计时采用16位数,最大计数为2^16-165535,再次加一65536溢出触发中断;根据以上分析可得如下关系:音频对应定时器初值的高8位TH=THL/2^8=65536-tf/12/256;音频对应定时器初值的低8位TL=THL%2^8=65536-tf/12%256;附:八度12音阶定时器初值表只含自然音低音音名 频率Hz 晶振12MHz 晶振 中音音名 频率Hz 晶振12MHz 晶振 高音音名 频率Hz 晶振12MHz 晶振 Do 262 0xF885 0xF91B Do 523 0xFC43 0xFC8E Do 1046 0xFE21 0xFE47 Re 294 0xF95A 0xF9DF Re 587 0xFCAD 0xFCED Re 1175 0xFE56 0xFE76 Mi 330 0xFA13 0xFA8A Mi 659 0xFD0A 0xFD43 Mi 1318 0xFE85 0xFEA1 Fa 349 0xFA68 0xFAD8 Fa 698 0xFD34 0xFD6A Fa 1397 0xFE9A 0xFEC7 So 392 0xFB04 0xFB68 So 784 0xFD82 0xFDB3 So 1568 0xFEC1 0xFED9 La 440 0xFB90 0xFBE9 La 880 0xFDC8 0xFDF3 La 1760 0xFEE4 0xFEF9 Si4940xFC0C0xFC5BSi9880xFE060xFE2DSi19760xFF030xFF162控制发声节拍每个音符的节拍可通过延时一定的时间来实现,在具体实现时需要有一个基本的带参延时程序,用于主函数根据不同的音符调用不同的时延;若以十六分之一音符的时长为基本延时时间,则十六分音符只需调用一次延时程序,八分音符则需调用两次延时程序,以此类推;3) 简谱及其编码用数字1至7表示;这7个数字就等于的;如果是C 大调,加上音名,就会是这样:八度如果是高一个八度,就会在数字上方加上一点;如果是低一个八度,就会数字下方加上一点;在中间的那一个就什么也不用加;如果要再高一个八度,就在上方垂直加上两点如:;要再低一个八度,就在下方垂直加上两点如:,如此类推;见下表所示: 大调 ... ... 小调......音长通常只有数字的是;数字下加一条横线,就可令四分音符的长度减半,即成为;两条横线可令八分音符的长度减半,即成为,余此类推;简单来説,下音阶CDEFGAB唱名 do re mi fa so la si数字 1 2 3 4 5 6 7加横綫数目与五綫谱的符尾数目相对应;数字后方的横线延长音符,每加一条横线延长一个的长度;正如五綫谱的附点一样,数字后方加一点会将音符长度增加一半;休止符休止符用“0”来表示;比四分休止符长,就只需在每一个四分休止符再多加一个“0”,不需在后方加上横线;若整个小节均是休止状态的话,就在每个四分音符加一个“0”,就像是3拍4就写成“|000|”,而4拍4就写成“|0000|”;无音高音符就像敲击乐的乐器那样是没有音高的,这时,简谱就需要用“X”或“x”表达;例如拍手时,简谱上就需如此表达:小节线正如五綫谱一样,小节与小节之间以纵綫称分隔,乐曲终止以一粗一细的直綫表示但是一般不分粗细;重复乐段以纵綫后两点表示开始,纵綫前两点表示终止;拍号的表达方式为:“2/4”、“3/4”、“4/4”、“6/8”等等;拍号一般都是置于的后方;变调与调号表示有两种方法:可以直接写“C调”,“C小调”或“Key:C”,“Key:Cm”;亦可写清楚主音代表哪一个音,例如1=C,就是C大调大调以1为主音;6=C就是C小调小调以6为主音;2=D就是D多利安调以2为主音;五线谱有,简谱同样有升降号;在简谱中,若需表达升降号,就把符号加在数字1至7的前方,让该音升高或降低;若要把升降号加在调号跟CDEFGAB七个字母,就须加在它们的后方;在五綫谱中,C小调要把B-E-A三个音降低半音;所以表达它的和声小调时,就会把一个放在B前面;简谱就一定得写 5,因为5不能下降;延音线、圆滑线与其他音乐符号简谱Tie跟slur都是跟五线谱相同,一定得置在数字上方;表达staccato时需要特别小心,因为很容易会跟低八度的那一点混淆,因此在表达跳音时把那一点写得粗点及低点;简谱编码将简谱中的每个音符进行编码,每个音符用一个unsignedchar字符类型表示,简谱可用一个unsignedchar字符数组表示;字符的前四位表示音频,可以表示0-f共十六个音符;本实验中采用了中音区和高音区;中音do-si分别编码为1~7,高音do-si分别编码为8~E,停顿编为0;字符的后四位表示节拍,节拍以十六分音符为单位在本程序中为165ms,一拍即四分音符等于4个十六分音符,编为4,其它的播放时间以此类推;以0xff作为曲谱的结束标志;程序从数组中取出一个数,然后分离出高4位得到音调,将值赋给定时器0,得到音调;接着分离出该数的低4位,得到节拍;本实验中播放音乐使用简谱如下:将其编码成:ucharcodezbjbxf={0x64,0xA3,0xC1,0xA2,0x62,0x84,0x61,0x81,0x61,0xA4,0xA1,0x91,0xA1,0x81,0 x64,0xA3,0xC1,0xD2,0xD2,0xD2,0xA2,0xC4,0xA1,0xC1,0xA1,0xC1,0xD2,0xD2,0x D2,0xA2,0xC4,0xC2,0x62,0xC2,0x62,0xA2,0xA2,0x84,0x94,0x94,0x92,0x81,0x9 1,0xA2,0xC2,0xD4,0xE4,0xA4,0xE4,0xA2,0xE2,0xA2,0xE2,0xA2,0xA2,0x84,0x94 ,0x94,0x92,0x81,0x91,0xA2,0xC2,0xD8};程序流图及说明主程序流程图程序代码:include<> defineucharunsignedchardefineuintunsignedintsbitfm=P3^4;算机与单片机的连接不上问题计算机与单片机的连接需要在电脑端安装相应的USB转串的驱动,由于我组没有使用实验室windowsxp系统,而使用的是个人计算机windows7系统,所以需要针对win7的驱动;后来联网搜索下载相应的驱动之后解决了这一问题;2.如何使蜂鸣器发出声音而非Be-Be声为了解决这个问题,我们深入研究了蜂鸣器发声原理与乐谱相关的知识;通过学习相关知识发现,不同的音符对应不同的音高,音高取决于发声频率;所以可以通过构造不同频率的方波来使蜂鸣器发出不同频率的声音,具体实现时利用定时器计时,定时器每一次累加消耗一个机器周期,即12个时钟周期;本实验采用晶振频率为12MHz,即定时器每一次累加消耗1us,通过设置定时器初值设定蜂鸣器取法的时间间隔,从而产生相应的音频;每个音符不但有频率属性,还有节拍属性;对不同节拍的控制可以采用延迟一定的时间来得到; 5总结在本次课程设计中,我们进一步加深了对小型嵌入式系统的认识;实验初期单片机需要自己焊接,通过亲手焊接电路板,了解了如何将实验原理图转化为具体的硬件实物连接;通过使用TN单片机开发板和STC89C52RC系统,对单片机应用开发有了初步的熟悉;在实验的过程中,使用到了C51的编译环境KeilC和单片机通讯程序STC_ISP,两者是单片机开发所不可缺少的工具;在具体实施的过程中,通过一一解决遇到的问题,增强了动手实践能力;。

单片机控制蜂鸣器鸣奏音乐

单片机控制蜂鸣器鸣奏音乐

单片机控制蜂鸣器鸣奏音乐——中北大学:马政贵首先介绍蜂鸣器的发声原理。

我们都知道,音调和音调的时长是音符的主要特征,通过产生不同的音调和音调的时长可以奏出不同的音符来。

然后一个个音符串联在一起就可以产生美妙的音乐来了。

音调主要由声音的频率决定,通过单片机给蜂鸣器不同的音频脉冲来产生不同的音调。

要产生音频脉冲,只要算出某一音频的周期(周期=1/频率),然后将此周期除以2即为半周期的时间。

利用单片机的定时器工作在计数模式MODE1下,设定TH0和TL0的值以产生这半个周期,每当计时到达时就将输出脉冲的I/O(即接蜂鸣器的那个管脚)反相,然后重复计时此半个周期再对I/O反相,就可以在I/O引脚上得到此频率的脉冲。

如果没有必要进行精确的计时,可以用for循环空语句来粗略计时即可(本文选用此法)。

当单片机使用11.0592Mhz的晶振时,for(i=0;i<115;i++);这个空循环延时约为1ms;当晶振选用12Mhz时,可使用for(i=0;i<125;i++);这个空循环来延时1ms。

在这个空循环外头再进行一次循环就可以实现延时若干ms。

如:知道如何产生不同的频率的音调和进行音调的延时的之后,我们便可以编写程序来让单片机控制蜂鸣器来鸣奏音乐了。

下面附上不同音调所对应的频率表:下文介绍了让单片机控制蜂鸣器进行鸣奏音乐的两种方法。

第一种方法是基础的方法,就是顺序地让蜂鸣器挨个地演奏每个音符。

方法一:(此歌曲是《莫斯哥郊外的晚上》的乐曲)#include <reg52.h>sbit fmq=P3^6;void delay(unsigned int a){unsigned char b;while(a--){for(b=0;b<115;b++) ;}}void yanzou(unsigned char i,unsigned int pai){unsigned char y;unsigned int j;for(j=0;j<pai;j++){fmq=0;for(y=0;y<i;y++) ;fmq=1;for(y=0;y<i;y++) ;}}void main(){while(1){yanzou(65,220); //1/2拍中音6yanzou(55,262); //1/2拍高音1yanzou(44,330); //1/2拍高音3yanzou(55,262); //1/2拍高音1yanzou(49,587); //1拍高音2yanzou(55,262); //1/2拍高音1yanzou(58,247); //1/2拍中音7yanzou(44,660); //1拍高音3yanzou(49,587); //1拍高音2yanzou(65,880); //2拍中音6yanzou(55,262); //1/2拍高音1yanzou(44,330); //1/2拍高音3yanzou(37,392); //1/2拍高音5yanzou(37,392); //1/2拍高音5yanzou(65,440); //1拍中音6yanzou(37,392); //1/2拍高音5yanzou(41,349); //1/2拍高音4yanzou(44,2640); //4拍高音3yanzou(41,698); //1拍高音4yanzou(37,784); //1拍高音5yanzou(29,492); //1/2拍高音7yanzou(33,440); //1/2拍高音6yanzou(44,660); //1拍高音3delay(250);yanzou(58,494); //1拍中音7yanzou(65,220); //1/2拍中音6yanzou(44,330); //1/2拍高音3yanzou(49,293); //1/2拍高音2yanzou(41,698); //1拍高音4yanzou(41,698); //1拍高音4yanzou(37,392); //1/2拍高音5yanzou(41,349); //1/2拍高音4yanzou(44,660); //1拍高音3yanzou(49,293); //1/2拍高音2yanzou(55,262); //1/2拍高音1yanzou(44,660); //1拍高音3yanzou(49,587); //1拍高音2yanzou(65,880); //2拍中音6yanzou(65,880); //2拍中音6yanzou(41,698); //1拍高音4yanzou(37,784); //1拍高音5yanzou(29,492); //1/2拍高音7yanzou(33,440); //1/2拍高音6yanzou(44,660); //1拍高音3delay(250);yanzou(58,494); //1拍中音7yanzou(65,220); //1/2拍中音6yanzou(44,330); //1/2拍高音3yanzou(49,293); //1/2拍高音2yanzou(41,698); //1拍高音4yanzou(41,698); //1拍高音4yanzou(37,392); //1/2拍高音5yanzou(41,349); //1/2拍高音4yanzou(44,660); //1拍高音3yanzou(49,293); //1/2拍高音2yanzou(55,262); //1/2拍高音1yanzou(44,660); //1拍高音3yanzou(49,587); //1拍高音2yanzou(65,880); //2拍中音6yanzou(65,880); //2拍中音6delay(5000);}}观察方法一的主函数可以发现,每个语句的形式和实现的功能都是一样的,于是可以想到用数组来进行代码的简化。

Arduino 蜂鸣器

Arduino 蜂鸣器

蜂鸣器模块一、相关介绍相信大家对蜂鸣器都不会陌生,我们在很多方案中都会用到蜂鸣器,大部分都是使用蜂鸣器来做提示或报警,比如按键按下、开始工作、工作结束或是故障等等。

这里对单片机在蜂鸣器驱动上的应用作一下描述。

二、驱动方式惯用驱动蜂鸣器的方式有两种:一种是PWM 输出口直接驱动,另一种是利用I/O 定时翻转电平产生驱动波形对蜂鸣器进行驱动。

PWM 输出口直接驱动是利用PWM 输出口本身可以输出一定的方波来直接驱动蜂鸣器。

在单片机的软件设置中有几个系统寄存器是用来设置PWM 口的输出的,可以设置占空比、周期等等,通过设置这些寄存器产生符合蜂鸣器要求的频率的波形之后,只要打开PWM 输出,PWM 输出口就能输出该频率的方波,这个时候利用这个波形就可以驱动蜂鸣器了。

比如频率为2000Hz的蜂鸣器的驱动,可以知道周期为500μs,这样只需要把PWM 的周期设置为500μs,占空比电平设置为250μs,就能产生一个频率为2000Hz 的方波,通过这个方波再利用三极管就可以去驱动这个蜂鸣器了。

而利用I/O 定时翻转电平来产生驱动波形的方式会比较麻烦一点,必须利用定时器来做定时,通过定时翻转电平产生符合蜂鸣器要求的频率的波形,这个波形就可以用来驱动蜂鸣器了。

比如为2500Hz 的蜂鸣器的驱动,可以知道周期为400μs,这样只需要驱动蜂鸣器的I/O 口每200μs 翻转一次电平就可以产生一个频率为2500Hz,占空比为1/2duty 的方波,再通过三极管放大就可以驱动这个蜂鸣器了。

三、模块使用大家看看到模块后应该明白,其实他非常方便使用,一个电源端,一个地端,还有一个就是信号输入端。

我们只要把电源、地线接好,那信号线接上IO口就行四、模块功能测试硬件要求Arduino控制器× 1USB数据线×1蜂鸣器模块× 1可调电位器(10K)× 1我们下面的测试例子主要是学会如何控制蜂鸣器的发声,和一些简单的应用,当然还有用两种不同的驱动方式驱动蜂鸣器的发声,大家可以比较下效果,一方便以后的使用。

少儿机器人编程Arduino主板课件音乐大师

少儿机器人编程Arduino主板课件音乐大师

Part 03
电路分析
Part03 音乐简谱
Part03 声音的特征
音调,响度,音色是声音的三个主要特征,人们主要 根据他们来区分声音。 一、音调:指声音的高低(高音、低音),由声源振 动的“频率”决定。 二、响度:指声音的大小,由声源的“振幅”所决定。 三、音色:声音因不同物体材料的特性,我们能辨别 出不同人的声音就是因为他们的音色不同
节拍:声音发出来后持续时间的长短 对于音乐来说,最重要的两个要素是音调和节拍
Part03 识别简谱:音的高低?
在简谱中,用以表示音的高低 及相互关系的基本符号为七个 阿拉伯数字,即1、2、3、4、5、 6、7,唱作do、re、mi、fa、 sol、la、si,称为唱名。
另外在实际作品中,还有一些更高或更低的音,如在基本音符上方加记一个’.’,表示该音升高 一个八度,称为高音。在基本音符下方加记一个’.’,表示该音降低一个八度,称为低音。
尝试写出《祝你生日快乐》的音符
Part 06
当堂总结
Part06 当堂总结
程序测试单
蜂鸣器是否可以播放《小星星》?
编写程序是否通过调用子程序的方法?
音符后面加上短横线是否代表2拍?
音符下方加上短横线是否代表0.5拍?
如果以上任何一项有异常,请检查相关程序
Q1、什么是二分音符、四分音符、八分音符? Q2、什么是频率?
Part03 音符频率对应表
Part03 子程序总结
作用:子程序简化主程序的内容,使主程序更加简洁,清晰 注意点: 1、命名规则:子程序命名不能以数字开头 2、同名问题:程序中可以含有多个子程序,但多个子程序不能重名 3、功能单一:在子程序中也要力求清晰简洁,功能单一
Part 04

Arduino 蜂鸣器

Arduino 蜂鸣器

蜂鸣器模块一、相关介绍相信大家对蜂鸣器都不会陌生,我们在很多方案中都会用到蜂鸣器,大部分都是使用蜂鸣器来做提示或报警,比如按键按下、开始工作、工作结束或是故障等等。

这里对单片机在蜂鸣器驱动上的应用作一下描述。

二、驱动方式惯用驱动蜂鸣器的方式有两种:一种是PWM 输出口直接驱动,另一种是利用I/O 定时翻转电平产生驱动波形对蜂鸣器进行驱动。

PWM 输出口直接驱动是利用PWM 输出口本身可以输出一定的方波来直接驱动蜂鸣器。

在单片机的软件设置中有几个系统寄存器是用来设置PWM 口的输出的,可以设置占空比、周期等等,通过设置这些寄存器产生符合蜂鸣器要求的频率的波形之后,只要打开PWM 输出,PWM 输出口就能输出该频率的方波,这个时候利用这个波形就可以驱动蜂鸣器了。

比如频率为2000Hz的蜂鸣器的驱动,可以知道周期为500μs,这样只需要把PWM 的周期设置为500μs,占空比电平设置为250μs,就能产生一个频率为2000Hz 的方波,通过这个方波再利用三极管就可以去驱动这个蜂鸣器了。

而利用I/O 定时翻转电平来产生驱动波形的方式会比较麻烦一点,必须利用定时器来做定时,通过定时翻转电平产生符合蜂鸣器要求的频率的波形,这个波形就可以用来驱动蜂鸣器了。

比如为2500Hz 的蜂鸣器的驱动,可以知道周期为400μs,这样只需要驱动蜂鸣器的I/O 口每200μs 翻转一次电平就可以产生一个频率为2500Hz,占空比为1/2duty 的方波,再通过三极管放大就可以驱动这个蜂鸣器了。

三、模块使用大家看看到模块后应该明白,其实他非常方便使用,一个电源端,一个地端,还有一个就是信号输入端。

我们只要把电源、地线接好,那信号线接上IO口就行四、模块功能测试硬件要求Arduino控制器× 1USB数据线×1蜂鸣器模块× 1可调电位器(10K)× 1我们下面的测试例子主要是学会如何控制蜂鸣器的发声,和一些简单的应用,当然还有用两种不同的驱动方式驱动蜂鸣器的发声,大家可以比较下效果,一方便以后的使用。

利用蜂鸣器和单片机演奏简单的音乐电路设计

利用蜂鸣器和单片机演奏简单的音乐电路设计

利用蜂鸣器和单片机演奏简单的音乐电路设计利用蜂鸣器和单片机演奏简单的音乐实验原理图实验程序/* =========================================================== *//* ----------------------------------------------------------- *//* 曲谱存贮格式 uchar code 数组名{音高,音长,音高,音长....} *//* 音高由三位数字组成: *//* 个位是表示 1~7 这七个音符. *//* 十位是表示音符所在的音区,1-低音,2-中音,3-高音; *//* 百位表示这个音符是否要升半音 0(不写)-不升,1-升半音。

*//* 音长最多由三位数字组成: *//* 个位表示音符的时值,其对应关系是: *//* 数值(n) 0 1 2 3 4 5 6 *//* --------------------------------------------- *//* 几分音符 1 2 4 8 16 32 64 *//* 即:音符=2^n ,这样做的目的是为了节省曲谱的存贮空间。

*//* 十位表示音符的演奏效果(0-2),0-普通,1-连音,2-顿音。

*//* 百位是符点位,0(不写)-无符点,1-有符点。

*//* ----------------------------------------------------------- */ /* 调用演奏子程序的方法为: *//* play(乐曲数组名,调号,升降八度,演奏速度,开始指针,结束指针) */ /* 调号(0-11)是指乐曲升多少个半音演奏;升降八度(1-3)是指在演奏 */ /* 在哪个八度演奏: 1-降八度,2-不升不降,3-升八度.开始指针(0- ) */ /* 是从哪个音符开始演奏,结束指针是演奏到哪个音符为止. *//* ----------------------------------------------------------- */ //本程序用T0 来产生音调,用T1 产生音长#include <reg51.h>#define uchar unsigned char#define yx 4/5 /* 定义普通音符演奏的长度分率 */#define plen 2 /* 定义晶振的时钟周期(us) */#define uchar unsigned char#define uint unsigned intsbit speaker=P3^5;/* ------------------下面是曲谱 ------------------------------ */uchar code sound[100]={25,2,23,3,25,3,31,1,26,2,31,3,26,3,25,1,25,2,21,3,22,3,23,2,22,3,21,3,22, 0,25,2,23,3,25,3,31,102,27,3,26,2,31,2,25,1,25,2,22,3,23,3,24,102,17,3, 21,0};uchar tc0,tc1,sc0,sc1; /* 音长和音符两个计数器初值暂存 */void play(sound,dh,sj,speed,point1,point2)uchar code sound[]; /* 接受乐曲数组的地址 */uchar speed,sj,dh; /* 速度、八度、调号 */uint point1,point2; /* 乐曲开始、结束指针 */{uint code fftab[12]={262,277,294,311,330,349,369,392,415,440,466,494}; /* 频率表*/uchar code stab[7]={0,2,4,5,7,9,11}; /* 1~7 在频率表中的位置 */uchar code ltab[7]={1,2,4,8,16,32,64};uchar tl,ts,sl,sm,sh,slen,xg,ii,fd;uint point,hz,tc,sc,len,len0,len1,len2,len4,i,ftab[12]; speaker=1;for(i=0;i<12;i++) /* 根据调号及升降八度来计算音符频率 */ {ii=i+dh;if(ii>11){ii=ii-12;ftab[i]=fftab[ii]*2;}elseftab[i]=fftab[ii];if(sj==1) ftab[i]>>=2;if(sj==3) ftab[i]<<=2;}point=point1;ts=sound[point];tl=sound[point+1]; /* 读出第一个音符和它时时值 */tc=65535-10000/plen; /* 算出10ms 的初装值 */tc0=tc%256; /* 计算TL1 应装入的初值 */tc1=tc/256; /* 计算TH1 应装入的初值 */len0=12000/speed; /* 算出1 分音符的长度(几个10ms) */ len4=len0/4; /* 算出4 分音符的长度 */len4=len4-len4*yx; /* 普通音最长间隔标准 */TMOD=0x11;TH1=tc1; TL1=tc0;ET0=1; EA=1;TR0=0; TR1=1;while(point<=point2){sl=ts%10; /* 计算出音符 */sh=ts/100; /* 计算出是否升半 */sm=ts/10%10; /* 计算出高低音 */hz=ftab[stab[sl-1]+sh]; /* 查出对应音符的频率 */if(sl!=0){if (sm==1) hz>>=2; /* 若是低音 */if (sm==3) hz<<=2; /* 若是高音 */sc=(50000/hz)*10/plen; /* 计算脉冲个数 */sc=65536-sc; /* 计算计数器初值 */sc0=sc%256; /* 算出TL0 应装初值 */sc1=sc/256; /* 算出TH0 应装初值 */TH0=sc1; /* 装入初值 */TL0=sc0+12; /* 加12 是对中断延时的补偿 */}slen=ltab[tl%10]; /* 算出是几分音符 */xg=tl/10%10; /* 算出音符类型(0 普通1 连音2 顿音) */fd=tl/100;len=len0/slen; /* 算出连音音符演奏的长度(多少个10ms)*/ if (fd==1) len=len+len/2;if(xg!=1)if(xg==0) /* 算出普通音符的演奏长度 */if (slen<=4)len1=len-len4;elselen1=len*yx;elselen1=len/2; /* 算出顿音的演奏长度 */elselen1=len;if(sl==0) len1=0;len2=len-len1; /* 算出不发音的长度 */if (sl!=0)TR0=1;for(i=len1;i>0;i--) /* 发规定长度的音 */{while(TF1==0);TH1=tc1; TL1=tc0;TF1=0;}}if(len2!=0){TR0=0; speaker=1;for(i=len2;i>0;i--) /* 音符间的间隔 */{while(TF1==0);TH1=tc1; TL1=tc0;TF1=0;}}point+=2; /* 音符指针下移 */ts=sound[point]; tl=sound[point+1]; /* 读出下一个音符和它时时值 */}void yin() interrupt 1 /* 音符发生程序(中断服务程序)*/ {speaker=~speaker;TH0=sc1; TL0=sc0;}//==============================================main(){while(1){play(sound,0,2,60,0,57);play(sound,0,1,60,0,57);play(sound,0,3,60,0,57);play(sound,0,2,40,0,57);play(sound,5,2,60,0,57);play(sound,0,2,80,0,57);}}。

arduino制作各种歌曲

arduino制作各种歌曲

首先讲下简单的乐理知识,知道音乐是怎么演奏出来的自然就可以通过代码来进行编排了。

1.演奏单音符一首乐曲有若干音符组成,一个音符对应一个频率。

我们知道到相对应的频率让arduino输出到蜂鸣器蜂鸣器就会放出相应的声音,这里有个表供大家参考:2.音符的演奏时间我们知道了音符是如何演奏出来的,下一步就是控制音符的演奏时间。

每个音符都会播放一定的时间,这样才能构成一首优美的曲子,而不是生硬的一个调的把所有的音符一股脑的都播放出来。

如何确定每个音符演奏的单位时间呢?我们知道,音符节奏分为一拍、半拍、1/4拍、1/8拍,我们规定一拍音符的时间为1;半拍为0.5;1/4拍为0.25;1/8拍为0.125……,所以我们可以为每个音符赋予这样的拍子播放出来,音乐就成了。

好了我们看看如何将简谱翻译成对应频率和拍子。

以葫芦娃为例:先看下左上角1=D这里,用的是D调,好那我们就看《音符频率表》中的D行(红色部分),第一个音符是1 但上面有个点,所以对应的就是589,时间是一拍=1,第二个音符6(没有点)就是495,时间也是一拍=1,第三个音符5 即441,因为有下划线所以是半拍=0.5,……以此类推第四0这里要注意下,这里是没有声音,但是要是用频率0表示还是会有声音(这个不懂),所以我们用一个很高频率的声音,这样人耳听不到就达到了没有声音的效果,所以频率为-1。

拍子=1拍第五,再接着看到第一句歌词葫芦娃这个娃的音是3—,这表示是两拍,后面每加一个“-”,表示拍子+1(1+1),本例中最多是加到4.第六,第二句歌词葫芦娃这个娃,3•带个点,点的意思是去3的拍子的一半,即3•的拍子是1+0.5第七,大家可能会问那弧线怎么表示,这在音乐中属于连音,我们要表示的话,可以稍微改下连音后面那个音的频率,比如减少或增加一些数值(需自己调试),这样表现会更流畅,但操作上更复杂了,本例没有做连音的处理,大家有兴趣可以自己调整下。

所以说了一大堆,规律就是时间上单个音符没有下划线,就是一拍(1),有下划线是半拍(0.5),两个下划线是四分之一拍(0.25),有“—”=前面音符的拍子+1;频率上就是按照音符是否带点,点在上还是在下到表中查找就可以了。

Arduino 入门到精通 例程8-蜂鸣器

Arduino 入门到精通 例程8-蜂鸣器

Arduino 入门到精通例程8蜂鸣器发声实验用Arduino 可以完成的互动作品有很多,最常见也最常用的就是声光展示了,前面一直都是在用LED 小灯在做实验,本个实验就让大家的电路发出声音,能够发出声音的最常见的元器件就是蜂鸣器和喇叭了,两者相比较蜂鸣器更简单和易用所以我们本实验采用蜂鸣器。

以下是要准备的元件:蜂鸣器*1按键*1面包板*1面包板跳线*1 扎照下面的原理图连接电路,连接电路时要注意一点就是蜂鸣器有正负极之分,下面右侧实物图可看到蜂鸣器有红黑两种接线。

连接好电路程序这方面就很简单了,与前面按键控制小灯是实验程序类似,因为蜂鸣器的控制接口也是数字接口输出高低电平就可以控制蜂鸣器的鸣响。

参考源程序:int buzzer=8;//设置控制蜂鸣器的数字IO脚void setup(){pinMode(buzzer,OUTPUT);//设置数字IO脚模式,OUTPUT为辒出}void loop(){unsigned char i,j;//定义变量while(1){for(i=0;i<80;i++)//辒出一个频率的声音{digitalWrite(buzzer,HIGH);//发声音delay(1);//延时1msdigitalWrite(buzzer,LOW);//不发声音delay(1);//延时ms}for(i=0;i<100;i++)//辒出另一个频率癿声音{digitalWrite(buzzer,HIGH);//发声音delay(2);//延时2msdigitalWrite(buzzer,LOW);//不发声音delay(2);//延时2ms}}}下载完程序,蜂鸣器实验就完成了.。

(完整)arduino蜂鸣器发声教案

(完整)arduino蜂鸣器发声教案

第4课蜂鸣器发声一、学生情况分析《蜂鸣器发声》是本课程的第四课,经过上一节课的学习,学生初步了解按钮,掌握选择结构以及数字口的输入,体验Arduino机器人控制和按钮控制LED编程的过程。

这一节课主要是让学生们的电路发出声音。

二、教学目标1。

通过制作蜂鸣器发声实验,初步了解蜂鸣器,掌握蜂鸣器的接线方法.2。

体验不同蜂鸣器的不同接线方法以及发出声音的不同要求。

3.体验蜂鸣器编程的过程,激发对编程的兴趣。

三、教学重难点教学重点:蜂鸣器的连接方法、tone函数的使用教学难点:tone函数的使用四、教学流程1.复习旧知,引入新课。

教师:上节课我们制作了按键控制的LED,其中用到了哪些知识呢?通过制作按钮控制的LED,初步了解按钮,掌握选择结构以及数字口的输入。

按钮控制LED一般应用在走廊的灯、台灯等需要启动才会亮的灯上.今天我们来学习声音,能让电路发出声音的元器件。

出示课题《蜂鸣器发声》。

2.教学新课(1)元器件介绍1)蜂鸣器,是一种电子发声元器件,可以发出"beep beep"的声音.蜂鸣器在电路中用字母“FM"、“H”或“HA" 或“ZZG"、“LB"、“JD"等表示。

蜂鸣器分为有源蜂鸣器和无源蜂鸣器两种,两者的区别是:内部是否有震荡源。

有源蜂鸣器内部带震荡源,所以只要一通电就会叫;无源蜂鸣器内部不带震荡源,所以如果用直流信号无法令其鸣叫。

必须用2K-5K 的波形脉冲信号去驱动它。

有源蜂鸣器往往比无源的略贵,就是因为里面多个震荡电路.2)PNP型三极管(型号8550),在该电路中三极管相当于一个开关,其引脚如下图:1脚=E(发射极,电路图中带箭头的那个)2脚=B(基极,电路图中跟R相接的那个)3脚=C(集电极,与E相对的那个)运行原理如下:1.当输出高电平,三极管B极与E极间没有电压差,三极管E极与C极间不通,有源蜂鸣器FM没有电流通过,蜂鸣器不响。

Arduino和蜂鸣器

Arduino和蜂鸣器

tone(pin, frequency, duration)
其中参数
pin:要产生声音的引脚
frequency: 产生声音的频率,单位 Hz,类型 unsigned int
duration:声音持续的时间,单位毫秒(可选),类型 unsigned long
图 5-3 实验电路图 5.6 要点总结
1)蜂鸣器分为有源和无源,有源的直接接电源即可发声。无源的需要连接一个变化频 率的电源上,才能发出声音。所以接在 Arduino 主板上也可以发出声音,但不要串接限流电 阻。
1
Arduino 软件
1套
提供 IDE 环境 最新版本 1.05
2
Arduino UNO 开发板
1块
控制主板
各种版本均可
3
USB 线
1条
烧录程序
随板子配送
4
杜邦线
若干条
连接组件
5
蜂鸣器
1个
发出声音
6
面包板
可选
所需材料的实物如图 5-3 所示。
5.3 元器件介绍 蜂鸣器按其结构分主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。电磁式蜂鸣器由振
连续波形。所以,当我们直接用实验 4 的代码也一样能使蜂鸣器发出声音。
5.2 所需材料 这章所需材料非常简单,把实验 4 中的 LED 灯换成蜂鸣器即可,电阻不用。因为蜂鸣
器的可用电压是 5V,若增加电阻,蜂鸣器将因电压不足而不会发出声音,如表 5-1 所示。
表 5-1:所需材料

名称
数量
作用
备注

15 delay(4000);
//最高频率下维持 4 秒钟
16 for(int i=800;i>=200;i--)

Arduino音乐演奏教案

Arduino音乐演奏教案
学 软件:
准 Arduino IDE。
备 教材:
Arduino 音乐演奏相关教程。
导入新课:

(1)介绍 Arduino 音乐演奏的基本原理。

(2)展示一些 Arduino 音乐演奏作品,激发学生兴趣。

基础知识讲解:

(1)介绍 Arduino 音调(Tone)库的用法。
(2)讲音乐演奏教案

1. 了解 Arduino 音乐演奏的基本原理。

2. 学会使用 Arduino 编写简单的音乐演奏程序。

3. 培养学生的创新思维和动手能力。


教学重点:

Arduino 音乐演奏原理及编程方法。

教学难点:

音调、节拍的控制及音乐编程。

硬件:
教 Arduino UNO 板、扬声器、杜邦线。

注重培养学生的创新意识和团队协作精神。

通过本节课的学习,学生能够掌握 Arduino 音乐演奏的基本方法,提高

编程能力,为今后创作更多有趣的音乐作品奠定基础。
(3)介绍节拍的概念及如何在程序中实现。
实践操作:
(1)连接电路:将扬声器连接到 Arduino UNO 板的相应引脚。
(2)编写程序:根据教材示例,编写一个简单的音乐演奏程序。
(3)上传程序:将编写好的程序上传到 Arduino UNO 板。
(4)调试与优化:根据实际演奏效果,调整音调、节拍等参数。
课堂小结:
(1)总结本节课所学内容,强调音乐演奏编程的关键点。
(2)鼓励学生课后尝试编写自己的音乐作品。
课 后 (1)编写一个音乐演奏程序,演奏一首自己喜欢的歌曲。 作 (2)尝试调整音调、节拍,使音乐更加动听。 业
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录
一、新媒体装置艺术
1、作品原理介绍 (1)
2、作品设计的意义 (1)
3、作品的主要内容 (1)
4、制作方法和流程 (1)
5、成果 (9)
6、价值和影响 (9)
7、创新点 (10)
二、结论
8、技术方面 (10)
9、艺术方面 (10)
10、不足及展望 (11)
11、谢辞 (11)
设计说明书
一、作品原理介绍:
能感应到物体靠近并且低于50CM时,蜂鸣器发出音乐,并且小灯泡随着音乐节奏变化。

二、作品设计意义:
将它应用到图书馆或者购物的地方,当人们靠近的时间能只能朗读出这一栏或者这一块区域有什么东西,能够更加让人们更快速的找到自己需要的东西,很大程度上节约的时间! 也可以应用到车上,当开车的人快要和前面或者后面的物体撞上的时候,会发出声音来提醒你,从而给生命和财产加上保护套。

三、作品主要内容:
1、Arduino控制蜂鸣器播放音乐、小灯泡。

2、小灯泡跟随蜂鸣器的音乐节奏变化。

3、当物体离超声波低于50CM时发出指令,控制蜂鸣器、
小灯泡。

四、制作方法和流程:
adruino uno一块(其他Arduino板子也可,注意引脚就行),面保线若干条,蜂鸣器或小喇叭一个。

原理:
首先讲下简单的乐理知识,知道音乐是怎么演奏出来的自然就可以通过代码来进行编排了。

1.演奏单音符的原理
一首音乐由若干音符组成,每一个音符唯一对应一个频率。

如果我们知道了音符相对应的频率,再让 Arduino 按照这个频率输出到蜂鸣器或喇叭,蜂鸣器或喇叭就会发出相应频率下的声音。

Arduino官方网站给出了不同音符对应的不同频率的头文件,具体请见下文介绍。

2.音符演奏的持续时间
每个音符都会播放一定的时间,这样才能构成一首优美的曲子,而不是每个音符都播放一样长的时间。

如何确定每个音符演奏的单位时间呢?我们知道,音符节奏分为1拍、1/2拍、1/4拍、1/8拍等等,我们规定一拍音符的时间为1;半拍为0.5;1/4拍为0.25;1/8拍为0.125……,所以我们可以为每个音符赋予这样的拍子播放出来,音乐就成了。

制作过程:所需硬件:Arduino板子一块,小型扬声器/蜂鸣器一个,导线两根。

如果扬声器声音太大,也可适当配置220欧姆电阻一个与扬声器串联。

我们将扬声器一端串联电阻后接到数字6接口,另一端接地(GND)。

数字接口可以自己选择,只是在代码中要对应修改一下。

函数的参数说明:
pin: 你要接扬声器的接口,是整数(int 型)
frequency:频率,是一个整数(int 型)
duration: 音符持续的时间,是毫秒值,无符号长整型
( unsigned long 型)
无返回值
我们还注意到上面代码中调用了头文件“pitches.h”。

这个文件是什么呢?这个头文件正式上面提到的不同音符对应的不同频率的头文件。

该pitches.h文件内容作为附件放在下面。

打开该文件后可以看到,这是一张类似表格的东西,里面是定义的大量的宏,即用宏名代替了频率名,对应到键盘的各个按键上。

可是,不懂音乐的我们如何能够取出我们所要的音符对应的宏名呢?
首先看看钢琴大谱表与钢琴琴键的对照表:
从上图我们可以将各音符的音名直观的看出来,但是,我又只会简谱,如何看呢?为了方便我自己,也希望能方便大家,我将其制作为了直观的表格,见下图。

如果有谁能用到,那我的整理就没有白费啦。

以直接把上面的两个函
数覆盖官方的例子,写
入Arduino就行了,可
以灵活的修改修改接口,
不过,为了更好看起见,
我还添加了5个彩色自
闪LED灯,一闪一闪的
很好看,温馨感一下就
出来了,所以,在后面
稍微添加了几行代码.
第二步制作arduino超声波控制蜂鸣器、小灯。

夏普GP2D12红外测距传感器的测量范围是10cm到80cm,所以对于更远的距离,超声波测距传感器将会更适用,还有一点就是不受周围环境光源干扰,在机器人对抗的比赛中,也是不可忽视的重要因素。

今天以机器人基地的超声波传感器为例简地单学习一下超声波测距原理,再在Arduino上做个超声波传感器应用的实验。

首先我们准备一下所需要的实验工具,包括arduino板子和超声波模块和杜邦线四根,我们来认识一下这个模块,这个模块工作电压是5v,有四个引脚接线,分别是VCC、Gnd、Trig、Echo,我们用杜邦线将超声波模块连接到板子上,Vcc接5v,Gnd接Gnd,Trig接端口8,Echo接端口9,它的工作原理就像声纳一样,通过发送器发出超声波信号,遇到物体反射回来传到接收器,然后计算反射回来所用的时间。

信号反射时间越长,则目标越远。

科学家们将每秒钟振动的次数称为声音的频率,它的单位是赫兹(Hz)。

我们人类耳朵能听到的声波频率为20Hz~20000Hz。

当声波的振动频率小于20Hz或大于20000Hz时,我们便听不见了。

因此,我们把频率高于20000赫兹的声波称为“超声波”。

由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量。

超声波测距原理:超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。

超声波在空气中的传
播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2 。

这就是所谓的时间差测距法。

超声波测距的原理是利用超声波在空气中的传播速度为已知,测量声波在发射后遇到障碍物反射回来的时间,根据发射和接收的时间差计算出发射点到障碍物的实际距离。

由此可见,超声波测距原理与雷达原理是一样的。

今天我来编一个简单的测距程序,我在13接口接一个小灯,使其当测得距离大于50厘米时亮起。

下面是代码:
最后一步将其整合起来,将两个原本分开程序合在一起变成一个新的程序,也就成了一个新的作品。

下面是接线图:
最后感谢胡
鹏老师对我们班
的教导和包容!
六、价值和影响:
1.作品从价值方面来讲——能应用到商场上,当人们靠近一个区域时,会提醒消费者这个区主要是买的什么,能节约时间。

也可以应用到地铁、公路上,当人们在红灯时,当身体很靠近公路,会提醒人们注意距离,保护行人的安全。

同样也可以应用到车上,当开车的人快要和前面或者后面的物体撞上的时候,会发出声音来提醒你,从而给生命和财产加上保护套。

2.作品从影响来讲——可以给交通、消费带来保护和方便,是一种无形的保险措施,很大程度上保护人们的出行安全,给生活一定的影响。

第一将超声波、和蜂鸣器以及小灯泡结合起来,制作出更加具有附加值的作品,能生活、交通管理上带来方便和保护。

第二将以超声波为主要的照片应用到生活中,帮助人们解决生活上的问题。

第三在我国每年因交通事故而丧失生命的事故有很多,而我的作品能在这方面带来一定的改善,紧贴生活实际问题。

八、技术成面:
1. Arduino软件是需要写代码,代码上面临的问题是最大的,英文一直不是我擅长的,所以在这过程中我逼着自己去学英语,慢慢尝试去改代码、去写代码:
2. Arduino板子是需要自己去接线,所以在这问题上,对于文科艺术生的我,要去尝试一些不同的课程,去好好研究一些东西。

九、艺术方面:
艺术方面是指在包装上的问题,包装上我采用的是简单、实用的外观带点小活跃的元素。

在制作过程中必须要格外细心和耐心,作为一个大男生的我在这过程显得非常烦,需要剪纸上我都没有很好的处理好。

在包装上我个人认为能简单的就不要复杂化,能实用的不要华而不实。

十、不足及展望:
不足的地方是缺少零件,没能很好的应用带生活中去,让作品的实际作用得到最大化,只能在有限的条件下做出有限的照片,只是我觉得最大的遗憾和不足。

希望自己在将来能真的做出改变生活给人们生活带来方便的作品,希望这方面的技术能越来越好,越来越贴近生活带来实际作用。

相关文档
最新文档