嵌入式系統(tǒng)-自主設(shè)計實驗報告_第1頁
嵌入式系統(tǒng)-自主設(shè)計實驗報告_第2頁
嵌入式系統(tǒng)-自主設(shè)計實驗報告_第3頁
嵌入式系統(tǒng)-自主設(shè)計實驗報告_第4頁
嵌入式系統(tǒng)-自主設(shè)計實驗報告_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

深圳大學(xué)實驗報告課程名稱:嵌入式系統(tǒng)實驗項目名稱:智能小車設(shè)計學(xué)院:信息工程學(xué)院,計算機(jī)軟件學(xué)院專業(yè):指導(dǎo)教師:李堅強(qiáng)報告人:學(xué)號:實驗時間:實驗報告提交時間:教務(wù)部制實驗?zāi)康模鹤灾髟O(shè)計利用喇叭設(shè)計出不同音樂實驗原理:

本文很簡單,需要用到的材料:adruinouno一塊(其他也可),面保線若干條,蜂鳴器或小喇叭一個(小喇叭更好蜂鳴器要接電阻不然聲音有點刺耳)

連接方法如圖:

首先講下簡單的樂理知識,知道音樂是怎么演奏出來的自然就可以通過代碼來進(jìn)行編排了。

1.演奏單音符一首樂曲有若干音符組成,一個音符對應(yīng)一個頻率。知道到相對應(yīng)的頻率讓arduino輸出到蜂鳴器蜂鳴器就會放出相應(yīng)的聲音,這里有個表供大家參考:

2.音符的演奏時間我們知道了音符是如何演奏出來的,下一步就是控制音符的演奏時間。每個音符都會播放一定的時間,這樣才能構(gòu)成一首優(yōu)美的曲子,而不是生硬的一個調(diào)的把所有的音符一股腦的都播放出來。如何確定每個音符演奏的單位時間呢?

我們知道,音符節(jié)奏分為一拍、半拍、1/4拍、1/8拍,我們規(guī)定一拍音符的時間為1;半拍為0.5;1/4拍為0.25;1/8拍為0.125……,所以我們可以為每個音符賦予這樣的拍子播放出來,音樂就成了。

以葫蘆娃為例:

先看下左上角1=D這里,用的是D調(diào),好那就看《音符頻率表》中的D行(紅色部分)

第一個音符是1但上面有個點,所以對應(yīng)的就是589,時間是一拍=1,

第二個音符6(沒有點)就是495,時間也是一拍=1,

第三個音符5即441,因為有下劃線所以是半拍=0.5,

……以此類推

第四0這里要注意下,這里是沒有聲音,但是要是用頻率0表示還是會有聲音(這個不懂),所以用一個很高頻率的聲音,這樣人耳聽不到就達(dá)到了沒有聲音的效果,所以頻率為-1。拍子=1拍

第五,再接著看到第一句歌詞葫蘆娃這個娃的音是3—,這表示是兩拍,后面每加一個“-”,表示拍子+1(1+1),本例中最多是加到4.

第六,第二句歌詞葫蘆娃這個娃,3?帶個點,點的意思是去3的拍子的一半,即3?的拍子是1+0.5

第七,這在音樂中屬于連音,要表示的話,可以稍微改下連音后面那個音的頻率,比如減少或增加一些數(shù)值(需自己調(diào)試),這樣表現(xiàn)會更流暢,但操作上更復(fù)雜了,本例沒有做連音的處理,實驗中還利用超聲波測距與紅外線配合使用:當(dāng)超聲波檢測前面有障礙物時候發(fā)出警報,其他情況下,便放音樂超聲波傳感器原理:基本工作原理:(1)采用IO口TRIG觸發(fā)測距,給至少10us的高電平信號;(2)模塊自動發(fā)送8個40khz的方波,自動檢測是否有信號返回;(3)有信號返回,通過IO口ECHO輸出一個高電平,高電平持續(xù)的時間就是超聲波從發(fā)射到返回的時間。測試距離=(高電平時間*聲速(340M/S))/2;

本模塊使用方法簡單,一個控制口發(fā)一個10US以上的高電平,就可以在接收口等待高電平輸出.一有輸出就可以開定時器計時,當(dāng)此口變?yōu)榈碗娖綍r就可以讀定時器的值,此時就為此次測距的時間,方可算出距離.如此不斷的周期測,即可以達(dá)到你移動測量的值

5、操作:初始化時將trig和echo端口都置低,首先向給trig 發(fā)送至少10us的高電平脈沖(模塊自動向外發(fā)送8個40K的方波),然后等待,捕捉echo端輸出上升沿,捕捉到上升沿的同時,打開定時器開始計時,再次等待捕捉echo的下降沿,當(dāng)捕捉到下降沿,讀出計時器的時間,這就是超聲波在空氣中運行的時間,按照測試距離=(高電平時間*聲速(340M/S))/2就可以算出超聲波到障礙物的距離。紅外線感應(yīng)傳感器原理:人體熱釋電紅外線傳感器的工作原理及特性普通人體會發(fā)射10um左右的特定波長紅外線,用專門設(shè)計的傳感器就可以針對性的檢測這種紅外線的存在與否,當(dāng)人體紅外線照射到傳感器上后,因熱釋電效應(yīng)將向外釋放電荷,后續(xù)電路經(jīng)檢測處理后就能產(chǎn)生控制信號。這種專門設(shè)計的探頭只對波長為10μm左右的紅外輻射敏感,所以除人體以外的其他物體不會引發(fā)探頭動作。探頭內(nèi)包含兩個互相串聯(lián)或并聯(lián)的熱釋電元,而且制成的兩個電極化方向正好相反,環(huán)境背景輻射對兩個熱釋元件幾乎具有相同的作用,使其產(chǎn)生釋電效應(yīng)相互抵消,于是探測器無信號輸出。一旦人侵入探測區(qū)域內(nèi),人體紅外輻射通過部分鏡面聚焦,并被熱釋電元接收,但是兩片熱釋電元接收到的熱量不同,熱釋電也不同,不能抵消,于是輸出檢測信號。為了增強(qiáng)敏感性并降低白光干擾,通常在探頭的輻射照面覆蓋有特殊的菲泥爾濾光透鏡,菲泥爾濾光片根據(jù)性能要求不同,具有不同的焦距(感應(yīng)距離),從而產(chǎn)生不同的監(jiān)控視場,視場越多,控制越嚴(yán)密。實驗步驟:#defineNOTE_D0-1#defineNOTE_D1294#defineNOTE_D2330#defineNOTE_D3350#defineNOTE_D4393#defineNOTE_D5441#defineNOTE_D6495#defineNOTE_D7556#defineNOTE_DL1147#defineNOTE_DL2165#defineNOTE_DL3175#defineNOTE_DL4196#defineNOTE_DL5221#defineNOTE_DL6248#defineNOTE_DL7278#defineNOTE_DH1589#defineNOTE_DH2661#defineNOTE_DH3700#defineNOTE_DH4786#defineNOTE_DH5882#defineNOTE_DH6990#defineNOTE_DH7112//以上部分是定義是把每個音符和頻率值對應(yīng)起來,其實不用打這么多,但是都打上了,后面可以隨意編寫D調(diào)的各種歌,我這里用NOTE_D+數(shù)字表示音符,NOTE_DH+數(shù)字表示上面有點的那種音符,NOTE_DL+數(shù)字表示下面有點的那種音符。這樣后面寫起來比較好識別。#defineWHOLE1#defineHALF0.5#defineQUARTER0.25#defineEIGHTH0.25#defineSIXTEENTH0.625//這部分是用英文對應(yīng)了拍子,這樣后面也比較好看inttune[]={NOTE_DH1,NOTE_D6,NOTE_D5,NOTE_D6,NOTE_D0,NOTE_DH1,NOTE_D6,NOTE_D5,NOTE_DH1,NOTE_D6,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,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,NOTE_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,整數(shù)floatduration[]={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,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};//這部分是整首曲子的接拍部分,也定義個序列duration,浮點(數(shù)組的個數(shù)和前面音符的個數(shù)是一樣的,一一對應(yīng)么)intlength;//這里定義一個變量,后面用來表示共有多少個音符inttonePin=5;//蜂鳴器的pinvoidsetup(){pinMode(tonePin,OUTPUT);//設(shè)置蜂鳴器的pin為輸出模式length=sizeof(tune)/sizeof(tune[0]);//這里用了一個sizeof函數(shù),可以查出tone序列里有多少個音符}voidloop(){for(intx=0;x<length;x++)//循環(huán)音符的次數(shù){tone(tonePin,tune[x]);//此函數(shù)依次播放tune序列里的數(shù)組,即每個音符delay(400*duration[x]);//每個音符持續(xù)的時間,即節(jié)拍duration,400是調(diào)整時間的越大,曲子速度越慢,越小曲子速度越快,自己掌握吧noTone(tonePin);//停止當(dāng)前音符,進(jìn)入下一音符}delay(5000);//等待5秒后,循環(huán)重新開始}以下是其他程序:constintLQ=8;constintLH=9;constintRQ=7;constintRH=6;constintENL=10;constintENR=5;#defineNOTE_B031#defineNOTE_C133#defineNOTE_CS135#defineNOTE_D137#defineNOTE_DS139#defineNOTE_E141#defineNOTE_F144#defineNOTE_FS146#defineNOTE_G149#defineNOTE_GS152#defineNOTE_A155#defineNOTE_AS158#defineNOTE_B162#defineNOTE_C265#defineNOTE_CS269#defineNOTE_D273#defineNOTE_DS278#defineNOTE_E282#defineNOTE_F287#defineNOTE_FS293#defineNOTE_G298#defineNOTE_GS2104#defineNOTE_A2110#defineNOTE_AS2117#defineNOTE_B2123#defineNOTE_C3131#defineNOTE_CS3139#defineNOTE_D3147#defineNOTE_DS3156#defineNOTE_E3165#defineNOTE_F3175#defineNOTE_FS3185#defineNOTE_G3196#defineNOTE_GS3208#defineNOTE_A3220#defineNOTE_AS3233#defineNOTE_B3247#defineNOTE_C4262#defineNOTE_CS4277#defineNOTE_D4294#defineNOTE_DS4311#defineNOTE_E4330#defineNOTE_F4349#defineNOTE_FS4370#defineNOTE_G4392#defineNOTE_GS4415#defineNOTE_A4440#defineNOTE_AS4466#defineNOTE_B4494#defineNOTE_C5523#defineNOTE_CS5554#defineNOTE_D5587#defineNOTE_DS5622#defineNOTE_E5659#defineNOTE_F5698#defineNOTE_FS5740#defineNOTE_G5784#defineNOTE_GS5831#defineNOTE_A5880#defineNOTE_AS5932#defineNOTE_B5988#defineNOTE_C61047#defineNOTE_CS61109#defineNOTE_D61175#defineNOTE_DS61245#defineNOTE_E61319#defineNOTE_F61397#defineNOTE_FS61480#defineNOTE_G61568#defineNOTE_GS61661#defineNOTE_A61760#defineNOTE_AS61865#defineNOTE_B61976#defineNOTE_C72093#defineNOTE_CS72217#defineNOTE_D72349#defineNOTE_DS72489#defineNOTE_E72637#defineNOTE_F72794#defineNOTE_FS72960#defineNOTE_G73136#defineNOTE_GS73322#defineNOTE_A73520#defineNOTE_AS73729#defineNOTE_B73951#defineNOTE_C84186#defineNOTE_CS84435#defineNOTE_D84699#defineNOTE_DS84978//歡樂頌#defineNTD0-1#defineNTD1294#defineNTD2330#defineNTD3350#defineNTD4393#defineNTD5441#defineNTD6495#defineNTD7556#defineNTDL1147#defineNTDL2165#defineNTDL3175#defineNTDL4196#defineNTDL5221#defineNTDL6248#defineNTDL7278#defineNTDH1589#defineNTDH2661#defineNTDH3700#defineNTDH4786#defineNTDH5882#defineNTDH6990#defineNTDH7112//列出全部D調(diào)的頻率#defineWHOLE1#defineHALF0.5#defineQUARTER0.25#defineEIGHTH0.25#defineSIXTEENTH0.625//列出所有節(jié)拍inttune[]=//根據(jù)簡譜列出各頻率{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,NTD4,NTD3,NTD2,NTD1,NTD2,NTDL5,NTD0,NTD3,NTD3,NTD4,NTD5,NTD5,NTD4,NTD3,NTD4,NTD2,NTD1,NTD1,NTD2,NTD3,NTD2,NTD1,NTD1};floatdurt[]=//根據(jù)簡譜列出各節(jié)拍{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,1,1,1,1+0.5,0.5,1+1,};intlength;inttonepin=3;//得用6號接口intmelody[]={NOTE_G4,//5NOTE_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,//3.NOTE_C5,//1.NOTE_D5,//2.NOTE_C5,//1.0,};intnoteDurations[]={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,};/*HappyBirthdayToneforDaner.MadebyTAHOon6th,Nov.2013[email]tahoroom@163.com[/email]version1.0*/constinttrig=A1;constintecho=A0;intsensor=A2;//設(shè)置傳感器信號輸出端接到Arduino板子上的Pin2端口intval=0;voidsetup(){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(tune[0]);//計算長度pinMode(echo,INPUT);pinMode(trig,OUTPUT);//iterateoverthenotesofthemelody:pinMode(11,OUTPUT);//forlightpinMode(12,OUTPUT);//forlightpinMode(13,OUTPUT);//forlightpinMode(sensor,INPUT);//設(shè)置為輸入數(shù)字管腳Serial.begin(9600);}voidloop(){Run('Q',10,150);longtime=0;while(1){digitalWrite(trig,1);delay(15);digitalWrite(trig,0);time=pulseIn(echo,HIGH);floats=time/58.00;Serial.println(s);if(s<20){Baojing();digitalWrite(3,1);delay(100);}//noneedtorepeatthemelody.val=digitalRead(sensor);//讀取輸入引腳delay(100);Serial.println(val);if(val==1){play();//Playthemusic.digitalWrite(3,0);//delay(100);//Pauseforawhile.}}}voidBaojing(){for(intj=0;j<2;j++){for(inti=200;i<=800;i+=3)//用循環(huán)的方式將頻率從200HZ增加到800HZ{pinMode(3,OUTPUT);tone(3,i);//在四號端口輸出頻率delay(5);//該頻率維持5毫秒}delay(2000);//最高頻率下維持4秒鐘for(inti=800;i>=200;i-=3){pinMode(3,OUTPUT);tone(3,i);delay(10);}}}voidplay(){for(intthisNote=0;thisNote<29;thisNote++){//tocalculatethenoteduration,takeonesecond//dividedbythenotetype.//e.g.quarternote=1000/4,eighthnote=1000/8,etc.intnoteDuration=1000/noteDurations[thisNote];tone(3,melody[thisNote],noteDuration);//todistinguishthenotes,setaminimumtimebetweenthem.//thenote'sdu

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論