STM32初步使用红外避障传感器


一、红外避障传感器简介

在这里插入图片描述

红外避障是避障传感器的一种,(其他避障传感器有超声波传感器、激光避障传感器等),具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(信号输出接口输出低电平信号,可通过电位器旋钮调节检测距离。

二、传感器规格参数:

1.工作电压:DC 3.3V-5V
2.工作电流:≥20mA
3.工作温度:-10℃—+50℃
4.检测距离:2-30cm
5.输出信号:有障碍物或反射到地面输出低电平,无障碍物高电平
6.调节方式:多圈电阻式调节
7.有效角度:35°

三、连接方法

在这里插入图片描述

将VCC和GND连接在开发板对应的引脚上(此处选择普中STM32F103开发板),信号输出线接在PD1xz.net上

四、代码

老师给的代码是直接对寄存器操作,于是自己改写直接用库函数去操作,方便移植。
在infrared.h 文件中,我们先进行宏定义,方便移植

#define INFRARED_STATE() GPIO_ReadInputDataBit(infrared_PORT,infrared_PIN)//读红外的状态

#define infrared_PORT GPIOD
#define infrared_PIN GPIO_Pin_1
#define infrared_RCC RCC_APB2Periph_GPIOD

#define INFRARED_STATE() GPIO_ReadInputDataBit(infrared_PORT,infrared_PIN)//读红外的状态

定义完了之后,再对infrared.c文件中的PC4接收引脚进行初始化

//对红外避障的端口进行初始化

void infrared_INIT(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;//定义结构体变量
	
	RCC_APB2PeriphClockCmd(infrared_RCC,ENABLE);	
	GPIO_InitStructure.GPIO_Pin=infrared_PIN;  //选择你要设置的IO口
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;	 //设置浮空输入
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;	  //设置传输速率
	GPIO_Init(infrared_PORT,&GPIO_InitStructure); 	   /* 初始化GPIO */

}

TIP:输入方式选浮空输入

最后,在main.c函数里面进行情况选择

int main()
{
	LED_Init();
	infrared_INIT();
	while(1)
	{
	if(INFRARED_STATE()==0)  //返回低电平,说明有障碍物
		{
      LED2=0;
		  printf("前方有障碍物!\r\n");
		}
		else                  //返回高电平,说明没有障碍物
		{
		LED2=1;
		  printf("前方没有障碍物!\r\n");
		}
	}
}

版权声明:本文为m0_46573394原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。