STM32循迹寻光避障小车(二)(红外循迹部分)

目录

TRCT5000寻迹模块介绍

1. 模块介绍:

2. 管脚介绍

3. 使用原理:

4. 代码部分:

Tracing.c文件全部代码(附带注释)

Tracing.h文件全部代码


TRCT5000寻迹模块介绍

首先介绍一下使用到的红外寻迹模块,我们采用了TRCT5000的三路红外寻迹模

我从网上找到如下的图片和资料:

1. 模块介绍:

1、采用TCRT5000红外反射传感器
2、检测距离:1mm~8mm适用,焦点距离为2.5mm
3、比较器输出,信号干净,波形好,驱动能力强,超过15mA。
4、配多圈可调精密电位器调节灵敏度
5、工作电压3.3V-5V
6、输出形式 :数字开关量输出(0和1)


2. 管脚介绍:

VCC用STM32上的5V或者3.3V供电都可以。GND接地。OUT或者有些模块是DO接需要输入的ADC引脚。AO不经常使用,选择不接。A0是模拟信号输出,D0是TTL电平输出。如果需要寻迹,只需要接OUT或者DO。

模块管脚管脚功能
VCC3.3V~5V供电
GND接地
OUT(部分模块是这种)输出高低电平
DOTTL信号输出
AO模拟信号输出(寻迹功能中没有用到)


3. 使用原理:

在使用中,它会一直发射红外波,检测到黑线(红外线将会被黑线吸收,模块上光敏三极管处于关闭状态)时候,输出的是1高电平,其余基本为0低电平,所以可以达到寻迹(黑线)的功能

两灯全亮是显示低电平0,仅亮电源指示灯显示高电平1

黑线高电平1   其余低电平0


4. 代码部分:

Tracing.c文件全部代码(附带注释)

/*函数名称:void Tracing_Init(void)和int Get_State(uint16_t choice)
函数功能:TRCT5000寻迹模块识别黑白线,并传入stm32高低电平
使用引脚:  B12 B13 B14 */

//宏定义,使得更改方便(少打字)    此处引脚可以自己选择,根据stm32引脚定义表
#include "stm32f10x.h"                  // Device header 
#define left  GPIO_Pin_12               //定义左边的模块接B12
#define middle GPIO_Pin_13              //定义中间的模块接B13   
#define right  GPIO_Pin_14              //定义右边的模块接B14

//----------初始话寻迹模块的部分-------- 
void Tracing_Init(void)
{
	//结构体初始化
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);              //开启外设时钟B
	GPIO_InitTypeDef GPIO_InitTypeStructure;

	GPIO_InitTypeStructure.GPIO_Mode=GPIO_Mode_IPU;                   //使用上拉输入模式
	GPIO_InitTypeStructure.GPIO_Pin=left|middle|right ;               //绑定引脚
	GPIO_InitTypeStructure.GPIO_Speed=GPIO_Speed_50MHz;               //设置IO口速度
	GPIO_Init(GPIOB,&GPIO_InitTypeStructure);                         //绑定B通道
}

//----------通过识别黑白线来输入高低电平的部分-------- 
int Get_State(uint16_t choice)
{
	uint16_t get=0;                                           
	switch(choice)
	{
		case(1): get= GPIO_ReadInputDataBit(GPIOB,left);break;    //获取左边的电平
		case(2): get=GPIO_ReadInputDataBit(GPIOB,middle);break;   //获取中间的电平
		case(3): get=GPIO_ReadInputDataBit(GPIOB,right);break;    //获取右边的电平
	}
	return get;
}

Tracing.h文件全部代码

#ifndef __Tracing_H
#define __Tracing_H

void Tracing_Init(void);                
int Get_State(uint16_t choice);

#endif

  • 7
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值