hc-sr501热释电传感器 代码
时间: 2025-01-05 22:24:02 浏览: 13
### HC-SR501热释电传感器示例代码
#### 使用Arduino控制HC-SR501并读取状态
下面是一个简单的Arduino程序,用于检测HC-SR501的状态变化,并通过串口打印输出。
```cpp
// 定义输入引脚为8号针脚
const int pirPin = 8;
void setup() {
// 初始化串口通信
Serial.begin(9600);
// 设置PIR引脚模式为输入
pinMode(pirPin, INPUT);
}
void loop(){
// 读取PIR传感器的当前状态
int sensorState = digitalRead(pirPin);
if (sensorState == HIGH) {
// 如果传感器被触发,则发送消息到串行监视器
Serial.println("Motion detected!");
// 延迟一段时间防止重复触发
delay(500);
} else {
// 当没有运动时也向串行监视器报告
Serial.println("No motion");
// 添加适当延迟减少CPU负载
delay(1000);
}
}
```
此段代码展示了如何配置Arduino来监控HC-SR501的人体存在情况。当检测到移动时,设备会在串行端口中显示一条通知信息[^1]。
对于STM32平台而言,可以采用类似的逻辑编写相应的固件。这里给出一段伪代码作为参考:
```c
#include "stm32f1xx_hal.h"
GPIO_InitTypeDef GPIO_InitStruct = {0};
int main(void){
HAL_Init();
__HAL_RCC_GPIOA_CLK_ENABLE();
/* 配置PA0为输入 */
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA,&GPIO_InitStruct);
while (1){
if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)){
// 执行动作,比如点亮LED灯
HAL_Delay(500);
}
HAL_Delay(1000);
}
}
```
这段C语言代码适用于基于STM32微控制器的应用场景,在检测到活动后同样会产生响应行为,例如激活指示灯[^3]。
阅读全文