找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 4846|回復(fù): 3
收起左側(cè)

怎么用hc-sr04弄一個智能小車的測距和避障

[復(fù)制鏈接]
ID:242594 發(fā)表于 2017-10-24 21:40 | 顯示全部樓層 |閱讀模式
求大家分享一下電路圖和程序!電機(jī)驅(qū)動句不用了大概說一下怎么連接單片機(jī)就行
回復(fù)

使用道具 舉報

ID:164602 發(fā)表于 2017-10-25 08:46 | 顯示全部樓層
給你的資料上明確說明:
超聲波傳感器模塊有四個接線針:Vcc、 Trig(控制端)、 Echo(接收端)、 Gnd,接電源的就不說了,另外兩個,就按程序的設(shè)置接,程序中有說明。
程序:
/*
簡易小車。最小系統(tǒng)板,L298N帶動兩個電機(jī),12V電機(jī)電源,L298N自帶5V邏輯電源,
供板子使用。
超聲波測距HC-SR04,用舵機(jī)SG90使它轉(zhuǎn)動探測。
目標(biāo):壁障;
*/
#include <reg51.h>
#include <intrins.h>

sbit ZLDJ10=P2^3;//直流電機(jī)的控制口
sbit ZLDJ11=P2^2;
sbit ZLDJ20=P2^1;
sbit ZLDJ21=P2^0;

sbit RX=P2^6;//超聲波測距HC-SR04數(shù)據(jù)口Echo
sbit TX=P2^5;//超聲波測距HC-SR04數(shù)據(jù)口Trig

sbit DJ=P2^7;//SG90舵機(jī)的數(shù)據(jù)口

bit flag=0;
unsigned int  time=0;
unsigned int  timer=0;
unsigned long S=0;
unsigned long SPD[5]={5000,5000,5000,5000,5000};

unsigned char GT,DT;

void Delay10ms(unsigned int c);
void Delay50us(unsigned int c);

void DJZD (void);
void SG90 (void);
void Conut(void);
void CSBCJ(void);

void main(void)
{
        TMOD=0x11;//設(shè)T0、T1為方式1,GATE=0;
        TH0=0;
        TL0=0;         
        TH1=0xf8;
        TL1=0x30;
        ET0=1;
        ET1=1;
        EA=1;
        TR1=1;

        GT=30;DT=350;DJ=0;
        DJZD();

        TC();

        RX=1;
        TX=0;
        Delay10ms(500);
        RX=0;
        while(1)
        {
                CSBCJ();
                SPD[2]=S;
                if((S>=2500)||flag==1)
                {         
                        KZXCYD();
                }
                if (S<=2500)
                {
                        ZL();
                }
        }
}

void Conut(void)
{
        time=TH0*256+TL0;
        TH0=0;
        TL0=0;
        S= (long)(time*0.17);
}

void zd1() interrupt 1
{                                       
        flag=1;
}

void  zd3()  interrupt 3
{
        TH1=0xf8;
        TL1=0x30;
        timer++;
        if(timer>=100)
        {
                timer=0;
                TX=1;
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                TX=0;
        }
}

void CSBCJ(void)
{  
        while(!RX);
        TR0=1;
        while(RX);
        TR0=0;
        Conut();
}

void SG90(void)
{
        flag=0;
        GT=10;DT=390;DJZD ();
        CSBCJ();
        if ((flag==0)&&(S<=2500))
        {
                SPD[0]=S;
        }
        else
        {
                SPD[0]=5000;
        }
        flag=0;
        GT=20;DT=380;DJZD ();
        CSBCJ();
        if ((flag==0)&&(S<=2500))
        {
                SPD[1]=S;
        }
        else
        {
                SPD[1]=5000;
        }
        flag=0;
        GT=30;DT=370;DJZD ();
        CSBCJ();
        if ((flag==0)&&(S<=2500))
        {
                SPD[2]=S;
        }
        else
        {
                SPD[2]=5000;
        }
        flag=0;
        GT=40;DT=360;DJZD ();
        CSBCJ();
        if ((flag==0)&&(S<=2500))
        {
                SPD[3]=S;
        }
        else
        {
                SPD[3]=5000;
        }
        flag=0;
        GT=50;DT=350;DJZD ();
        CSBCJ();
        if ((flag==0)&&(S<=2500))
        {
                SPD[4]=S;
        }
        else
        {
                SPD[4]=5000;
        }
        flag=0;
        GT=10;DT=390;DJZD ();
        CSBCJ();
        if ((flag==0)&&(S<=2500))
        {
                SPD[0]=S;
        }
        else
        {
                SPD[0]=5000;
        }
        flag=0;
        GT=20;DT=380;DJZD ();
        CSBCJ();
        if ((flag==0)&&(S<=2500))
        {
                SPD[1]=S;
        }
        else
        {
                SPD[1]=5000;
        }
        flag=0;
        GT=30;DT=370;DJZD ();
        CSBCJ();
        if ((flag==0)&&(S<=2500))
        {
                SPD[2]=S;
        }
        else
        {
                SPD[2]=5000;
        }
        flag=0;
        GT=30;DT=370;DJZD ();
        Delay10ms(5);
}

void DJZD (void)
{
        unsigned char i;
        for (i=0;i<75;i++)
        {
                DJ=1;
                Delay50us(GT);
                DJ=0;                  
                Delay50us(DT);
        }
        DJ=0;
}

void Delay10ms(unsigned int c)
{
    unsigned char a,b;
    for(c;c>0;c--)
    {
                for(b=44;b>0;b--)
                {
                        for (a=112;a>0;a--)
                        {
                        }
                }
        }
}

void Delay50us(unsigned int c)
{
    unsigned char a;
    for(c;c>0;c--)
        {
                for (a=19;a>0;a--)
                {
                }
        }
}



超聲波測距模塊_HC-SR04_ 用戶手冊.pdf

83.44 KB, 下載次數(shù): 25

回復(fù)

使用道具 舉報

ID:298046 發(fā)表于 2018-6-15 01:28 來自觸屏版 | 顯示全部樓層
HC6800-ES-V2.0 發(fā)表于 2017-10-25 08:46
給你的資料上明確說明:
超聲波傳感器模塊有四個接線針:Vcc、 Trig(控制端)、 Echo(接收端)、 Gnd, ...

請問這是完整程序嗎
回復(fù)

使用道具 舉報

ID:352289 發(fā)表于 2018-6-15 08:20 | 顯示全部樓層
可以試下ne555,這個容易點(diǎn)
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表