Bazı verileri kaydetmek için Arduino'yu kullanıyorum. Arduino çizimimde millis()
fonksiyonu da kullandım, böylece ölçtüğüm her bir değerin alındığı zamanı takip edebiliyorum. Ancak, zamanlamanın doğru olmadığını fark ettim. Örneğin, gerçek hayatta 30 saniye sadece 10 saniye olarak ortaya çıkar (örnek oluşur).
Arduino gecikme işlevinin kullanmaya devam etme süresini etkilediğini söyleyerek doğru muyum millis()
? Başka bir deyişle, 50 ms'lik bir gecikmeme sahip olduğumuzu varsayalım, bu millis()
fonksiyonun bu süre boyunca da durduğu ve daha sonra bağlantı süresi boyunca devam ettiği anlamına mı geliyor? Bazı verileri çizmeyi ve verilerimdeki tepe noktalarının sıklığının geçen zaman göz önüne alındığında çok sık olduğunu bulmayı denediğimde bunu fark ettim. Bu yüzden bu zamanlama uyumsuzluğunun sebebi olup olmadığını bilmek istiyorum ve eğer öyleyse, nasıl her örnek oluşur zaman tutabilir böylece bunu nasıl düzeltebilirim?
Burada bir bağlam vermek benim kroki:
#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()
kesinti güdümlüdür, bu yüzden delay()
etkilememelidir.