当前位置:   article > 正文

c语言超声波壁障源码,超声波避障小车源程序【精】

智能小车超声波避障程序

电子制作空间收集的这套入门级小车(只是入门级的,仅供参考)希望诸位入门智能车的吧友有所帮助。可以实现避障、寻迹、测距、寻找静态物体。做这个项目的经验,可分为四步。

207e6f40b23c1a83206506f15ed1d03e.png

第1步:根据实际情况确定智能小车所需要实现的功能。例如:寻线、测距、避障、寻找静止物体、寻找运动物体、检测边缘……;

第2步:根据智能小车所需要实现的功能确定相应的硬件部分。如寻线是用红外还是用激光……、测距是用超声波还是激光……、避障是用红外还是超声波……寻找物体使用红外还是超声波还是雷达还是其他的等等。选取方案的时候既要考虑实际效果还要根据自身能力判断……不要到时候进退两难;

第3步:编写程序。

第4步:实验,并找出漏洞优化程序。

当然在此之前,还有一件很重要的事要做就是选取什么单片机。下面是源程序:上面那辆入门级的智能小车超声波避障部分的源代码,仅供参考。

/****************************************************************************

硬件连接

****************************************************************************/

#include

#include

#define Sevro_moto_pwm P2_7 //接舵机信号端输入PWM信号调节速度

#define ECHO P2_4 //超声波接口定义

#define TRIG P2_5 //超声波接口定义

#define Left_moto_go {P1_0=1,P1_1=0,P1_2=1,P1_3=0;} //左边两个电机向前走

#define Left_moto_back {P1_0=0,P1_1=1,P1_2=0,P1_3=1;} //左边两个电机向后转

#define Left_moto_Stop {P1_0=0,P1_1=0,P1_2=0,P1_3=0;} //左边两个电机停转

#define Right_moto_go {P1_4=1,P1_5=0,P1_6=1,P1_7=0;} //右边两个电机向前走

#define Right_moto_back {P1_4=0,P1_5=1,P1_6=0,P1_7=1;} //右边两个电机向前走

#define Right_moto_Stop {P1_4=0,P1_5=0,P1_6=0,P1_7=0;} //右边两个电机停转

unsigned char const discode[] ={ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF,0xff/*-*/};

unsigned char const positon[3]={ 0xfe,0xfd,0xfb};

unsigned char disbuff[4] ={ 0,0,0,0,};

unsigned char posit=0;

unsigned char pwm_val_left = 0;//变量定义

unsigned char push_val_left =14;//舵机归中,产生约,1.5MS 信号

unsigned long S=0;

unsigned long S1=0;

unsigned long S2=0;

unsigned long S3=0;

unsigned long S4=0;

unsigned int time=0; //时间变量

unsigned int timer=0; //延时基准变量

unsigned char timer1=0; //扫描时间变量

/************************************************************************/

void delay(unsigned int k) //延时函数

{

unsigned int x,y;

for(x=0;x

for(y=0;y<2000;y++);

}

/************************************************************************/

void Display(void) //扫描数码管

{

if(posit==0)

{P0=(discode[disbuff[posit]])&0x7f;}//产生点

else

{P0=discode[disbuff[posit]];} if(posit==0)

{ P2_1=0;P2_2=1;P2_3=1;}

if(posit==1)

{P2_1=1;P2_2=0;P2_3=1;}

if(posit==2)

{P2_1=1;P2_2=1;P2_3=0;}

if(++posit>=3)

posit=0;

}

/************************************************************************/

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/46362
推荐阅读
相关标签
  

闽ICP备14008679号