首页 > 解决方案 > 如果在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 
      }
    }

标签: timerarduinodigital

解决方案


我想这就是你想要的。

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;
  }
}

推荐阅读