Eu tenho usado o Arduino para gravar alguns dados. No meu esboço do Arduino, também usei a millis()
função para acompanhar o tempo em que cada valor que estou medindo é obtido. No entanto, notei que o momento não está correto. Por exemplo, 30 segundos na vida real sai apenas em 10 segundos (exemplo inventado).
Estou correto ao dizer que a função de atraso do Arduino afeta o tempo de uso millis()
? Em outras palavras, suponha que eu tenha um atraso de 50ms, isso significa que a millis()
função também será interrompida por essa duração e continuará durante a conexão? Percebi isso quando tentei traçar alguns dados e descobri que a frequência dos picos nos meus dados era muito frequente, dado o tempo que passava. Então, eu quero saber se esse é o motivo dessa incompatibilidade de tempo e, em caso afirmativo, como faço para corrigir isso para manter o tempo em que cada amostra ocorre?
Para dar algum contexto aqui é o meu esboço:
#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()
é acionado por interrupção, portanto delay()
não deve afetá-lo.