ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:453.21KB ,
资源ID:7339579      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7339579.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(嵌入式系统自主设计实验报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

嵌入式系统自主设计实验报告.docx

1、嵌入式系统自主设计实验报告深 圳 大 学 实 验 报 告 课程名称: 嵌入式系统 实验项目名称: 智能小车设计 学院: 信息工程学院,计算机软件学院 专业: 指导教师: 李坚强 报告人: 学号: 实验时间: 实验报告提交时间: 教务部制实验目的:自主设计利用喇叭设计出不同音乐 实验原理:本文很简单,需要用到的材料:adruino uno一块(其他也可),面保线若干条,蜂鸣器或小喇叭一个(小喇叭更好蜂鸣器要接电阻不然声音有点刺耳)连接方法如图: 首先讲下简单的乐理知识,知道音乐是怎么演奏出来的自然就可以通过代码来进行编排了。1.演奏单音符 一首乐曲有若干音符组成,一个音符对应一个频率。知道到相对

2、应的频率 让arduino输出到蜂鸣器 蜂鸣器就会放出相应的声音,这里有个表供大家参考: 2.音符的演奏时间 我们知道了音符是如何演奏出来的,下一步就是控制音符的演奏时间。每个音符都会播放一定的时间,这样才能构成一首优美的曲子,而不是生硬的一个调的把所有的音符一股脑的都播放出来。如何确定每个音符演奏的单位时间呢?我们知道,音符节奏分为一拍、半拍、1/4拍、1/8拍,我们规定一拍音符的时间为1;半拍为0.5;1/4拍为0.25;1/8拍为0.125,所以我们可以为每个音符赋予这样的拍子播放出来,音乐就成了。以葫芦娃为例: 先看下左上角1=D这里,用的是D调,好那就看音符频率表中的D行(红色部分)

3、,第一个音符是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第七,这在音乐中属于连音

4、,要表示的话,可以稍微改下连音后面那个音的频率,比如减少或增加一些数值(需自己调试),这样表现会更流畅,但操作上更复杂了,本例没有做连音的处理,实验中还利用超声波测距与红外线配合使用:当超声波检测前面有障碍物时候发出警报,其他情况下,便放音乐超声波传感器原理:基本工作原理: (1)采用IO口TRIG触发测距,给至少10us的高电平信号; (2)模块自动发送8个40khz的方波,自动检测是否有信号返回; (3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S)/2; 本模块使用方法简单,一个控制口发一个10US

5、以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,即可以达到你移动测量的值5、 操作:初始化时将trig和echo端口都置低,首先向给 trig 发送至少10 us的高电平脉冲(模块自动向外发送8个40K的方波),然后等待,捕捉 echo 端输出上升沿,捕捉到上升沿的同时,打开定时器开始计时,再次等待捕捉echo的下降沿,当捕捉到下降沿,读出计时器的时间,这就是超声波在空气中运行的时间,按照 测试距离=(高电平时间*声速(340M/S)/2 就可以算出超声波到障碍物的距离。红外线

6、感应传感器原理:人体热释电红外线传感器的工作原理及特性普通人体会发射10um左右的特定波长红外线,用专门设计的传感器就可以针对性的检测这种红外线的存在与否,当人体红外线照射到传感器上后,因热释电效应将向外释放电荷,后续电路经检测处理后就能产生控制信号。这种专门设计的探头只对波长为10m左右的红外辐射敏感,所以除人体以外的其他物体不会引发探头动作。探头内包含两个互相串联或并联的热释电元,而且制成的两个电极化方向正好相反,环境背景辐射对两个热释元件几乎具有相同的作用,使其产生释电效应相互抵消,于是探测器无信号输出。一旦人侵入探测区域内,人体红外辐射通过部分镜面聚焦,并被热释电元接收,但是两片热释电

7、元接收到的热量不同,热释电也不同,不能抵消,于是输出检测信号。 为了增强敏感性并降低白光干扰,通常在探头的辐射照面覆盖有特殊的菲泥尔滤光透镜,菲泥尔滤光片根据性能要求不同,具有不同的焦距(感应距离),从而产生不同的监控视场,视场越多,控制越严密。 实验步骤: #define NOTE_D0 -1#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 14

8、7#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 112/以上部分是定义是把每个音符和频率值对应起来,其实不用打这么多,但是都打上了,

9、后面可以随意编写D调的各种歌,我这里用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/这部分是用英文对应了拍子,这样后面也比较好看int tune = NOTE_DH1,NOTE_D6,NOTE_D5,NOTE_D6,NOTE_D0, NOTE_DH1,NOTE_D6,NOTE_D5,NOTE_DH1,NOTE_D6

10、,NOTE_D0,NOTE_D6, NOTE_D6,NOTE_D6,NOTE_D5,NOTE_D6,NOTE_D0,NOTE_D6, NOTE_DH1,NOTE_D6,NOTE_D5,NOTE_DH1,NOTE_D6,NOTE_D0, NOTE_D1,NOTE_D1,NOTE_D3, NOTE_D1,NOTE_D1,NOTE_D3,NOTE_D0, NOTE_D6,NOTE_D6,NOTE_D6,NOTE_D5,NOTE_D6, NOTE_D5,NOTE_D1,NOTE_D3,NOTE_D0, NOTE_DH1,NOTE_D6,NOTE_D6,NOTE_D5,NOTE_D6, NOTE_D5,

11、NOTE_D1,NOTE_D2,NOTE_D0, NOTE_D7,NOTE_D7,NOTE_D5,NOTE_D3, NOTE_D5, NOTE_DH1,NOTE_D0,NOTE_D6,NOTE_D6,NOTE_D5,NOTE_D5,NOTE_D6,NOTE_D6, NOTE_D0,NOTE_D5,NOTE_D1,NOTE_D3,NOTE_D0, NOTE_DH1,NOTE_D0,NOTE_D6,NOTE_D6,NOTE_D5,NOTE_D5,NOTE_D6,NOTE_D6, NOTE_D0,NOTE_D5,NOTE_D1,NOTE_D2,NOTE_D0, NOTE_D3,NOTE_D3,NOT

12、E_D1,NOTE_DL6, NOTE_D1, NOTE_D3,NOTE_D5,NOTE_D6,NOTE_D6, NOTE_D3,NOTE_D5,NOTE_D6,NOTE_D6, NOTE_DH1,NOTE_D0,NOTE_D7,NOTE_D5, NOTE_D6,;/这部分就是整首曲子的音符部分,用了一个序列定义为tune,整数float duration= 1,1,0.5,0.5,1, 0.5,0.5,0.5,0.5,1,0.5,0.5, 0.5,1,0.5,1,0.5,0.5, 0.5,0.5,0.5,0.5,1,1, 1,1,1+1, 0.5,1,1+0.5,1, 1,1,0.5,0.5

13、,1, 0.5,1,1+0.5,1, 0.5,0.5,0.5,0.5,1+1, 0.5,1,1+0.5,1, 1+1,0.5,0.5,1, 1+1+1+1, 0.5,0.5,0.5+0.25,0.25,0.5+0.25,0.25,0.5+0.25,0.25, 0.5,1,0.5,1,1, 0.5,0.5,0.5+0.25,0.25,0.5+0.25,0.25,0.5+0.25,0.25, 0.5,1,0.5,1,1, 1+1,0.5,0.5,1, 1+1+1+1, 0.5,1,0.5,1+1, 0.5,1,0.5,1+1, 1+1,0.5,0.5,1, 1+1+1+1;/这部分是整首曲子的接拍

14、部分,也定义个序列duration,浮点(数组的个数和前面音符的个数是一样的,一一对应么)int length;/这里定义一个变量,后面用来表示共有多少个音符int tonePin=5;/蜂鸣器的pinvoid setup() pinMode(tonePin,OUTPUT);/设置蜂鸣器的pin为输出模式 length = sizeof(tune)/sizeof(tune0);/这里用了一个sizeof函数,可以查出tone序列里有多少个音符void loop() for(int x=0;xlength;x+)/循环音符的次数 tone(tonePin,tunex);/此函数依次播放tune序

15、列里的数组,即每个音符 delay(400*durationx);/每个音符持续的时间,即节拍duration,400是调整时间的越大,曲子速度越慢,越小曲子速度越快,自己掌握吧 noTone(tonePin);/停止当前音符,进入下一音符 delay(5000);/等待5秒后,循环重新开始以下是其他程序:const int LQ=8;const int LH=9;const int RQ=7;const int RH=6;const int ENL=10;const int ENR=5; #define NOTE_B0 31#define NOTE_C1 33#define NOTE_CS1

16、 35#define NOTE_D1 37#define NOTE_DS1 39#define NOTE_E1 41#define NOTE_F1 44#define NOTE_FS1 46#define NOTE_G1 49#define NOTE_GS1 52#define NOTE_A1 55#define NOTE_AS1 58#define NOTE_B1 62#define NOTE_C2 65#define NOTE_CS2 69#define NOTE_D2 73#define NOTE_DS2 78#define NOTE_E2 82#define NOTE_F2 87#de

17、fine NOTE_FS2 93#define NOTE_G2 98#define NOTE_GS2 104#define NOTE_A2 110#define NOTE_AS2 117#define NOTE_B2 123#define NOTE_C3 131#define NOTE_CS3 139#define NOTE_D3 147#define NOTE_DS3 156#define NOTE_E3 165#define NOTE_F3 175#define NOTE_FS3 185#define NOTE_G3 196#define NOTE_GS3 208#define NOTE_

18、A3 220#define NOTE_AS3 233#define NOTE_B3 247#define NOTE_C4 262#define NOTE_CS4 277#define NOTE_D4 294#define NOTE_DS4 311#define NOTE_E4 330#define NOTE_F4 349#define NOTE_FS4 370#define NOTE_G4 392#define NOTE_GS4 415#define NOTE_A4 440#define NOTE_AS4 466#define NOTE_B4 494#define NOTE_C5 523#de

19、fine NOTE_CS5 554#define NOTE_D5 587#define NOTE_DS5 622#define NOTE_E5 659#define NOTE_F5 698#define NOTE_FS5 740#define NOTE_G5 784#define NOTE_GS5 831#define NOTE_A5 880#define NOTE_AS5 932#define NOTE_B5 988#define NOTE_C6 1047#define NOTE_CS6 1109#define NOTE_D6 1175#define NOTE_DS6 1245#define

20、 NOTE_E6 1319#define NOTE_F6 1397#define NOTE_FS6 1480#define NOTE_G6 1568#define NOTE_GS6 1661#define NOTE_A6 1760#define NOTE_AS6 1865#define NOTE_B6 1976#define NOTE_C7 2093#define NOTE_CS7 2217#define NOTE_D7 2349#define NOTE_DS7 2489#define NOTE_E7 2637#define NOTE_F7 2794#define NOTE_FS7 2960#

21、define NOTE_G7 3136#define NOTE_GS7 3322#define NOTE_A7 3520#define NOTE_AS7 3729#define NOTE_B7 3951#define NOTE_C8 4186#define NOTE_CS8 4435#define NOTE_D8 4699#define NOTE_DS8 4978/欢乐颂#define NTD0 -1#define NTD1 294#define NTD2 330#define NTD3 350#define NTD4 393#define NTD5 441#define NTD6 495#d

22、efine NTD7 556#define NTDL1 147#define NTDL2 165#define NTDL3 175#define NTDL4 196#define NTDL5 221#define NTDL6 248#define NTDL7 278#define NTDH1 589#define NTDH2 661#define NTDH3 700#define NTDH4 786#define NTDH5 882#define NTDH6 990#define NTDH7 112/列出全部D调的频率#define WHOLE 1#define HALF 0.5#define

23、 QUARTER 0.25#define EIGHTH 0.25#define SIXTEENTH 0.625/列出所有节拍int tune= /根据简谱列出各频率 NTD3,NTD3,NTD4,NTD5, NTD5,NTD4,NTD3,NTD2, NTD1,NTD1,NTD2,NTD3, NTD3,NTD2,NTD2, NTD3,NTD3,NTD4,NTD5, NTD5,NTD4,NTD3,NTD2, NTD1,NTD1,NTD2,NTD3, NTD2,NTD1,NTD1, NTD2,NTD2,NTD3,NTD1, NTD2,NTD3,NTD4,NTD3,NTD1, NTD2,NTD3,NT

24、D4,NTD3,NTD2, NTD1,NTD2,NTDL5,NTD0, NTD3,NTD3,NTD4,NTD5, NTD5,NTD4,NTD3,NTD4,NTD2, NTD1,NTD1,NTD2,NTD3, NTD2,NTD1,NTD1;float durt= /根据简谱列出各节拍 1,1,1,1, 1,1,1,1, 1,1,1,1, 1+0.5,0.5,1+1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1+0.5,0.5,1+1, 1,1,1,1, 1,0.5,0.5,1,1, 1,0.5,0.5,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,0.5,0.5, 1,

25、1,1,1, 1+0.5,0.5,1+1,;int length;int tonepin=3; /得用6号接口int melody = NOTE_G4,/5 NOTE_G4,/5NOTE_A4,/6NOTE_G4,/5NOTE_C5,/1.NOTE_B4,/70,NOTE_G4,/5NOTE_G4,/5NOTE_A4,/6NOTE_G4,/5NOTE_D5,/2.NOTE_C5,/1.0,NOTE_G4,/5NOTE_G4,/5NOTE_G5,/5.NOTE_E5,/3.NOTE_C5,/1.NOTE_B4,/7NOTE_A4,/60,NOTE_F5,/4.NOTE_F5,/4.NOTE_E5

26、,/3.NOTE_C5,/1.NOTE_D5,/2.NOTE_C5,/1.0,;int noteDurations = 8,8,4,4,4,4, 4, 8,8,4,4,4,4, 4, 8,8,4,4,4,4,2, 8, 8,8,4,4,4,2, 4,;/*Happy Birthday Tone for Daner.Made by TAHO on 6th,Nov. 2013emailtahoroom/emailversion 1.0 */ const int trig=A1;const int echo=A0;int sensor =A2; /设置传感器信号输出端接到Arduino板子上的Pin

27、2端口int val = 0;void setup() pinMode(ENR,OUTPUT);pinMode(ENL,OUTPUT);pinMode(RQ,OUTPUT);pinMode(RH,OUTPUT);pinMode(LQ,OUTPUT);pinMode(LH,OUTPUT);pinMode(tonepin,OUTPUT);length=sizeof(tune)/sizeof(tune0); /计算长度pinMode(echo,INPUT);pinMode(trig,OUTPUT);/ iterate over the notes of the melody: pinMode(11,

28、OUTPUT);/for light pinMode(12,OUTPUT);/for light pinMode(13,OUTPUT);/for light pinMode(sensor, INPUT); / 设置为输入数字管脚 Serial.begin(9600); void loop() Run(Q,10,150);long time=0;while(1) digitalWrite(trig,1);delay(15);digitalWrite(trig,0);time=pulseIn(echo,HIGH);float s=time/58.00;Serial.println(s);if(s2

29、0) Baojing(); digitalWrite(3,1); delay(100); / no need to repeat the melody. val = digitalRead(sensor); / 读取输入引脚 delay(100); Serial.println(val); if(val=1) play();/Play the music. digitalWrite(3,0); / delay(100);/Pause for a while. void Baojing() for(int j=0;j2;j+) for(int i=200;i=200;i-=3) pinMode(3,OUTPUT); tone(3,i); delay(10); void play() for (in

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1