这种是单路循迹模块,有四个接口,VCC、GND就不用说了,DO就是它的输出信号,然后AO口(模拟信号输出)。
我们可以看到上面有两个LED,一个是接上VCC、GND通电之后就亮了,另外一个没有遇到黑线就亮,DO口输出一个低电平,遇到黑线就熄灭,同时DO口输出一个高电平。
上面还有一个可以调节的东西,它可以调节红外检测距离。
当然还有一种就是五路循迹模块,这个可以少接几个VCC、GND,然后有五个输出口,也就相当于单个的DO口,然后他没有可调节的东西。我用的是三个单路循迹,别问为什么,问就是五路循迹被我烧了。。。
工作电压 3.3V-5V
检测范围:1mm-25mm
输出形式 :数字开关量输出(0 和 1)
TCRT5000 传感器的红外发射二极管不断发射红外线,当发射出的红外
线没有被反射回来或被反射回来但强度不够大时,红外接收管一直处于
关断状态,此时模块的输出端为高电平,指示二极管一直处于熄灭状态;
被检测物体出现在检测范围内时,红外线被反射回来且强度足够大,红
外接收管饱和,此时模块的输出端为低电平,指示二极管被点亮。
1、VCC:接电源正极(3-5V)
2、GND:接电源负极
3、DO:TTL 开关信号输出 (GPIO口)
4、AO:模拟信号输出
我选的是PA5,PA4,PA3分别作为左边、中间、右边黑线的检测
#define TRACK_PORT GPIOA//选择A端口
#define TRACK_PORT_CLK RCC_APB2Periph_GPIOA//端口A时钟
#define TRACK_INFRARED_L2_PIN GPIO_Pin_5//左传感器对应的引脚
#define TRACK_INFRARED_M_PIN GPIO_Pin_4//中间传感器对应的引脚
#define TRACK_INFRARED_R2_PIN GPIO_Pin_3//右传感器对应的引脚
#define TRACK_L PAin(5)
#define TRACK_M PAin(4)
#define TRACK_R PAin(3)
GPIO初始化:
void Track_Init(void)//循迹端口初始化
{
GPIO_InitTypeDef GPIO_InitStructure;//GPIO结构体定义
RCC_APB2PeriphClockCmd(TRACK_PORT_CLK ,ENABLE);//打开端口时钟
GPIO_InitStructure.GPIO_Pin = TRACK_INFRARED_M_PIN | TRACK_INFRARED_L2_PIN
| TRACK_INFRARED_R2_PIN;//配置传感器读取引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//配置为输入上拉模式
GPIO_Init(TRACK_PORT,&GPIO_InitStructure);//初始化端口
}
注意:GPIO模式是上拉输入。
循迹代码编写,这就是根据传感器的不同情况去驱动电机,就可以完成循迹了,是不是很简单()
/********
功 能:小车进入循迹模式,遥控CH键退出循迹模式
形 参:循迹速度
返回值:无
说 明:传感器检测到白线输出0,黑线输出1。。
******/
void Track_Adjust(u16 speed)
{
const u16 Tsp = 1000;
u8 key = 0;
Set_Pwm(0,0);
while(key!=98)
{
//中间有黑线/没有黑线
if((TRACK_L == 0&& TRACK_M == 1&& TRACK_R == 0)||(TRACK_L == 0&& TRACK_M == 0&& TRACK_R == 0))
{
Set_Pwm(speed,speed);
}
//右边有黑线
else if((TRACK_L == 0&& TRACK_M == 0&& TRACK_R == 1)||(TRACK_L == 0&& TRACK_M == 1 && TRACK_R == 1))
{
Set_Pwm(speed+Tsp,speed-Tsp);
}
//左边有黑线
else if((TRACK_L == 1&& TRACK_M == 0&& TRACK_R == 0)||(TRACK_L ==1&& TRACK_M == 1 && TRACK_R == 0))
{
Set_Pwm(speed-Tsp,speed+Tsp);
}
//不可能出现的情况
else if((TRACK_L == 1&& TRACK_M == 0&& TRACK_R == 1)||(TRACK_L == 1&& TRACK_M == 1&& TRACK_R == 1))
{
}
key=Remote_Scan();
}
}
我的循迹速度是2000,然后这个重点就是转弯的速度调整,这个可以根据实际的情况设置调整,然后最后完成循迹。
然后其中有红外遥控的代码,之后会补充这篇专门讲解红外遥控的博文。(今天就肝)
稍后奉上视频(狗头保命)
你见过会说话的小车吗