如何在没有运动时阻止 PIR 传感器发送高输出

How to stop a PIR sensor from sending high output when there's no motion

我的意图是一个程序,一个在特定时间打开并在特定时间关闭的系统。但我面临的问题是,每次到达预定时间打开传感器时,即使几秒钟没有运动,传感器也会开始感应运动,然后它会恢复正常。在没有运动时它停止感应运动的意义上是正常的。我 运行 一个使用 PIR 传感器的基本运动检测代码,只是为了检查传感器是否正常工作,结果很好,所以我真的不知道为什么我仍然会收到那个错误。 请问如何消除这个错误,因为我对如何编程 Arduino 知之甚少。

DS3231 rtc(SDA, SCL);
String textForSMS;
int PirSensor = 6;
int LedSensorPin = 13;
int Buzzer = 11;
int LedPowerPin = 9;
int Power   =  6; // 5V of sensor connected to pin6
int val     =0;

const int OnHour = 13;
const int OnMin =  38;
const int OnSec = 0;

const int OffHour = 13;
const int OffMin = 40;
const int OffSec = 0;


void setup() {
  
Serial.begin(9600);
rtc.begin();
Serial.println("Logging Time Completed ");
pinMode(PirSensor, INPUT);
pinMode(Buzzer, OUTPUT);
pinMode(LedSensorPin, OUTPUT);
pinMode(LedPowerPin, OUTPUT);
pinMode(Power, OUTPUT);
digitalWrite(LedSensorPin, LOW);
digitalWrite(PirSensor, LOW);

//Wait for Syst3m to get ready
for(int x=0; x<27; x++){
        digitalWrite(LedPowerPin,HIGH);
        delay(500);
        digitalWrite(LedPowerPin,LOW);
        delay(500);
        
    }
  //system ready
     for(int x=0; x<3; x++){
        digitalWrite(Buzzer,HIGH);
        delay(500);
        digitalWrite(Buzzer,LOW);
        delay(500);
        
    }
}

void loop() {
  
t = rtc.getTime();
Serial.print(t.hour);
Serial.print("hr, ");
Serial.print(t.min);
Serial.print("min. ");
Serial.print(t.sec);
Serial.print("sec");
Serial.println(" ");
delay(1000);

while(t.hour == OnHour && (t.min >= OnMin && t.min<=OffMin)){
    

analogWrite(Power, 255);       // Turn ON the Sensor

val = digitalRead(PirSensor); 
if ( val == HIGH){
  digitalWrite(LedSensorPin, HIGH);
  digitalWrite(Buzzer, HIGH);
  delay(500);
  digitalWrite(Buzzer, LOW);
  digitalWrite(LedSensorPin, LOW);   
  delay(500);
            }
  else{
  digitalWrite(LedSensorPin, LOW);
  digitalWrite(Buzzer, LOW);   
        }
              t = rtc.getTime();
            }

像 HC-SR501 这样的 PIR 传感器不会立即切换回“低”。一旦检测到运动,它将切换到“高”并维持输出约 10 秒。

在我的应用程序中,我通常使用多个传感器,例如结合摄像头的 PIR 运动传感器。 PIR 触发后,应用程序将开始检查摄像机图片内的运动。