arduino - 如何防止 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。我尝试添加延迟,但之后它仍然给出高输出。任何人都知道如何解决这个问题?
谢谢!
解决方案
pinMode设置pin为输出,但默认状态为LOW,所以应该没有问题。
但是,引脚 13 连接到板载 LED。引导加载程序还使用板载 LED 来指示复位后的活动。您应该检查除 13 之外的其他引脚。
推荐阅读
- linux - 如何更改 Linux 目录中文件的默认权限?
- html - CodeSandbox.io标签未加载图像
- ocr - Google Vision API - 我们能否在检测文档文本中包含自定义预处理逻辑并将其直接用作 Vision API
- web - 什么是最推荐的网络 360 度视频播放器?
- python - 字符串操作函数的基本python代码在jupyter笔记本中不起作用
- lab-color-space - 如何从 LAB 色彩空间中找到 Delta A、B、C 和 L?
- android - 当应用程序在本机反应中处于后台时,getInitialNotification 方法不会被调用
- git - Git:是否存在将分支 A 合并到 B 会产生冲突,但将 B 合并到 A 不会产生冲突的情况?
- python-3.x - 熊猫会减少运行时间吗?
- sql-server - 在 SSMS 中,如何使用在 KEY 字 FROM 后返回表名的函数