He estado usando el Arduino para registrar algunos datos. En mi boceto Arduino también utilicé la millis()
función para poder hacer un seguimiento del tiempo en el que se toma cada valor que estoy midiendo. Sin embargo, noté que el momento no es correcto. Por ejemplo, 30 segundos en la vida real solo salen como 10 segundos (ejemplo inventado).
¿Estoy en lo cierto al decir que la función de retraso de Arduino afecta el tiempo que se usa millis()
? En otras palabras, supongamos que tengo un retraso de 50 ms, ¿eso significa que la millis()
función también se detiene durante esa duración y luego continúa y así sucesivamente durante la conexión? Noté esto cuando intenté trazar algunos datos y encontrar que la frecuencia de los picos en mis datos era demasiado frecuente dado el tiempo que había pasado. Entonces, quiero saber si ese es el motivo de esta falta de coincidencia de tiempo y, de ser así, ¿cómo puedo solucionar esto para poder mantener el tiempo en que ocurre cada muestra?
Para dar un poco de contexto aquí está mi boceto:
#include <eHealth.h>
unsigned long time;
// The setup routine runs once when you press reset:
void setup() {
Serial.begin(9600);
}
// The loop routine runs over and over again forever:
void loop() {
float ECG = eHealth.getECG();
time = millis();
Serial.print(time);
Serial.print(" ");
Serial.print(ECG, 5);
Serial.println("");
delay(50);
}
millis()
es impulsado por interrupción, por lo delay()
que no debería afectarlo.