cubemx stm32 hc-sr505模块 检测有无人 驱动代码

20 篇文章 2 订阅
15 篇文章 0 订阅

CubeMX配置

  1. 开一个串口
  2. 开一个输入引脚,配置成下拉模式

硬件连接

VCC —— 5.5V
Sign —— PB5
GND —— GND

在这里插入图片描述

代码

hc_sr505.c

#include "hc_sr505.h"
#include "GPIO.h"

#define HC_SR505_Port	GPIOB
#define HC_SR505_PIN	GPIO_PIN_5

uint8_t hs_sr505_Judge(void)
{
	if((HC_SR505_Port->IDR & HC_SR505_PIN) == HC_SR505_PIN)
	{
		return manned;
	}
	else
	{
		return unmanned;
	}
}

hc_sr505.h

#ifndef __HC_SR505_H_
#define __HC_SR505_H_

#include "stdint.h"

typedef enum
{
	manned 	= 0,
	unmanned
}IsThereAnyone;

//判断有没有人
uint8_t hs_sr505_Judge(void);

/*	//使用方法

	if(hs_sr505_Judge() == manned)
		PrintfDebug("有人\r\n");
	else
		PrintfDebug("没人\r\n");

*/


#endif	/*__HC_SR505_H_*/

main.c

头文件

#include "hc_sr505.h"
#include "stdio.h"
#include "stdarg.h"

主文件外部函数


#define DEBUG_HUART huart1
/* 手写printf,避免使用微库造成不必要的错误 */
#define CONSOLEBUF_SIZE 512

void PrintfDebug(const char *fmt, ...)
{
	char Uart_buf[CONSOLEBUF_SIZE];
	va_list args;
	va_start(args, fmt);
	int length = vsnprintf(Uart_buf, sizeof(Uart_buf) - 1, fmt, args);
	va_end(args);
	HAL_UART_Transmit(&DEBUG_HUART, (uint8_t *)Uart_buf, length, 0xff);
}

初始化

主循环

	if(hs_sr505_Judge() == manned)
		PrintfDebug("有人\r\n");
	else
		PrintfDebug("没人\r\n");
	HAL_Delay(200);

效果

在这里插入图片描述

参考资料

人体红外传感器HC-SR501

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

嵌入一下?

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

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

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

打赏作者

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

抵扣说明:

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

余额充值