红外避障小车程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
智能小车红外避障c语言程序
#include
bit RandomFactor = 0 ;
bit RandomFactorBuf = 0 ;
#include
#define FLeftMotor P0_2 = 1 ; P0_3 = 0
#define BLeftMotor P0_2 = 0 ; P0_3 = 1
#define FRightMotor P0_5 = 1 ; P0_4 = 0
#define BRightMotor P0_5 = 0 ; P0_4 = 1
#define LeftStop P0_2 = 0 ; P0_3 = 0
#define RightStop P0_4 = 0 ; P0_5 = 0
#define CarStop P0_2 = 0 ; P0_3 = 0 ; P0_4 = 0 ; P0_5 = 0
#define RightSenser P0_0
#define LeftSenser P0_1
//********************************************************
// 左转
//********************************************************
void TurnLeft_1()
{
LeftStop ;
FRightMotor ;
}
//********************************************************
// 快速左转
//********************************************************
void TurnLeft_Fast()
{
BLeftMotor ;
FRightMotor ;
}
//********************************************************
// 右转
//********************************************************
void TurnRight_1()
{
RightStop ;
FLeftMotor ;
}
//********************************************************
// 快速右转
//********************************************************
void TurnRight_Fast()
{
BRightMotor ;
FLeftMotor ;
}
//********************************************************
// 用倒退的方式进行车头右转
//********************************************************
void BTurnRight_1()
{
LeftStop ;
BRightMotor ;
}
//********************************************************
// 用倒退的方式进行车头左转
//********************************************************
void BTurnLeft_1()
{ RightStop ;
BLeftMotor ;
}
//********************************************************
// 前进
//********************************************************
void FCar()
{
FLeftMotor ;
FRightMotor ;
}
//********************************************************
// 后退
//********************************************************
void BCar()
{
BLeftMotor ;
BRightMotor ;
}
//********************************************************
// 壁障程序
//********************************************************
void Obstacle_Avoid(void)
{
if(RightSenser && LeftSenser&&PWM)
{
FCar() ;
}
if((!RightSenser) && LeftSenser&&PWM)
{
BTurnLeft_1() ;
}
if(RightSenser && (!LeftSenser)&&PWM)
{
BTurnRight_1() ;
}
if(!(RightSenser || LeftSenser))
{
RandomFactorBuf = RandomFactor ;
while (!(RightSenser || LeftSenser))
{
if(RandomFactorBuf)
{
BTurnLeft_1() ;
delay (300) ;
}
if(!RandomFactorBuf)
{
BTurnRight_1() ;
delay (300) ;
}
}
}
if(!PWM)
{
LeftStop ;
RightStop ;
}
}
//********************************************************
// 跟随程序
//********************************************************
void Follow(void)
{
if(RightSenser && LeftSenser&&PWM)
{
LeftStop ;
RightStop;
}
if((!RightSenser) && LeftSenser&&PWM)
{
TurnRight_1() ;
}
if(RightSenser && (!LeftSenser)&&PWM)
{
TurnLeft_1() ;
}
if(!(RightSenser || LeftSenser))
{
FCar() ;
}
}
//********************************************************
//********************************************************
main()
{
Timer0Setup(500) ;
Timer1Setup(50) ;
Obstacle_Avoid() ;
// Follow() ;
}