我试图让我的 Arduino草图在每次执行该loop
函数时休眠 1 秒。
循环中涉及的方法可能会改变它们的执行时间,这就是我实现millis的原因。
我正在执行以下操作:
unsigned long ejecucionExcedida = 0;
int calcularExceso(int tiempo) {
if (tiempo>1000) {
ejecucionExcedida = ejecucionExcedida + (tiempo-1000);
// TO DO agregar alarma si el exceso se incrementa mucho
if(ejecucionExcedida > 20000) {
alertas(9);
}
// Listo las alertas :D
return 1000;
}
else {
if(ejecucionExcedida == 0) {
return tiempo;
}
else {
if (ejecucionExcedida + tiempo < 1000) {
ejecucionExcedida = 0;
return ejecucionExcedida + tiempo;
}
else {
int exceso = ejecucionExcedida + tiempo - 1000;
ejecucionExcedida = exceso;
return 1000;
}
}
}
}
void loop() {
unsigned long comienzo = millis();
// A couple of methods
unsigned long final = millis();
delay(calcularExceso(final-comienzo));
}
预计草图将在每次执行时恰好延迟一秒钟,但我已经用时钟对其进行计时,每次执行花费的时间超过一秒。