【问题标题】:How to prevent an initial HIGH output in PIR Sensor如何防止 PIR 传感器中的初始 HIGH 输出
【发布时间】:2020-11-19 07:34:44
【问题描述】:

我正在 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。我尝试添加延迟,但之后它仍然给出高输出。有谁知道如何解决这个问题?

谢谢!

【问题讨论】:

  • 它最终会变低吗?如果是,需要多长时间?
  • @ocrdu 是的,在 PIR 上设置的延迟时间之后,它最终变低

标签: arduino arduino-uno


【解决方案1】:

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

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

【讨论】:

  • Pin 13...对某些人来说是不幸的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-13
相关资源
最近更新 更多