如果 Arduino 中的灯亮 60 秒,如何发出蜂鸣声?

How to sound a buzzer if a light is on for 60 seconds in Arduino?

我正在尝试使用 Arduino 中的运动传感器制作一个安全系统。我几乎让一切都按照我想要的方式工作,但我不知道如何在灯亮起 60 秒后立即关闭蜂鸣器。

代码应如下所示: 当运动传感器检测到有人时,灯会亮起。如果灯亮 60 秒,则蜂鸣器打开。蜂鸣器只有在按下按钮后才会关闭,这会重新启动代码。

如果在灯亮着的情况下记录时间超过 60 秒,我可以让蜂鸣器响起,但在运动检测器未检测到之前不会触发蜂鸣器连续 10 秒(确定时间记录的时间)的任何内容

我的代码应该看起来像这样,但我不确定设置计时器的正确方法:

if (detectedLED, HIGH)
    {
      Start timer                              // Start a timer
      if ((timer >= 60000)&&(detectedLED, HIGH))
      { 
        digitalWrite(BuzzerPin, HIGH);         // Enable Buzzer
        BuzzerOnState = true;                  // Enable Buzzer State 
      }
    }

我想这就是你想要的。

unsigned long timer = 0;
bool flag = false;

void loop() {
  if (detectedLED, HIGH) {
    if (!flag) {
      flag = true;
      timer = millis();
    }

    if ((millis() - timer) >= 60000) {
      digitalWrite(BuzzerPin, HIGH);         // Enable Buzzer
      BuzzerOnState = true;                  // Enable Buzzer State
    }
  } else {
    flag = false;
  }
}