我想用两个参数创建一个函数。参数1需要是时间延迟。参数2将是在适当的时间过去后执行的另一个函数。最后一件事是,我将一遍又一遍地使用这个功能。我会这样用:
void loop()
{
//code
desiredFunction(1000, functionToRun(someArg));
//code
desiredFunction(2000, anotherFunctionToRun(someArg));
//more code
}
我甚至可以省略参数2并用布尔值替换它,我可以使用它来控制if语句。最重要的是我可以有一个完全放在一个独立功能中的延迟(没有任何全局变量 - 如果我多次使用该功能,以防止任何覆盖)
我的代码是事件驱动的,我不能使用" delay()"功能。与此同时,我不想使用下面的代码,因为它会强制您在每次使用时定义一个长整型变量,这会使我的代码混乱。如果一个辉煌的人能够弄清楚如何编写一个方法,比如我在描述我会非常感激。我会把你的名字放在我的计算神殿里: - )
long previousMillis = 0;
void setup()
{
}
void loop()
{
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval)
{
previousMillis = currentMillis;
//do stuff
}
}
感谢您的帮助。
麦克
答案 0 :(得分:0)
关于long
变量的使用,当你正在处理时间时,没有其他选择:如果你的程序运行了很长时间怎么办?
所以我想你可以使用一个小的RTOS,如:
我个人使用ChibiOS / RT是因为it is very well documented并且有很多simple examples。
希望这会有所帮助:)
答案 1 :(得分:0)
不需要重新发明轮子,有很多库可以为你做这件事。
http://playground.arduino.cc/Code/SimpleTimer(可能更简单)。 http://playground.arduino.cc/Code/Timer
对于传递变量,如果没有库支持它,您可以使用定时事件和主流代码都可以使用的全局变量。