首页 > 解决方案 > 如何防止 PIR 传感器中的初始 HIGH 输出

问题描述

我正在 arduino 上测试 HC-SR501 PIR 传感器。我尝试了一个简单的在线代码教程

int buzz = 13;
int pir = 2;

int value = 0;
int pirState = LOW;

void setup() {
  pinMode(buzz, OUTPUT);
  pinMode(pir, INPUT);
  Serial.begin(9600);
}

void loop() {
  delay(5000);
  value = digitalRead(pir);
  if (value == HIGH) {
    digitalWrite(buzz, HIGH);
    if (pirState == LOW) {
      Serial.println("Motion Detected!");
      pirState = HIGH;
    }
  } else {
    digitalWrite(buzz, LOW);
    if (pirState == HIGH){
      Serial.println("Motion Ended!");
      pirState = LOW;
    }
  }
}

这可行,但是,我正在尝试将其初始化为 LOW 输出。当我第一次打开电路板时,它最初会给我一个高输出,所以蜂鸣器会立即激活,即使我把它放在远离自己的地方。串行打印出 Motion Detected。我尝试添加延迟,但之后它仍然给出高输出。任何人都知道如何解决这个问题?

谢谢!

标签: arduinoarduino-uno

解决方案


pinMode设置pin为输出,但默认状态为LOW,所以应该没有问题。

但是,引脚 13 连接到板载 LED。引导加载程序还使用板载 LED 来指示复位后的活动。您应该检查除 13 之外的其他引脚。


推荐阅读