循迹模块介绍及原理
这里使用的四路循迹模块
部分端口介绍
主板的OUT1-4端分别连接单片机的IO口,用于检测输出电平
主板另一排针侧的VCC GND IN1-4端分别和探头部分对应连接IN端连接OUT端
模块原理
当探头的红外发射管发射光线经地面反射进入接收管。输出端输出低电平,主板对应的led灯不亮。如果地面有黑色区域将吸收光线,接收管接收不到光线输出端就会输出高电平,主板的led灯会被点亮。
部分程序
//这里仅使用两个探头控制小车的方向
if(rightLight==0&&leftLight==0)//左右探头均接收到反射光
{
straight();//小车直行
}
else if(rightLight==1&&leftLight==0)//右探头没有接收到反射光输出高电平 左探头接收到反射光输出低电平
{
go_right();//小车右转
}
else if(rightLight==0&&leftLight==1)//以下原理同上
{
go_left();
}
else if(rightLight==1&&leftLight==1)
{
stop();
}
结合小车的全部程序
//红外循迹模块结合小车
#include<REG51.H>
sbit IN1 = P2^4;
sbit IN2 = P2^3;
sbit IN3 = P2^2;
sbit IN4 = P2^1;
sbit rightLight=P1^2;
sbit leftLight=P1^3;
void stop()
{
IN1=0;
IN2=0;
IN3=0;
IN4=0;
}
void go_left()
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
}
void go_right()
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
}
void straight()
{
IN1=0;
IN2=1;
IN3=1;
IN4=0;
}
void main()
{
while(1)
{
if(rightLight==0&&leftLight==0)
{
straight();
}
else if(rightLight==1&&leftLight==0)
{
go_right();
}
else if(rightLight==0&&leftLight==1)
{
go_left();
}
else if(rightLight==1&&leftLight==1)
{
stop();
}
}
}
- [√ ] 点赞+收藏
-----END------