四路红外循迹小车五一单片机程序
时间: 2023-08-31 14:12:35 浏览: 128
以下是一个基于51单片机的四路红外循迹小车的简单程序,可以在五一劳动节DIY一下:
```c
#include <reg52.h>
sbit IN1 = P1^0; //左前
sbit IN2 = P1^1; //左后
sbit IN3 = P1^2; //右前
sbit IN4 = P1^3; //右后
sbit L1 = P1^4; //左传感器1
sbit L2 = P1^5; //左传感器2
sbit R1 = P1^6; //右传感器1
sbit R2 = P1^7; //右传感器2
void delay(int i) //延时函数
{
while(i--);
}
void main()
{
while(1)
{
if(L1==0 && L2==0 && R1==0 && R2==0) //四路均为黑线
{
IN1 = 1;
IN2 = 0;
IN3 = 1;
IN4 = 0;
}
else if(L1==0 && L2==0 && R1==1 && R2==0) //左侧黑线
{
IN1 = 0;
IN2 = 0;
IN3 = 1;
IN4 = 0;
}
else if(L1==1 && L2==0 && R1==0 && R2==0) //右侧黑线
{
IN1 = 1;
IN2 = 0;
IN3 = 0;
IN4 = 0;
}
else if(L1==0 && L2==1 && R1==0 && R2==0) //左前黑线
{
IN1 = 0;
IN2 = 1;
IN3 = 1;
IN4 = 0;
}
else if(L1==0 && L2==0 && R1==0 && R2==1) //右前黑线
{
IN1 = 1;
IN2 = 0;
IN3 = 0;
IN4 = 1;
}
else if(L1==1 && L2==1 && R1==0 && R2==0) //左侧前黑线
{
IN1 = 0;
IN2 = 1;
IN3 = 1;
IN4 = 0;
}
else if(L1==0 && L2==0 && R1==1 && R2==1) //右侧前黑线
{
IN1 = 1;
IN2 = 0;
IN3 = 0;
IN4 = 1;
}
else if(L1==1 && L2==0 && R1==1 && R2==0) //两侧前黑线
{
IN1 = 0;
IN2 = 1;
IN3 = 0;
IN4 = 1;
}
else if(L1==0 && L2==0 && R1==0 && R2==0) //四路均为白色
{
IN1 = 0;
IN2 = 0;
IN3 = 0;
IN4 = 0;
}
delay(100); //延时一段时间
}
}
```
该程序通过四路红外传感器检测地面上的黑线位置,然后控制小车的电机前进或转向,从而实现沿着黑线行驶的功能。
阅读全文