版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 機(jī)器人課程設(shè)計(jì)</b></p><p><b> 目錄</b></p><p><b> 第一章 緒言1</b></p><p> 1.1、目的和意義1</p><p> 1.2、設(shè)計(jì)內(nèi)容2</p><p>
2、 1.2.1、機(jī)器人硬件2</p><p> 1.2.2、設(shè)計(jì)任務(wù)2</p><p> 1.3、運(yùn)行框圖3</p><p> 第二章 機(jī)器人觸覺導(dǎo)航3</p><p> 2.1、安裝并測(cè)試機(jī)器人胡須4</p><p> 2.2、測(cè)試觸須傳感器6</p><p> 2.3
3、、C語言程序如下6</p><p> 第三章 機(jī)器人紅外導(dǎo)航10</p><p> 3.1、使用紅外線發(fā)射和接收器件探測(cè)道路10</p><p> 3.2、搭建并測(cè)試IR發(fā)射和探測(cè)器11</p><p> 3.3、測(cè)試紅外發(fā)射探測(cè)器11</p><p> 3.4、探測(cè)和避開障礙物12</
4、p><p> 第四章 心得體會(huì)15</p><p><b> 第一章 緒言</b></p><p><b> 1.1、目的和意義</b></p><p> 機(jī)器人涉及機(jī)械、電子、傳感、控制等多個(gè)領(lǐng)域和學(xué)科。本課程設(shè)計(jì)是在《機(jī)器人學(xué)》課程的基礎(chǔ)上,利用多傳感技術(shù)、控制技術(shù)實(shí)現(xiàn)機(jī)器人控制系統(tǒng)的
5、綜合與應(yīng)用,達(dá)到鍛煉學(xué)生綜合設(shè)計(jì)能力的目的。</p><p><b> 1.2、設(shè)計(jì)內(nèi)容</b></p><p> 1.2.1、機(jī)器人硬件</p><p> 本課程設(shè)計(jì)使用實(shí)驗(yàn)室已有的移動(dòng)機(jī)器人。機(jī)器人有兩個(gè)驅(qū)動(dòng)輪、一個(gè)從動(dòng)輪,驅(qū)動(dòng)輪由舵機(jī)直接驅(qū)動(dòng)。機(jī)器人控制器為89S52單片機(jī)。</p><p> 圖1 機(jī)器人
6、結(jié)構(gòu)簡(jiǎn)圖</p><p> 1.2.2、設(shè)計(jì)任務(wù)</p><p> 利用多傳感器技術(shù),實(shí)現(xiàn)對(duì)機(jī)器人的軌跡規(guī)劃及控制。具體為:控制機(jī)器人在規(guī)定的場(chǎng)地內(nèi)避開障礙物走遍整個(gè)場(chǎng)地。</p><p> 場(chǎng)地長(zhǎng)1.8m,寬1.5m,場(chǎng)地四周為高0.3m的擋板。場(chǎng)地如圖2所示。</p><p><b> 1.3、運(yùn)行框圖</b>
7、;</p><p> 第二章 機(jī)器人觸覺導(dǎo)航</p><p> 本章你將通過給你的機(jī)器人增加觸覺傳感器學(xué)習(xí)如何使用這些端口來獲取外界信息。實(shí) 際上,對(duì)于任何一個(gè)自動(dòng)化系統(tǒng)(不僅僅是機(jī)器人),無非都是通過傳感器獲取外界信息,通過接口進(jìn)入計(jì)算機(jī)(或者單片機(jī)),由計(jì)算機(jī)或單片機(jī)根據(jù)反饋信息進(jìn)行計(jì)算和決策,生成控制命令,然后通過輸出接口去控制系統(tǒng)相應(yīng)的執(zhí)行機(jī)構(gòu),完成系統(tǒng)所要完成的任務(wù)。因此,學(xué)
8、習(xí)如何使用單片機(jī)的輸入接口同學(xué)習(xí)使用輸出接口同等重要。 </p><p> 許多自動(dòng)化機(jī)械都依賴于各種觸覺型開關(guān),例如當(dāng)機(jī)器人碰到障礙物時(shí),接觸開關(guān)就會(huì)察覺,通過編程讓機(jī)器人躲開障礙物;旅客登機(jī)橋在靠近飛機(jī)時(shí)為了保護(hù)昂貴的飛機(jī),在登 機(jī)橋接口安裝觸須,當(dāng)?shù)菣C(jī)橋離飛機(jī)很近后觸須就會(huì)碰到飛機(jī),立即通知控制器提醒離飛機(jī)已經(jīng)很近了,需要降低靠近速度;工廠利用觸覺開關(guān)來計(jì)量生產(chǎn)線上的工件數(shù)量;在工業(yè)加工過程中,也被用來
9、排列物體。在所有這些實(shí)例中,觸覺開關(guān)提供的輸入通過計(jì)算機(jī)或者單片機(jī)處理后生成其它形式的程序化的輸出。 </p><p> 本章中,你將在機(jī)器人前端安裝并測(cè)試一個(gè)稱為胡須的觸覺開關(guān)。你將對(duì)機(jī)器人大腦編程來監(jiān)視觸覺開關(guān)的狀態(tài),以及決定當(dāng)它遇到障礙物時(shí)如何動(dòng)作。最終的結(jié)果就是通過觸覺給機(jī)器人自動(dòng)導(dǎo)航。</p><p> 2.1、安裝并測(cè)試機(jī)器人胡須</p><p>
10、 編程讓機(jī)器人通過觸覺胡須導(dǎo)航之前,首先必須安裝并測(cè)試胡須。圖3所示是安裝機(jī)器人觸覺胡須所需的硬件元件清單,包括: </p><p> 1. 金屬絲2根 </p><p> 2. 平頭M3×22盤頭螺釘2個(gè) </p><p> 3. 13mm圓形立柱2個(gè) </p><p> 4. M3尼龍墊圈2個(gè) </p&g
11、t;<p> 5. 3-pin公-公接頭2個(gè) </p><p> 6. 220Ω電阻2個(gè) </p><p> 7. 10kΩ電阻2個(gè) </p><p><b> 圖3 胡須硬件</b></p><p><b> 安裝胡須 </b></p><p&
12、gt; 1.拆掉連接主板到前支架的兩顆螺釘</p><p> 2.參考圖4,進(jìn)行下面操作 </p><p> 3.螺釘依次穿過M3尼龍墊圈、13mm圓 形立柱 </p><p> 4.螺釘穿過主板上的圓孔之后,擰進(jìn)主板下面的支架中,但不要擰緊 </p><p> 5.把須狀金屬絲的其中一個(gè)鉤在尼龍墊圈之上,另一個(gè)鉤在尼龍墊圈之
13、下,調(diào)整它們的位置使它們橫向交 叉但又不接觸 </p><p> 6. 擰緊螺釘?shù)街Ъ苌?</p><p> 7.參考接線圖5,搭建胡須電路。 </p><p> 注意:右邊胡須狀態(tài)信息輸入是通過P1口的第4腳完成,而左邊胡須狀態(tài)信息輸入是通過P2口的第3腳完成 </p><p&g
14、t; 8.確定兩條胡須比較靠近,但又不接觸面包板上的3-pin頭。推薦保持3 mm的距離。 </p><p> 9.圖6所示是實(shí)際的參考接線圖。 </p><p> 10.安裝好觸覺胡須的機(jī)器人如圖7所示。 </p><p> 圖4 安裝機(jī)器人胡須 </p><p> 圖5 胡須電路示意圖</p><
15、p> 圖6教學(xué)底板上胡須接線圖 圖7 安裝好觸須的機(jī)器人</p><p> 2.2、測(cè)試觸須傳感器</p><p> 先執(zhí)行一段簡(jiǎn)單的程序,下面的程序是讓小車前行的,修改參數(shù)調(diào)舵機(jī),使舵機(jī)保持前行,然后在通過設(shè)置程序讓左須子觸碰障礙物時(shí)左轉(zhuǎn),右須子觸碰障礙物是右轉(zhuǎn),這樣進(jìn)行調(diào)試,來檢測(cè)傳感器。</p><p>
16、 死區(qū)程序很關(guān)鍵,以中斷的方式寫入,避免其一直困在墻角里出不來。</p><p> 2.3、C語言程序如下</p><p> #include<BoeBot.h></p><p> #include<uart.h></p><p> int P1_4state(void)//獲取P1_4的狀態(tài),右胡須<
17、/p><p> {return (P1&0x10)?1:0;}</p><p> int P2_3state(void)//獲取P2_3的狀態(tài),左胡須</p><p> {return (P2&0x08)?1:0;}</p><p> void Forward(void)</p><p> {
18、 P1_1=1;</p><p> delay_nus(1700);</p><p><b> P1_1=0;</b></p><p><b> P1_0=1;</b></p><p> delay_nus(1300);</p><p><b> P1_0
19、=0;</b></p><p> delay_nms(20);}</p><p> void siqu(void) interrupt 0</p><p> { if(condition1)</p><p> { commands for condition1</p><p> If(condit
20、ion2)</p><p> { commands for both condition2 and condition1}</p><p><b> else</b></p><p> { commands for conditio1 but not condition2}}</p><p><b>
21、Else</b></p><p> { commands for not condition1}</p><p> void Left_Turn(void)</p><p><b> { int i;</b></p><p> for(i=1;i<=26;i++)</p><
22、p><b> {P1_1=1;</b></p><p> delay_nus(1300);</p><p><b> P1_1=0;</b></p><p><b> P1_0=1;</b></p><p> delay_nus(1300);</p>
23、;<p><b> P1_0=0;</b></p><p> delay_nms(20);}}</p><p> void Right_Turn(void)</p><p> { int i;</p><p> for(i=1;i<=26;i++)</p><p&g
24、t;<b> {P1_1=1;</b></p><p> delay_nus(1700);</p><p><b> P1_1=0;</b></p><p><b> P1_0=1;</b></p><p> delay_nus(1700);</p>
25、<p><b> P1_0=0;</b></p><p> delay_nms(20);}}</p><p> void Backward(void)</p><p> { int i;</p><p> for(i=1;i<=65;i++)</p><p><
26、b> {P1_1=1;</b></p><p> delay_nus(1300);</p><p><b> P1_1=0;</b></p><p><b> P1_0=1;</b></p><p> delay_nus(1700);</p><p&
27、gt;<b> P1_0=0;</b></p><p> delay_nms(20);</p><p><b> }}</b></p><p> int main(void)</p><p> {int i=1;</p><p><b> int z=
28、0;</b></p><p> uart_Init();</p><p> printf("Program Running!\n");</p><p><b> while(1)</b></p><p> {if((P1_4state()==0)&&(P2_3sta
29、te()==0))</p><p><b> {if(z==0)</b></p><p> {Backward(); //向后</p><p> Left_Turn();//向左</p><p> for(i;i<100;i++) </p><p> { P1_1=1;&l
30、t;/p><p> delay_nus(1700);</p><p><b> P1_1=0;</b></p><p><b> P1_0=1;</b></p><p> delay_nus(1300);</p><p><b> P1_0=0;</b&
31、gt;</p><p> delay_nms(20);} </p><p> Left_Turn();//向左</p><p><b> z=1;}</b></p><p><b> else</b></p><p> {Backward(); //向后<
32、/p><p> Right_Turn();//向右</p><p> for(i;i<100;i++) </p><p> { P1_1=1;</p><p> delay_nus(1700);</p><p><b> P1_1=0;</b></p><p
33、><b> P1_0=1;</b></p><p> delay_nus(1300);</p><p><b> P1_0=0;</b></p><p> delay_nms(20);} </p><p> Right_Turn();//向右</p><p&g
34、t;<b> z=0;}}</b></p><p> else if(P1_4state()==0)</p><p> {if(z==0)</p><p> {Backward(); //向后</p><p> Left_Turn();//向左</p><p> for(i;i<
35、;100;i++) </p><p> { P1_1=1;</p><p> delay_nus(1700);</p><p><b> P1_1=0;</b></p><p><b> P1_0=1;</b></p><p> delay_nus(1300
36、);</p><p><b> P1_0=0;</b></p><p> delay_nms(20);} </p><p> Left_Turn();//向左</p><p><b> z=1;}</b></p><p><b> else</b
37、></p><p> {Backward(); //向后</p><p> Right_Turn();//向右</p><p> for(i;i<100;i++) </p><p> { P1_1=1;</p><p> delay_nus(1700);</p><p&
38、gt;<b> P1_1=0;</b></p><p><b> P1_0=1;</b></p><p> delay_nus(1300);</p><p><b> P1_0=0;</b></p><p> delay_nms(20);} </p>
39、<p> Right_Turn();//向右</p><p><b> z=0;}}</b></p><p> else if(P2_3state()==0)</p><p> {if(z==0)</p><p> {Backward(); //向后</p><p> L
40、eft_Turn();//向左</p><p> for(i;i<100;i++) </p><p> { P1_1=1;</p><p> delay_nus(1700);</p><p><b> P1_1=0;</b></p><p><b> P1_0=1
41、;</b></p><p> delay_nus(1300);</p><p><b> P1_0=0;</b></p><p> delay_nms(20);} </p><p> Left_Turn();//向左</p><p><b> z=1;}<
42、/b></p><p><b> else</b></p><p> {Backward(); //向后</p><p> Right_Turn();//向右</p><p> for(i;i<100;i++) </p><p> { P1_1=1;</p>
43、;<p> delay_nus(1700);</p><p><b> P1_1=0;</b></p><p><b> P1_0=1;</b></p><p> delay_nus(1300);</p><p><b> P1_0=0;</b><
44、/p><p> delay_nms(20);} </p><p> Right_Turn();//向右</p><p><b> z=0;}}</b></p><p><b> else </b></p><p> Forward();//向前</p>
45、<p><b> }</b></p><p><b> }</b></p><p> 將上述程序下載到小車中進(jìn)行調(diào)試。</p><p> 第三章 機(jī)器人紅外導(dǎo)航</p><p> 現(xiàn)在許多遙控裝置和PDA都使用頻率低于可見光的紅外線進(jìn)行通信,而機(jī)器人則可以使用紅外線進(jìn)行導(dǎo)航
46、??梢允褂靡恍﹥r(jià)格非常便宜且應(yīng)用廣泛的部件,讓機(jī)器人的C51微控制器可以收發(fā)紅外光信號(hào),從而實(shí)現(xiàn)機(jī)器人的紅外線導(dǎo)航。 </p><p> 3.1、使用紅外線發(fā)射和接收器件探測(cè)道路 </p><p> 許多機(jī)器人使用雷達(dá)(RADAR)或者聲納(SONAR)來探測(cè)物體而不需同物體接觸。我們使用紅外光來照射機(jī)器人前進(jìn)的路線,然后確定何時(shí)有光線從被探測(cè)目標(biāo)反射回來,通過檢測(cè)反射回來的紅外光就
47、可以確定前方是否有物體。由于紅外遙控 技術(shù)的發(fā)展,現(xiàn)在紅外線發(fā)射器和接收器已經(jīng)很普及并且價(jià)格很便宜。這對(duì)于機(jī)器人愛好者而言是一個(gè)好消息。 </p><p><b> 紅外前燈 </b></p><p> 你將要在機(jī)器人上建立的紅外光探測(cè)物體系統(tǒng)在許多方面就象汽車的前燈系統(tǒng)。當(dāng)汽車 </p><p> 前燈射出的光從障礙物體反射回來時(shí),人的
48、眼睛就發(fā)現(xiàn)了障礙物體,然后大腦處理這些信息, </p><p> 并據(jù)此控制身體動(dòng)作駕駛汽車。機(jī)器人使用紅外線二極管LED作為前燈,如圖8所示。 </p><p> 圖8 用紅外光探測(cè)障礙物 圖9 本章需要用到的新部件 </p><p> 紅外線二極管發(fā)射紅外光,如果機(jī)器人前面有障礙物,紅外線從物體反射回來,相當(dāng)于機(jī)器人
49、眼睛的紅外檢測(cè)(接收)器,檢測(cè)到反射回的紅外光線,并發(fā)出信號(hào)來表明檢測(cè)到從物體反射回紅外線。機(jī)器人的大腦——單片機(jī)AT89S52基于這個(gè)傳感器的輸入控制伺服電機(jī)。 </p><p> 紅外線(IR)接收/檢測(cè)器有內(nèi)置的光濾波器,除了需要檢測(cè)的980 nm波長(zhǎng)的紅外線外, 它幾乎不允許其它光通過。紅外檢測(cè)器還有一個(gè)電子濾波器,它只允許大約38.5 kHz 的電信號(hào)通過。換句話說,檢測(cè)器只尋找每秒閃爍38,500
50、次的紅外光。這就防止了普通光源象太陽光和室內(nèi)光對(duì)IR的干涉。太陽光是直流干涉 (0Hz)源,而室內(nèi)光依賴于所在區(qū)域的主電源,閃爍頻率接近100或120 Hz。由于120 Hz在電子濾波器的38.5 kHz通帶頻率之外,它完全被IR探測(cè)器忽略。 </p><p> 3.2、搭建并測(cè)試IR發(fā)射和探測(cè)器</p><p> 本任務(wù)中,我們將搭建并測(cè)試紅外線發(fā)射和檢測(cè)器。 </p>
51、<p><b> 元件清單: </b></p><p> (1) 兩個(gè)紅外檢測(cè)器 </p><p> (2) 兩個(gè)IR LED </p><p> (3) 四個(gè)470□電阻 </p><p> (4) 兩個(gè)9013三極管 </p><p><b> 搭
52、建紅外線前燈 </b></p><p> 電路板的每個(gè)角安裝一個(gè)IR組(IR LED和檢測(cè)器)</p><p><b> 電路圖如圖10</b></p><p> 圖10 左側(cè)和右側(cè)IR組原理圖</p><p> 3.3、測(cè)試紅外發(fā)射探測(cè)器 </p><p> 用P1_
53、3發(fā)送持續(xù)1毫秒的38.5kHz的紅外光,如果紅外光被小車路徑上的物體反射回來,紅外檢測(cè)器將給微控制器發(fā)送一個(gè)信號(hào),讓它知道已經(jīng)檢測(cè)到反射回的紅外光。 </p><p> 讓每個(gè)IR LED 探測(cè)器組工作的關(guān)鍵是發(fā)送1毫秒頻率為38.5 kHz的紅外信號(hào),然后立刻將IR探測(cè)器的輸出存儲(chǔ)到一個(gè)變量中。下面是一個(gè)例子,它發(fā)送38.5 kHz信號(hào)給連接到P1_3 的IR發(fā)射器,然后用整型變量irDetectLeft
54、存儲(chǔ)連接到P1_2的IR探測(cè)器的輸出。 </p><p> for(counter=0;counter<38;counter++) </p><p><b> { </b></p><p><b> P1_3=1; </b></p><p> delay_nus(13); </
55、p><p><b> P1_3=0; </b></p><p> delay_nus(13); </p><p><b> } </b></p><p> irDetectLeft=P1_2state(); </p><p> 上述代碼給P1_3輸出的信號(hào)高電平13微秒
56、,低電平為13微秒,總周期為26微秒,即頻率 </p><p> 約為38.5kHz??偣草敵?8個(gè)周期的信號(hào),即持續(xù)時(shí)間約為1毫秒(38*26約等于1000微秒)。 </p><p> 當(dāng)沒有紅外信號(hào)返回時(shí),探測(cè)器的輸出狀態(tài)為高。當(dāng)它探測(cè)到被物體反射的38500Hz紅外信號(hào)時(shí),它的輸出為低。因紅外信號(hào)發(fā)送的持續(xù)時(shí)間為1毫秒,因此IR探測(cè)器的輸出如果處于低,其持續(xù)狀態(tài)也不會(huì)超過1毫秒
57、,因此發(fā)送完信號(hào)后必須立即將IR探測(cè)器的輸出存儲(chǔ)到變量中。這些存儲(chǔ)的值會(huì)顯示在調(diào)試終端或被機(jī)器人用來導(dǎo)航。</p><p> 輸入保存運(yùn)行程序 進(jìn)行調(diào)試</p><p> 當(dāng)你將物體移開時(shí) 是否顯示</p><p> irdetectleft=1?</p><p> 3.4、探測(cè)和避開障礙物</p><p>
58、 改變觸須程序使其適應(yīng)IR檢測(cè)和躲避</p><p> 3.4.1調(diào)用函數(shù)<Void IRLaunch (unsigned char IR)來進(jìn)行紅外線發(fā)射></p><p> Void IRLaunch(unsigned char IR)</p><p> { int counter</p><p> If(IR=’L’
59、)</p><p> For (counter=0.counter<38;counter++)//左邊發(fā)射</p><p> {LeftLaunch=1 </p><p> _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); </p><p> _nop_(); _no
60、p_(); _nop_(); _nop_(); _nop_(); _nop_();</p><p> LeftLaunch=0; </p><p> _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); </p><p> _nop_(); _nop_(); _nop_(); _nop_(); _no
61、p_(); _nop_(); </p><p><b> } </b></p><p> if(IR 'R') </p><p> for(counter=0;counter<38;counter++)//右邊發(fā)射 </p><p><b> { </b>
62、;</p><p> RightLaunch=1; </p><p> _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); </p><p> _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); </p><p> R
63、ightLaunch=0; </p><p> _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); </p><p> _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); </p><p><b> } </b><
64、/p><p><b> } </b></p><p> 修改if…else語句存儲(chǔ)IR檢測(cè)信息的變量。 </p><p> if((irDetectLeft 0)&&(irDetectRight 0))//兩邊同時(shí)接收到紅外線 </p><p><b> { </b>&
65、lt;/p><p> Left_Turn(); </p><p> Left_Turn(); </p><p><b> } </b></p><p> else if(irDetectLeft 0)//只有左邊接收到紅外線 </p><p> Right_Turn(); <
66、;/p><p> else if(irDetectRight 0)//只有右邊接收到紅外線 </p><p> Left_Turn(); </p><p><b> else </b></p><p> Forward();</p><p> 3..4.2 驗(yàn)證機(jī)器人的行為和和運(yùn)行
67、程序RoamingWithIr.c時(shí)除不需要接觸是否非常像 </p><p> 例程:RoamingWithIr.c</p><p> for(counter=0;counter<38;counter++) //發(fā)射時(shí)間比胡須長(zhǎng) </p><p> { LeftLaunch=1; </p><p> _nop_(); _n
68、op_(); _nop_(); _nop_(); _nop_(); _nop_(); </p><p> _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); </p><p> LeftLaunch=0; </p><p> _nop_(); _nop_(); _nop_(); _nop_(); _
69、nop_(); _nop_(); </p><p> _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); </p><p><b> } </b></p><p> if(IR 'R') //右邊發(fā)射 </p><p> for
70、(counter=0;counter<38;counter++) </p><p> { RightLaunch=1; </p><p> _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); </p><p> _nop_(); _nop_(); _nop_(); _nop_(); _no
71、p_(); _nop_(); </p><p> RightLaunch=0; </p><p> _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); </p><p> _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); </p>
72、;<p><b> } </b></p><p><b> } </b></p><p> void Forward(void) //向前行走子程序 </p><p> { P1_1=1; </p><p> delay_nus(1700); </p>
73、;<p><b> P1_1=0; </b></p><p><b> P1_0=1; </b></p><p> delay_nus(1300); </p><p><b> P1_0=0; </b></p><p> delay_nms(20
74、); </p><p><b> } </b></p><p> void Left_Turn(void) //左轉(zhuǎn)子程序 </p><p> { int i; </p><p> for( i=1;i<=26;i++) </p><p> { P
75、1_1=1; </p><p> delay_nus(1300); </p><p><b> P1_1=0; </b></p><p><b> P1_0=1; </b></p><p> delay_nus(1300); </p><p><b&g
76、t; P1_0=0; </b></p><p> delay_nms(20); </p><p><b> } </b></p><p> } void Right_Turn(void) //右轉(zhuǎn)子程序 </p><p> { int i; </p><
77、;p> for( i=1;i<=26;i++) </p><p> { P1_1=1; </p><p> delay_nus(1700); </p><p><b> P1_1=0; </b></p><p><b> P1_0=1; </b></p>
78、;<p> delay_nus(1700); </p><p><b> P1_0=0; </b></p><p> delay_nms(20); </p><p><b> } </b></p><p><b> } </b></p&g
79、t;<p> void Backward(void) //向后行走子程序 </p><p> { int i; </p><p> for( i=1;i<=65;i++) </p><p> { P1_1=1; </p><p> delay_nus(1300); </p&g
80、t;<p><b> P1_1=0; </b></p><p><b> P1_0=1; </b></p><p> delay_nus(1700); </p><p><b> P1_0=0; </b></p><p> delay_nms(2
81、0); </p><p><b> } </b></p><p><b> } </b></p><p> int main(void) </p><p> { int irDetectLeft,irDetectRight; </p><p> uart
82、_Init(); </p><p> printf("Program Running!\n"); </p><p> while(1) </p><p> { IRLaunch('R'); //右邊發(fā)射 </p><p> irDetectRight = RightIR;//右邊接收
83、 </p><p> IRLaunch('L'); //左邊發(fā)射 </p><p> irDetectLeft = LeftIR;//左邊接收 </p><p> if((irDetectLeft 0)&&(irDetectRight 0))//兩邊同時(shí)接收到紅外線 </p><p> {
84、 Backward(); </p><p> Left_Turn(); </p><p> Left_Turn(); </p><p><b> } </b></p><p> else if(irDetectLeft 0)//只有左邊接收到紅外線 </p><p> {
85、 Backward(); </p><p> Right_Turn(); </p><p><b> } </b></p><p> else if(irDetectRight 0)//只有右邊接收到紅外線 </p><p> { Backward(); </p><p&g
86、t; Left_Turn(); </p><p><b> } </b></p><p><b> else </b></p><p> Forward(); </p><p><b> } </b></p><p><b&g
87、t; } </b></p><p><b> 第四章 心得體會(huì)</b></p><p> 通過這次課程設(shè)計(jì),我從中學(xué)到了很多東西,不僅是知識(shí)方面,還有動(dòng)手方面等。隨著科技的發(fā)展,機(jī)器人的應(yīng)用也越來越普遍了。所以這次課程設(shè)計(jì)不僅是一次機(jī)器人知識(shí)的普及,也是一次與機(jī)器人親密接觸的機(jī)會(huì)。</p><p> 在沒有做課程設(shè)計(jì)之前
88、,我對(duì)機(jī)器人并不很了解,慢慢的接觸之后,我明白了機(jī)器人是自動(dòng)執(zhí)行工作的機(jī)器裝置。它既可以接受人類指揮,又可以運(yùn)行預(yù)先編好的程序。在這次課程設(shè)計(jì)中我們通過軟件調(diào)試又鞏固了單片機(jī)和C語言的相關(guān)知識(shí)。我們通過硬件調(diào)試鍛煉了自己的動(dòng)手能力。在課程設(shè)計(jì)中,我們也遇到很多的困難,在老師和同學(xué)的幫助下,最后都一一解決了。</p><p> 通過這次課程設(shè)計(jì),使我的理論知識(shí)又上升到了一個(gè)新的層次,同時(shí)在設(shè)計(jì)中也加深了我對(duì)理論知
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 機(jī)器人課程設(shè)計(jì)
- 機(jī)器人課程設(shè)計(jì)報(bào)告
- 迷宮機(jī)器人課程設(shè)計(jì)
- 自由行走機(jī)器人課程設(shè)計(jì)
- 滅火機(jī)器人課程設(shè)計(jì)
- 機(jī)器人課程設(shè)計(jì)---自主行走機(jī)器人小車的設(shè)計(jì)
- 兩足機(jī)器人課程設(shè)計(jì)報(bào)告
- 工業(yè)機(jī)器人課程設(shè)計(jì)學(xué)習(xí)報(bào)告
- 機(jī)械課程設(shè)計(jì)---爬桿機(jī)器人
- 機(jī)械原理課程設(shè)計(jì)--爬桿機(jī)器人
- 智能掃地機(jī)器人課程設(shè)計(jì)
- 輪式移動(dòng)機(jī)器人課程設(shè)計(jì)
- 輪式移動(dòng)機(jī)器人課程設(shè)計(jì)
- 信號(hào)處理課程設(shè)計(jì)--智能倉庫機(jī)器人
- 機(jī)器人課程設(shè)計(jì)說明書
- c_課程設(shè)計(jì)--智能聊天機(jī)器人
- 輪式移動(dòng)機(jī)器人課程設(shè)計(jì) (2)
- 單片機(jī)課程設(shè)計(jì)--智能倉庫機(jī)器人
- 課程設(shè)計(jì)——無線電遠(yuǎn)程遙控機(jī)器人校正
- 工業(yè)機(jī)器人課程設(shè)計(jì)--多功能機(jī)械手
評(píng)論
0/150
提交評(píng)論