Ⅰ 急求基於AT89C51單片機的循跡避障小車電路原理圖和主程序(避障模塊是超聲波測距的),感激不盡啊。
#include<reg51.h>
#define ucharunsignedchar
#defineuintunsignedint
sbitP1_O=P1^;
sbitP1_1=P1^1;
sbitP1_2=P1^2;
sbitP1_3=P1^3;
sbitP0_2=P0^1;
sbitP0_3=P0^2;
voiddelaym1(uintz)
{
uinti;
for(i=0;i<z;i++);
}
voidmain(void)
{
while(1);
{
TRIG=1;
delay(1);
TRIG=0;
while(ECHO==0);
while(ECHO==1)a++;//a每次加1,所時間約21us
delay(30);
a=((340*a*21)/1000)/2;
display();
scan();
z=a;
a=0;
delay(200);}
voidliudianji1()
{
uinti,j;
P0=0X00;
//走直線
for(i=0;i<200;i++)
{for(i=0;i<500;i++)
{
P0_O=1;
P0_1=0;
delaym1(280);
P0_O=0;
P0_1=0;
P0_2=1;
P0_3=0;
delaym1(420);
P0_2=0;
P0_3=0;
}
P0=0X00;
delaym1(30000);
delaym1(30000);}
//右轉彎
voidliudianji2()
{for(j=0;j<300;j++)
{P0_O=1;
P0_1=0;
delaym1(300);
P0_O=0;
P0_1=0;
P0_2=1;
P0_3=0;
delaym1(160);
P0_2=0;
P0_3=0;
}
P0=0X00;
delaym1(30000);
delaym1(30000);
//左轉彎
voidliudianji3()
{for(i=0;i<600;i++)
{
P0_O=1;
P0_1=0;
delaym1(155);
P0_O=0;
P0_1=0;
P0_2=1;
P0_3=0;
delaym1(650);
P0_2=0;
P0_3=0;
}
P0=0X00;
delaym1(30000);
delaym1(30000);}
P0=0x00;
while(1);
}
}
voidmain(void)
{
while(1)
{
TRIG=1;
delay(1);
TRIG=0;
while(ECHO==0);
while(ECHO==1)a++;//a每次加1,所時間約21us
delay(30);
a=((340*a*21)/1000)/2;
if(a==50)
esle
{voidliudianji3();}
delay(200);
voidliudianji1();
z=a;
a=0;
delay(200);
}
Ⅱ 循跡小車不循跡代碼怎麼調試
使用digitalRead()函數讀取數字引腳的高低電平,循跡模塊檢測到黑線為高電平HIGH(1),白線為低電平絕脊鉛LOW(0),如果循跡模塊的指示燈不靈敏或者一閃一閃的,就需要用螺絲刀調節藍色的電位器,將循跡模塊放在黑線上,把燈調亮,然後再回調一些,把燈調滅,這樣循跡模塊的閾值就剛好在臨野旦界點了。
Sensor [0] = digitalRead(10);
Sensor [1] = digitalRead(11);
Sensor [2] = digitalRead(12);
Sensor [3] = digitalRead(13;
2.列印循跡模塊的高低電平
使用Serial.print();函數列印循跡的值,在Arino的右上角有個放大鏡,可以打開串口監視並好器,電腦連接Arino就可以看到串口的值了
Ⅲ 51單片機智能小車製作,求通俗易懂的講解
系統的單片機程序:
#include"reg52.h"
#definedet_Dist2.55//
單個脈沖對應的小車行走距離,其值為車輪周長
/4#defineRD9//
小車對角軸長度。
#definePI3.1415926
#defineANG_9090
#defineANG_90_T102
#defineANG_180189/
全局變數定義區。
/sbitP10=P1^0;//
控制繼電器的開閉sbitP11=P1^1;//
控制金屬接近開關。
(3)基於pic的智能循跡避障小車代碼擴展閱讀:
控制器部分:接收感測器部分傳遞過來的信號,並根據事前寫入的決策系統(軟體程序),來決定機器人對外部信號的反應,將控制信號發給執行器部分。好比人的大腦。
執行器部分:驅動機器人做出各種行為,包括發出各種信號(點亮發光二極體、發出聲音)的部分,並且可以根據控制器部分的信號調整自己的狀態。
對機器人小車來說,最基本的就是輪子。這部分就好比人的四肢一樣。 感測器部分:機器人用來讀取各種外部信號的感測器,以及控制機器人行動的各種開關。好比人的眼睛、耳朵等感覺器官。
Ⅳ 51單片機智能兩路循跡小車程序,檢測到黑線直走,檢測不到黑線就左轉或右轉都可以,需要程序代碼麻煩了
別想那麼復雜。
首先,你把檢測黑線的感測器就當一普通開關。因為,當照射在黑線上時,光線反射能力弱,輸出低電平。照在黑線外,則輸出高電平。只有高低兩種電平,所以,你只需要把它當一個普通開關看待。
然後,既然是普通開關,寫代碼時只需要位聲明以及設置gpio為雙向或強拉模式,51單片機都不用設置gpio。
最後,程序里,檢測到高電平然後io口電平取反就行。
Ⅳ 用單片機AT89C51設計智能小車,要有循跡、避障、計算路程的功能
這個很麻煩的 自己做不但要有單片機基礎 還要花費很多精力
如果你只想應付的話就幾個人湊錢 在淘寶上買到類似的小車 大概幾百元
如果自己做的話 就花個100~200買個車模 然後自己做控制電路
這個得需要經驗 慢慢來
Ⅵ 我是一名大一的學生,單片機學了一點,水平能夠做出智能尋跡避障小車,我是看郭天祥的視頻學的,現在在編
先買一個價格適中的開發板,如STM32,LPC,飛思卡爾tfu等均可,對照提供的例子程序一個個地進行學習調試。先吃透其中的原理,然後再進神搭漏行ucosii或linux的簡游爛枝飢單搭建學習,最終進行系統的學習。
Ⅶ 用labview編程智能循跡小車的程序思路
膠帶的寬度一定的話:
四個感測器一字排列的情況最簡單:
按1234號感測器命名,照在膠帶上狀態位為A,否則為a.
直線正常行走時,23號持續為A,14號持續為a.
分析開始右轉的邏輯:
2號變a,繼續直線行走,直到4號變A,根據24號間的距離和小車在這段時間內行駛的距離計算出轉動角度(這就是動態平面幾何問題了,自己畫圖解一下,注意轉彎時候前後中心點的軌跡,膠帶寬度是關鍵,得到的角度不會也不必太精確。這里我只討論邏輯),然後以比計算結果稍大(目的是確保能讓2恢復狀態A)的轉動角度開始轉彎,等到2和3都恢復狀態A,小車變回直線行走,等到2號重新變a,小車再恢復到原先的轉動角度……後面一直循環就行了
直線上如果車子前進方向傾斜,和轉彎一樣,下面以車子向右傾斜為例分析:
會出現3號變a的情況,繼續保持直線行走,直到1號變A,計算出小車在這個過程中行進距離,結合膠帶寬度,1和3號間的距離,就可以算出偏離的角度然後決定轉動角度。後面具體調整和過彎道一樣。
然後我來吐槽為什麼要用labview,你是想著拿著筆記本進行無線操控么 - -,嵌入式的labview編程現在還不成熟好吧~
Ⅷ 避障小車原理
避障小車原理:
一、運動機理:
控制前面兩個輪子的轉動方向就可以控制整個機器人行進的方向:
1、左右兩個前輪都向前轉,則機器人向「正前方」直線前進;
2、左右兩個前輪都向後轉,則機器人向「正後方」直線倒退;
3、左前輪向後轉,右前輪向前轉,則機器人將以後輪為軸心逆時針轉動,即實現向「右後方」轉彎倒退;
4、左前輪向前轉,右前輪向後轉,則機器人將以後輪為軸心順時針轉動,即實現向「左後方」轉彎倒退。
二、控制原理
在機器人的頭部用鋼絲做兩根觸須,一左一右各連接到一個碰撞開關,分別控制兩個前輪的旋轉方向。
特別注意,左右觸須與對應控制的電機是交叉過來的,即:左邊的觸須連接右邊的碰撞開關,控散穗制右邊的電機;右邊的觸須連接左邊的碰撞開關,控制左邊的電機。
(1)無障礙物
當前方都沒有障礙物,左右兩個輪子都向前正轉,則機器人向「前方」直線前進。
(2)左前方有障礙物
當左前方有障礙物,在左邊觸須碰到障礙物時,控制右邊的輪子反轉,則機器人向「左後方」倒退並轉彎,即方向轉向了障礙物的右邊,從而避開了左邊的障礙物。
向後倒退轉彎會持續一會,在完成轉彎之後,左邊觸須不再碰到障礙物,則兩個輪子都正轉,機器人繼續向新的沒有障礙物的「前方」直線前進。
(3)右前方有障礙物
當右前方有障礙物,在右邊觸須碰到障礙物時,控制左邊的輪子反轉,則機器人向「右後方」倒退並轉彎,即方向轉向了障礙物的左邊,從而避開了右邊的障礙物。
向後倒退轉彎會持續一會,在完成轉彎之後,右邊觸須不再碰到障礙物,則兩個輪子都正轉,機器人繼續向新的沒有障礙物的「前方」直線前進。
(4)正前方有障礙物
當正前方有障礙物,左右兩邊的觸須都會碰到障礙物,控制左右兩邊的輪子都反轉,則機器人向「正後方」倒退,從而避開障礙物。
在直線倒退持續了一會後,左右兩邊的觸須都不再碰到障礙物,則兩個輪子都正轉又變成直線前進;然後又會遇到正前方的障礙物又會直線倒退,再直線前進……如此反復變成一個死循環。
三、電路原理
機器人頭部有兩根鋼沖伏卜絲作的觸須,觸須分別連接在兩個碰撞開關上(廳輪注意兩根鋼絲對應的碰撞開關是交叉的,即:「左—右」鋼絲,對應「右—左」碰撞開關)。
(1)沒有障礙物時,觸須沒有被擠壓,不觸發碰撞開關,碰撞開關默認的通路,給電機供給一個「正方向」的電流,電機於是「順時針方向」旋轉。
(2)有障礙物時,觸須被擠壓,觸發碰撞開關,碰撞開關斷開默認通路,連接另外的一組通路,給電機供一個「反方向」的電流,電機於是「逆時針方向」旋轉。