Timer 在Arduino,如果灯亮60秒,如何鸣响蜂鸣器?
我正试图用Arduino的一个运动传感器制作一个安全系统。我几乎所有的东西都按我想要的方式工作,但我不知道如何在灯亮的60秒后让蜂鸣器立即熄灭 代码应该是这样工作的: 当运动传感器检测到有人时,指示灯亮起。如果灯亮起60秒,则蜂鸣器打开。蜂鸣器将不会关闭,直到按下按钮,重新启动代码 如果在灯亮的60秒以上的任何时间记录时间(如果您愿意,记录时间),我可以使蜂鸣器熄灭,但这不会触发蜂鸣器,直到运动检测器连续10秒没有检测到任何东西(这决定了记录时间的时间) 我的代码应该是这样的,但我不确定设置计时器的正确方法:Timer 在Arduino,如果灯亮60秒,如何鸣响蜂鸣器?,timer,arduino,digital,Timer,Arduino,Digital,我正试图用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应用程序说明。你所要做的就是阅读。所以,你的问题是当
检测到的是高的时候,如何只启动一次,对吗?好的,我来试一试。阿德南·阿尔沙米,是的,这是正确的