履带避障智能小车,51单片机智能小车,三路避障红外传感更精控。原先铝底车板轴距不能满足履带。铝易钻孔,经过电钻打孔安装螺丝与电机后完美解决此类问题。只需两个后驱电机驱动即可,省电,爬坡能力强,避障。另外两个前电机把里面咬合齿轮拆掉就顺畅了,不用再接电,毕竟履带联动嘛。有配套避障代码。
制作图片:
单片机避障程序;
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit z=P0^0;//定义红外避障检测端口
sbit q=P0^4;
sbit y=P2^0;
sbit mz=P1^6;//定义电机Mz电平输出端口
sbit IN1=P1^3;
sbit IN2=P1^2;
sbit my=P1^7;//定义电机My电平输出端口
sbit IN3=P3^6;
sbit IN4=P3^5;
void delayms(uint);//声明延时函数
main()//主函数
{
uint i=0;//初始值设定
mz=1;
my=1;
while(1)//无限循环
{
if(z==0&&q==1&&y==1)//表示z方有障碍物 进行y转向
{
for(i=0;i<5;i++)
{
mz=1;
IN1=1;
IN2=0;
my=0;
delayms(100);//状态保持100ms
mz=0;
my=0;
delayms(2);//状态保持2ms
}
}
if(z==1&&q==0&&y==1)//表示前方有障碍物 进行y转向
{
for(i=0;i<5;i++)
{
mz=1;
IN1=1;
IN2=0;
my=0;
delayms(100);//状态保持100ms
mz=0;
my=0;
delayms(2);//状态保持2ms
}
}
if(z==1&&q==1&&y==0)//表示y方有障碍物 进行z转向
{
for(i=0;i<5;i++)
{
mz=0;
my=1;
IN3=1;
IN4=0;
delayms(100);//状态保持100ms
mz=0;
my=0;
delayms(2);//状态保持2ms
}
}
if(z==0&&q==0&&y==1)//表示z前方有障碍物 进行y转向
{
for(i=0;i<5;i++)
{
mz=1;
IN1=1;
IN2=0;
my=0;
delayms(100);//状态保持100ms
mz=0;
my=0;
delayms(2);//状态保持2ms
}
}
if(z==1&&q==0&&y==0)//表示y前方有障碍物 进行z转向
{
for(i=0;i<5;i++)
{
mz=0;
my=1;
IN3=1;
IN4=0;
delayms(100);//状态保持100ms
mz=0;
my=0;
delayms(2);//状态保持2ms
}
}
if(z==0&&q==0&&y==0)//表示前有障碍物 先停下进行后退移动
{
for(i=0;i<5;i++)
{
mz=0;
my=0;
delayms(100);//状态保持100ms
mz=1;
IN1=0;
IN2=1;
my=1;
IN3=0;
IN4=1;
delayms(2);//状态保持2ms
}
}
if(z==1&&q==1&&y==1)//表示前方无障碍物 停止
{
mz=0;
my=0;
delayms(2);//状态保持2ms
}
}
}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
原理图: 无
仿真: 无
代码: 可下载的程序附件:
代码.zip
(66.14 KB, 下载次数: 9)
|