PIR传感器接入Arduino Mega后输出与预期反向问题求助
解决PIR传感器输出与预期反向的问题
这种反向触发的情况在玩PIR传感器时挺常见的,我给你梳理几个最可能的排查方向:
传感器触发模式设置错误
很多PIR传感器自带跳线或拨码开关,可切换「常开(NO)」和「常闭(NC)」模式。如果不小心调到了常闭模式,就会出现有运动时输出低电平,无运动时输出高电平的情况,刚好和你预期的逻辑相反。你可以找下传感器上的小跳线,拨到另一个档位试试。代码逻辑判断写反了
先别急着调硬件,先通过串口打印确认PIR的实际输出状态。比如在代码里加个串口输出,看看有运动时传感器输出的是HIGH还是LOW:int pirPin = 2; int ledPin = 13; void setup() { pinMode(pirPin, INPUT); pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop() { int currentState = digitalRead(pirPin); Serial.println(currentState); // 打印当前PIR输出值 // 如果实际有运动时输出LOW,就把这里的判断反过来 if (currentState == LOW) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } delay(100); }跑起来后看串口监视器,对应调整
if里的判断条件就行。接线或供电异常
虽然概率不高,但也可以检查下:- 是不是把PIR的VCC和GND接反了?(接反大概率烧坏,但如果还能工作的话可能会出现异常输出)
- 是不是把PIR的输出接到了Arduino的模拟引脚?虽然模拟引脚也能读数字信号,但不如数字引脚稳定,建议换数字引脚试试;
- 供电是不是稳定?尽量用Arduino板上的5V和GND引脚给PIR供电,不要用引脚输出的电压。
传感器延迟时间设置问题
有些PIR有两个电位器,一个调检测距离,一个调触发后的延迟时间。如果延迟时间设得太长,可能会出现“运动结束后灯还亮着,新运动来时灯反而灭了”的错觉,你可以试着把延迟电位器调小一点,看看是不是这个问题。
内容的提问来源于stack exchange,提问作者ishara noah
相关产品推荐
相关产品推荐

