如何使用带有Arduino millis功能的计数器

问题描述 投票:0回答:1

我想制作一个带有millis函数的定时器计数器。我写了一段代码,但它还不算10秒。有问题,但我看不到。我的目标是按下按钮后,10秒后它必须关闭。但它关闭不一定是10秒,有时5-8-9它是可变的。

#define  button            2
#define  relay_drive       13 
unsigned long current_time , last_time=0 ;
unsigned long _10scounter;
int _10s_Flag;
void setup()
  
{

  pinMode(button, INPUT);
  pinMode(relay_drive, OUTPUT);
}

void loop()
{
 milis_interrupt();
 if (!digitalRead(button)) {digitalWrite(relay_drive, HIGH);  _10s_Flag = 0;} //pull up res
 
 if(_10s_Flag & digitalRead(relay_drive))
 {
 _10s_Flag = 0;
 digitalWrite(relay_drive, LOW);
 }
}


void milis_interrupt(){
  current_time= millis(); //millis
 if(current_time>last_time){
if(_10scounter>=10000) {_10scounter=0; _10s_Flag = 1;}
if(_10scounter<10000)  _10scounter++;
last_time = current_time;
}
  }

亲爱的朋友们,你能帮我解决我的代码吗?

timer arduino counter milliseconds
1个回答
0
投票

这一行:

if(current_time>last_time)

永远都是真的。

你想要的是这样的:

if(current_time - last_time > 10000)

检查时间差是否超过 10 秒的限制 等等。

/问候

© www.soinside.com 2019 - 2024. All rights reserved.