Ho usato Arduino per registrare alcuni dati. Nel mio schizzo di Arduino ho anche usato la millis()
funzione in modo da poter tenere traccia del tempo in cui viene preso ogni valore che sto misurando. Tuttavia, ho notato che i tempi non sono corretti. Ad esempio, 30 secondi nella vita reale escono solo come 10 secondi (esempio composto).
Ho ragione a dire che la funzione di ritardo di Arduino influisce sul tempo di utilizzo continuo millis()
? In altre parole supponiamo che io abbia un ritardo di 50ms, significa che anche la millis()
funzione si interrompe per quella durata e poi continua e così via per la durata della connessione? L'ho notato quando ho provato a tracciare alcuni dati e ho scoperto che la frequenza dei picchi nei miei dati era troppo frequente dato il tempo che era passato. Quindi voglio sapere se questo è il ragionamento per questa mancata corrispondenza dei tempi e, in tal caso, come posso risolvere questo problema in modo da poter mantenere il tempo che si verifica ogni campione?
Per dare un po 'di contesto ecco il mio schizzo:
#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()
è guidato dall'interruzione, quindi delay()
non dovrebbe influenzarlo.