光电红外传感器详解及代码

        光电传感器对环境光线适应能力强,其具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,指示灯会亮起,同时信号输出接口输出数字信号(一个低电平信号)。具有干扰小、便于装配、使用方便等特点,可以广泛。应用于机器人避障、避障小车、流水线计数及黑白线循迹等众多场合。

       使用模块在读取接收信号达不到设定阈值时,DO口输出高电平,当超过设定阈值时,模块DO输出低电平。

main.c文件

#include "stm32f10x.h"

#include "led.h"

#include "usart.h"

#include "delay.h"

#include "oled.h"

#include "HW.h"

#include "adcx.h" 

u16 value;

int main(void){ SystemInit();//配置系统时钟为72M

delay_init(72);

LED_Init();

LED_On();

HW_Init();

USART1_Config();//串口初始化

OLED_Init();

printf("Start \n");

delay_ms(1000); OLED_Clear(); //显示“检测:”

OLED_ShowChinese(0,0,8,16,1);

OLED_ShowChinese(16,0,9,16,1);

OLED_ShowChar(40,0,':',16,1);

while (1) { LED_Toggle();

value = HW_GetData();

printf("检测: %d\r\n",value);

OLED_ShowNum(60,0,value,1,16,1);

delay_ms(200); }}

HW.h文件

#ifndef __HW_H

#define __HW_H

#include "stm32f10x.h"

#include "adcx.h"

#include "delay.h"

#include "math.h"
 HW GPIO宏定义
#define HW_GPIO_CLK RCC_APB2Periph_GPIOA

#define HW_GPIO_PORT GPIOA

#define HW_GPIO_PIN GPIO_Pin_0


void HW_Init(void);

uint16_t HW_GetData(void);
#endif /* __ADC_H */

HW.c文件

#include "HW.h"

void HW_Init(void){ GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd (HW_GPIO_CLK, ENABLE ); // 打开连接 传感器DO 的单片机引脚端口时钟

GPIO_InitStructure.GPIO_Pin = HW_GPIO_PIN; // 配置连接 传感器DO 的单片机引脚模式 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // 设置为上拉输入 GPIO_Init(HW_GPIO_PORT, &GPIO_InitStructure); // 初始化 }

uint16_t HW_GetData(void){ uint16_t tempData; tempData = !GPIO_ReadInputDataBit(HW_GPIO_PORT, HW_GPIO_PIN);

return tempData;}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拱白菜的小猪610

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值