本帖最后由 zzh啊 于 2019-1-28 17:13 編輯
跟著老師一起做機(jī)電導(dǎo)論項(xiàng)目,其實(shí)就是制作一個(gè)循跡小車。
說(shuō)在前面:
可能有很多像很多我這樣的新手搜到我這樣的第一時(shí)間會(huì)馬上去找代碼,希望直接下載到小車?yán)锿瓿扇蝿?wù)就完事了。但是這樣是不好的,對(duì)自己的成長(zhǎng)并沒(méi)有好處,我的小車的引腳連的是什么,我的小車的結(jié)構(gòu),我的小車的狀況和你的是不一樣的。還是建議這樣的像我一樣的新手系統(tǒng)的去學(xué)習(xí)各種基礎(chǔ)知識(shí),至少至少要能看懂代碼。
小車信息如下:
1.電源這次課設(shè)用的小車電源是7.4V、300mAh,對(duì)單片機(jī)這個(gè)電壓有點(diǎn)太高,對(duì)輪子有點(diǎn)太低,因此我認(rèn)為小車上應(yīng)該有穩(wěn)壓和升壓的部分,確保小車能夠正常工作。 2.電機(jī)驅(qū)動(dòng)我本人曾經(jīng)接觸電機(jī)驅(qū)動(dòng),知道要使電機(jī)轉(zhuǎn)動(dòng)需要外加驅(qū)動(dòng)實(shí)現(xiàn)。 驅(qū)動(dòng)板同時(shí)驅(qū)動(dòng)兩個(gè)直流電機(jī),通過(guò)對(duì)六個(gè)口的控制就可以分別實(shí)現(xiàn)對(duì)電機(jī)正反轉(zhuǎn),加減速的控制,完成向前向后右轉(zhuǎn),左轉(zhuǎn)等各種組合運(yùn)動(dòng),每個(gè)電機(jī)用三個(gè)口控制,使能端和PWM輸入端控制電機(jī)的轉(zhuǎn)動(dòng)與停止,也能用于控制調(diào)速。也就是說(shuō),對(duì)于這個(gè)輸入端輸入一定頻率的脈沖,電機(jī)一段時(shí)間內(nèi)轉(zhuǎn)動(dòng)一段時(shí)間內(nèi)停止轉(zhuǎn)動(dòng),但是由于直流電機(jī)的慣性特征,它不會(huì)立即停下來(lái),只要頻率比某個(gè)值就不會(huì)感覺到電機(jī)的停止現(xiàn)象,而是一種很連續(xù)的運(yùn)動(dòng),只改變一個(gè)周期內(nèi)高低壓的時(shí)間比例,就可以改變電機(jī)的速度。另外兩個(gè)輸入端是為了控制方向。 3.小車的整體設(shè)計(jì)小車為五路雙驅(qū)小車,最前方是萬(wàn)向輪,五路傳感器對(duì)稱分布,且不位于同一直線上。左右兩個(gè)電機(jī)和輪胎對(duì)稱分布,大小相同,便于程序的撰寫和修改。 小車的轉(zhuǎn)向依賴于左右輪查速,左輪快右輪慢則右轉(zhuǎn),在轉(zhuǎn)急彎時(shí)甚至可以讓一個(gè)輪子倒轉(zhuǎn)實(shí)現(xiàn)更好的轉(zhuǎn)彎效果
其實(shí)一個(gè)月前我也是個(gè)渣渣,那時(shí)候也特別想了解arduino小車,學(xué)校早就發(fā)了,也找了很多資料,沒(méi)有系統(tǒng)學(xué)習(xí),沒(méi)有人領(lǐng)進(jìn)門,雖然看起來(lái)很用功,但是實(shí)際上去做循跡一點(diǎn)也做不來(lái),程序也不會(huì)寫,這次跟著老師學(xué),雖然還是個(gè)小渣渣,但是已經(jīng)算是進(jìn)門了,可以組裝小車,可以自主寫一些程序,現(xiàn)在在試著做避障小車
簡(jiǎn)單循跡策略 首先是紅外對(duì)管 原理就不講了,紅外對(duì)管用來(lái)探測(cè)黑線白線,黑線白線傳遞的信號(hào)是不一樣的,我們根據(jù)五個(gè)探測(cè)器不同的狀態(tài)判斷小車和線,
啊偶,原來(lái)可以繼續(xù)編輯,我接上面的寫吧, 把五個(gè)傳感器分為12345號(hào),我們可以通過(guò)判斷12345號(hào)反饋的信號(hào)(即像圖中這種狀況就是1號(hào)傳感器感應(yīng)到黑線,這種情況就是偏左太多了),根據(jù)反饋的情況合理控制小車的速度和轉(zhuǎn)彎速度。
把程序讀懂
下面是
定義各個(gè)引腳叫什么,其實(shí)引腳不定義也可以,但是寫程序時(shí)去記住每一個(gè)數(shù)字而不是代號(hào)要困難得多。所以要盡可能去給每個(gè)引腳起一個(gè)好的名字,方便管理和后編寫程序,
#define right1 5 #define speedPinRight 6 //一個(gè)輪子轉(zhuǎn)動(dòng)有三個(gè)因素:PWM調(diào)速,使能端1,使能端2,這里就是在定義輪子的三個(gè)因素
#define right2 7 // #define left1 8 // #define speedPinLeft 9 //
void setup()
{
pinMode(right1,OUTPUT);
pinMode(right2,OUTPUT);
pinMode(speedPinRight,OUTPUT);
pinMode(left1,OUTPUT);
pinMode(left2,OUTPUT);
pinMode(speedPinLeft,OUTPUT); - <div>void setup() {</div><div> 這里放一下arduino的結(jié)構(gòu),這一部分可以理解為初始化,放一些定義的東西</div><div>
- </div><div>}</div><div>
- </div><div>void loop() {</div><div> // put your main code here, to run repeatedly:</div><div>
- </div><div>}</div>
復(fù)制代碼
|