各位大師好,我現(xiàn)在遇到難題了,希望高手能幫忙指點(diǎn)解決一下,感激不盡,
我需要寫避障循跡程序,端口分配大致是這樣:
p1.2 右轉(zhuǎn)方向信號(hào)
p1.5 左轉(zhuǎn)方向信號(hào)
p1.3 左輪pwm調(diào)速信號(hào)
p1.4 右輪pwm調(diào)速信號(hào)
p0.0 左邊紅外避障傳感器輸入信號(hào)
p0.1 前邊紅外避障傳感器輸入信號(hào)
p0.2 右邊紅外避障傳感器輸入信號(hào)
p2.0----p2.7 為循跡傳感器信號(hào)輸入
共有16路用2個(gè)鎖存器控制,只用p2口
實(shí)現(xiàn)功能:當(dāng)左邊傳感器被觸發(fā)小車右轉(zhuǎn)
當(dāng)前邊傳感器被觸發(fā)小車左轉(zhuǎn)
當(dāng)右邊傳感器被觸發(fā)小車左轉(zhuǎn)
當(dāng)左、前邊傳感器被觸發(fā)小車右轉(zhuǎn)
當(dāng)右、前邊傳感器被觸發(fā)小車左轉(zhuǎn)
當(dāng)同時(shí)觸發(fā)時(shí),小車后退,直到左、右兩側(cè)傳感器中的任意一個(gè)停止觸發(fā),小車停止倒退
以上觸發(fā)都是低電平有效
麻煩您指點(diǎn)一下避障的程序該怎么些,先謝謝你了
我已解決此問(wèn)題,特分享給大家,
我有三個(gè)傳感器,分別裝在左、前、右(z、q、y)
程序如下:
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit z=P0^0;//定義紅外避障檢測(cè)端口
sbit q=P0^4;
sbit y=P0^2;
sbit mz=P1^5;//定義電機(jī)Mz電平輸出端口
sbit my=P1^2;//定義電機(jī)My電平輸出端口
void delay_ms(uint z);//聲明延時(shí)函數(shù)
main()//主函數(shù)
{
uint i=0;//初始值設(shè)定
mz=1;
my=1;
while(1)//無(wú)限循環(huán)
{
if(z==0&&q==1&&y==1)//表示z方有障礙物 進(jìn)行y轉(zhuǎn)向
{
for(i=0;i<5;i++)
{
mz=1;
my=0;
delay_ms(100);//狀態(tài)保持100ms
mz=1;
my=1;
delay_ms(2);//狀態(tài)保持2ms
}
}
if(z==1&&q==0&&y==1)//表示前方有障礙物 進(jìn)行y轉(zhuǎn)向
{
for(i=0;i<5;i++)
{
mz=1;
my=0;
delay_ms(100);//狀態(tài)保持100ms
mz=1;
my=1;
delay_ms(2);//狀態(tài)保持2ms
}
}
if(z==1&&q==1&&y==0)//表示y方有障礙物 進(jìn)行z轉(zhuǎn)向
{
for(i=0;i<5;i++)
{
mz=0;
my=1;
delay_ms(100);//狀態(tài)保持100ms
mz=1;
my=1;
delay_ms(2);//狀態(tài)保持2ms
}
}
if(z==0&&q==0&&y==1)//表示z前方有障礙物 進(jìn)行y轉(zhuǎn)向
{
for(i=0;i<5;i++)
{
mz=1;
my=0;
delay_ms(100);//狀態(tài)保持100ms
mz=1;
my=1;
delay_ms(2);//狀態(tài)保持2ms
}
}
if(z==1&&q==0&&y==0)//表示y前方有障礙物 進(jìn)行z轉(zhuǎn)向
{
for(i=0;i<5;i++)
{
mz=0;
my=1;
delay_ms(100);//狀態(tài)保持100ms
mz=1;
my=1;
delay_ms(2);//狀態(tài)保持2ms
}
}
if(z==0&&q==0&&y==0)//表示前有障礙物 進(jìn)行hou轉(zhuǎn)向
{
for(i=0;i<5;i++)
{
mz=0;
my=0;
delay_ms(100);//狀態(tài)保持100ms
mz=1;
my=1;
delay_ms(2);//狀態(tài)保持2ms
}
}
if(z==1&&q==1&&y==1)//表示前方無(wú)障礙物 直線行駛
{
mz=1;
my=1;
delay_ms(2);//狀態(tài)保持2ms
}
}
}
我也試運(yùn)行一下
zhangbiao 發(fā)表于 2011-7-3 09:04
**** 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽 ****

zhangbiao 發(fā)表于 2011-7-3 09:04
我已解決此問(wèn)題,特分享給大家,
我有三個(gè)傳感器,分別裝在左、前、右(z、q、y)
程序如下:
| 歡迎光臨 (http://m.raoushi.com/bbs/) | Powered by Discuz! X3.1 |