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

问题描述

我正在尝试使用 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;
  }
}