我想制作一个带有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;
}
}
亲爱的朋友们,你能帮我解决我的代码吗?
这一行:
if(current_time>last_time)
永远都是真的。
你想要的是这样的:
if(current_time - last_time > 10000)
检查时间差是否超过 10 秒的限制 等等。
/问候