本实验通过串口调试助手打印提示,并点亮LED灯。
一、概述
1.简介
该传感器模块对环境光线适应能力强,其具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理后,输出指示灯会亮起,同时信号输出接口输出数字信号(一个低电平信号)。
2.参数说明
- 当模块检测到前方有障碍物时,电路板上输出指示灯会被点亮,同时 OUT 端口持续 输出低电平信号,该模块检测距离 2-30cm,检测角度35 度,检测距离可以通过电位器进行调节,顺时针调电位器,检测距离会增加,逆时针调电位顺器,检测距离减少。
- 传感器主动红外反射探测,因此目标的反射率和形状是探测距离的关键。其中黑色 探测距离小,白色大,小面积物体距离小,大面积距离大。
- 传感器模块输出端口 OUT 可直接与单片机 IO 口连接即可,也可以直接驱动一个 5v 继电器。
- 比较器采用 LM393,工作稳定。
- 可采用 3-5v 直流电源对模块进行供电。当电源接通时,红色电源指示灯点亮。
- 不能够检测黑色物体
二、实验材料
- 最小系统STM32F10SC8T6。
- 避障传感器模块。
- 杜邦线若干。
三、硬件连接
模块引脚 | GPIO |
---|---|
VCC | VCC |
GND | GND |
OUT | PA1 |
注:0:检测到物体,1:没检测到物体
四、实现程序
- 初始化
void Infrared_Pin_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1;
GPIO_Init(GPIOA,&GPIO_InitStruct);
}
- 数据读取
//0:检测到物体
int Infrared_Value(void)
{
uint8_t infrared_val = 0;
infrared_val = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1);
return infrared_val;
}
- 主函数
int main(void)
{
Sys_Delay_Init();
Infrared_Pin_Init();
Usart1_Pin_Init(115200);
printf("初始化成功\r\n");
Led_Init();
while(1)
{
if(!Infrared_Value())
{
printf("前方有物体\r\n");
GPIO_SetBits(GPIOA,GPIO_Pin_0);//点亮led灯
}
else
{
GPIO_ResetBits(GPIOA,GPIO_Pin_0);//关闭led灯
}
}
}
五、实验效果
完整程序及相关资料:
链接:https://pan.baidu.com/s/1WSxbwlZuh6QmhmGUC5YIsg
提取码:xlin
如有错误还望指出,谢谢!