久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2454|回復: 2
收起左側

單片機循跡功能可以實現,但超聲波避障卻怎么也弄不好

[復制鏈接]
回帖獎勵 10 黑幣 回復本帖可獲得 10 黑幣獎勵! 每人限 1 次
ID:340666 發表于 2019-5-20 22:03 | 顯示全部樓層 |閱讀模式
我在做循跡避障小車,實現的功能就是循跡和碰到障礙物停止,我用的HCSR04超聲波避障模塊,在編寫程序時,循跡功能可以實現,但避障卻怎么也弄不好,我感覺我的程序應該是有問題,但不知道哪里出問題了,還是我一開始就錯了,求助
我的程序
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char        
#define uint  unsigned int
sbit IN1=P0^0;
sbit IN2=P0^1;
sbit IN3=P0^2;
sbit IN4=P0^3;
sbit ENA=P0^4;
sbit ENB=P0^5;
sbit hong1=P2^0;
sbit hong2=P2^1;
sbit hong3=P2^2;
sbit Trig=P2^3;
sbit Echo=P2^4;
uchar time;
void zhixing()
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
}
void zuozhuan()
{
IN1=0;
IN2=1;
IN3=1;
IN4=0;
}
void youzhuan()
{
IN1=1;
IN2=0;
IN3=0;
IN4=1;
}
void tingzhi()
{
IN1=0;
IN2=0;
IN3=0;
IN4=0;
}
void xunji()
{
uchar flag;           //定義一個標志位,用于狀態判斷
        if(hong1==0 & hong2==0 & hong3==0)         //未檢測到黑線
        {flag=0;}
         else if(hong1==0 & hong2==1 & hong3==0)        //中間檢測到黑線
        {flag=1;}
         else if(hong1==1 & hong2==0 & hong3==0)        //左邊檢測到黑線
        {flag=2;}
         else if(hong1==1 & hong2==1 & hong3==0)        //左邊和中間檢測到黑線
        {flag=3;}
         else if(hong1==0 & hong2==0 & hong3==1)        //右邊檢測到黑線
        {flag=4;}
         else if(hong1==0 & hong2==1 & hong3==1)        //右邊和中間檢測到黑線
        {flag=5;}
         else if(hong1==1 & hong2==1 & hong3==1)        //全部檢測到黑線
        {flag=6;}
        else flag=7;   //其他情況標志位置7
        switch (flag)
        {
                case 0: zhixing(); break;        //情況0,前進
                case 1: zhixing(); break;        //情況1,前進
                case 2: zuozhuan(); break;        //情況2,左轉
                case 3: zuozhuan(); break;        //情況3,左轉
                case 4: youzhuan(); break;        //情況4,右轉
                case 5: youzhuan(); break;        //情況5,右轉
                case 6: tingzhi(); break;        //情況6,停止
                case 7: tingzhi(); break;
                default:zhixing(); break;        
        }
}
void kaishi()
{
Trig=1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();//10us
Trig=0;
}
void bizhang()
{
while(!Echo) xunji();
while(Echo) tingzhi();
}

void main()
{
TMOD=0x01;//定時器0 工作方式1
TH0=0xff;//賦初值定時
TL0=0xf7;//0.1ms
EA=1; //開總中斷
ET0=1;//開定時器0中斷
TR0=1;//啟動定時器0
while(1)
{
  kaishi();
  bizhang();
}
}
void time0() interrupt 1
{
TR0=0;         //關閉定時器
TH0=0xff; //賦初值定時
TL0=0xf7; //0.01ms
TR0=1;         //打開定時器
time++;
if(time>=100) {time=0;}  //10khz
if(time<=75)  {ENA=0;ENB=0;}  //設置占空比
else {ENA=1;ENB=1;}
}

小車的主要表現就是,可以實現循跡功能,盡管前方有障礙,但不能避障,我哪里錯了,求大神指出,謝謝謝謝...
回復

使用道具 舉報

ID:330198 發表于 2019-5-21 09:23 | 顯示全部樓層
你超聲波判斷程序錯誤,好好看看例程
回復

使用道具 舉報

ID:443843 發表于 2019-5-21 10:50 | 顯示全部樓層
避障用紅外光電傳感器,很好用的
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久免费观看 | 一级毛片在线播放 | 欧美日韩黄色一级片 | 在线观看中文字幕 | 情侣酒店偷拍一区二区在线播放 | 亚洲精品久久久久久首妖 | 中文字幕一区二区三区乱码图片 | 狠狠的干 | 成人av片在线观看 | 精品久久免费 | 日本 欧美 三级 高清 视频 | 九九热免费视频在线观看 | 亚洲色图综合 | 欧美一区二区三区久久精品 | 久久免费视频1 | 国产精品久久在线观看 | 在线国产视频观看 | 亚洲成av| 天天干b| 超碰3| 亚洲综合视频 | 久久青青| 国产在线观看一区二区 | 免费在线观看成年人视频 | 神马影院一区二区三区 | 91小视频在线 | 亚洲欧美国产毛片在线 | 国产精品久久久亚洲 | 99福利在线观看 | 国产精品无码专区在线观看 | 中文字幕一区二区三区乱码图片 | 久久精品欧美一区二区三区不卡 | 久久国产精品精品国产色婷婷 | 日本不卡免费新一二三区 | 日韩视频―中文字幕 | 亚洲一区自拍 | 精品9999| 国产一区二区在线视频 | 精品一区二区三区91 | 欧美日韩亚洲一区 | 六月色婷 |