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

本文介绍了使用C语言编写的一款入门级超声波避障小车的程序,包括避障、测距等功能。通过硬件选择、程序编写、实验优化等步骤,详细展示了小车如何实现避障、寻迹和测距。文章提供了完整的源代码,供初学者参考。
摘要由CSDN通过智能技术生成

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

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;

}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值