学习笔记14-红外避障模块
时间:2022-08-18 09:30:02
目录
- 一、相关介绍
-
- 接线
- 电路图
- 测试
- 二、代码段
-
- tracking.c
- tracking.h
- main.c
一、相关介绍
该传感器模块具有较强的环境光适应性,具有一对红外发射和接收管,发射管发射一定频率的红外。当检测方向遇到障碍物(反射表面)时,红外反射被接收管接收比较器电路处理后,绿色指示灯亮起,信号输出接口输出数字信号(低电平可通过电位器旋钮调整检测距离,有效距离范围为2~30cm,工作电压为3.3V-5V。该传感器的探测距离可通过电位器调节,具有干扰小、装配方便、使用方便等特点,可广泛应用于机器人避障、避障车、装配线计数、黑白线跟踪等场合。
接线
VCC----3.3V
GND----GND
OUT----IO口(用于检测输出电平)
电路图
测试
- 测试探头
将探头前的所有物体移开,探头不应指向阳光充足的地方(光线对探头有很大干扰)。将探头板连接到电源后,用万用表测量 OUT 和 GND电压之间的正常范围应在 0.6v-2.5v 用白纸挡在探头前,用万用表测量 OUT 和 GND正常范围内的电压应接近0V.简单地说,用白纸挡住探头后,OUT 和GND 即使正常,两者之间的电压也会明显降低。 - 联机测试
根据要求,将探头与中控板连接,拆下探头前的所有物体,探头不指向阳光充足的地方(光线对探头干扰较大),调整各路的电位器,直到灯刚熄灭,然后用白纸覆盖探头,发现led 点亮,即使测试成功,也可以将中控板的输出信号传输到单片机进行高低电平检测。
二、代码段
当避障模块被障碍物阻挡时,led照明灯的小实验
tracking.c
#include "tracking.h" void tracking_GPIO_Config(void) {
GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(tracking_GPIO_CLK,ENABLE); GPIO_InitStructure.GPIO_Pin=tracking_GPIO_PIN; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(tracking_GPIO_PORT, &GPIO_InitStructure); } uint8_t tracking_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin) {
if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)==tracking_Low) return tracking_Low; else return tracking_High; }
tracking.h
#ifndef __TRAKING_H #define __TRAKING_H #include "stm32f10x.h"
#define tracking_GPIO_CLK RCC_APB2Periph_GPIOC
#define tracking_GPIO_PIN GPIO_Pin_6
#define tracking_GPIO_PORT GPIOC
#define tracking_High 1
#define tracking_Low 0
void tracking_GPIO_Config(void);
uint8_t tracking_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin);
#endif /* __TRAKING_H */
main.c
#define digitalHi(p,i) {
p->BSRR=i;} //输出高电平
#define digitalLo(p,i) {
p->BRR=i;} //输出低电平
#define LED1_OFF digitalHi(LED1_GPIO_PORT,LED1_GPIO_PIN)
#define LED1_ON digitalLo(LED1_GPIO_PORT,LED1_GPIO_PIN)
#define SOFT_DELAY Delay(0x0FFFF);
void Delay(__IO uint32_t nCount)
{
for(; nCount != 0; nCount--);
}
int main(void)
{
LED_GPIO_Config();
tracking_GPIO_Config();
while (1)
{
if(tracking_Scan(tracking_GPIO_PORT,tracking_GPIO_PIN) == tracking_Low)
{
LED1_ON;
SOFT_DELAY;
LED1_OFF;
}
}
}
多路代码参考:红外循迹模块