Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Timer 在Arduino,如果灯亮60秒,如何鸣响蜂鸣器?_Timer_Arduino_Digital - Fatal编程技术网

Timer 在Arduino,如果灯亮60秒,如何鸣响蜂鸣器?

Timer 在Arduino,如果灯亮60秒,如何鸣响蜂鸣器?,timer,arduino,digital,Timer,Arduino,Digital,我正试图用Arduino的一个运动传感器制作一个安全系统。我几乎所有的东西都按我想要的方式工作,但我不知道如何在灯亮的60秒后让蜂鸣器立即熄灭 代码应该是这样工作的: 当运动传感器检测到有人时,指示灯亮起。如果灯亮起60秒,则蜂鸣器打开。蜂鸣器将不会关闭,直到按下按钮,重新启动代码 如果在灯亮的60秒以上的任何时间记录时间(如果您愿意,记录时间),我可以使蜂鸣器熄灭,但这不会触发蜂鸣器,直到运动检测器连续10秒没有检测到任何东西(这决定了记录时间的时间) 我的代码应该是这样的,但我不确定设置计时

我正试图用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;
  }
}

或者按照代码的建议使用一个真正的计时器,或者使用60000毫秒来确定时间间隔。要了解如何设置计时器,请阅读所用零件的数据表和优秀的Atmel应用程序说明。你所要做的就是阅读。所以,你的问题是当
检测到的
高的时候,如何
只启动一次
,对吗?好的,我来试一试。阿德南·阿尔沙米,是的,这是正确的