Saya telah menggunakan Arduino untuk merekam beberapa data. Dalam sketsa Arduino saya, saya juga menggunakan millis()
fungsi tersebut sehingga saya dapat melacak waktu di mana setiap nilai yang saya ukur diambil. Namun, saya perhatikan waktunya tidak tepat. Misalnya 30 detik dalam kehidupan nyata hanya keluar sebagai 10 detik (contoh dibuat-buat).
Apakah saya benar mengatakan bahwa fungsi penundaan Arduino memengaruhi penggunaan waktu millis()
? Dengan kata lain seandainya saya memiliki keterlambatan 50 ms, apakah itu berarti millis()
fungsi berhenti untuk durasi itu juga dan kemudian berlanjut dan seterusnya selama durasi koneksi? Saya perhatikan ini ketika saya mencoba merencanakan beberapa data dan menemukan bahwa frekuensi puncak dalam data saya terlalu sering mengingat waktu yang telah berlalu. Jadi saya ingin tahu apakah itu alasan ketidakcocokan waktu ini dan jika demikian, bagaimana cara memperbaikinya sehingga saya dapat menjaga waktu setiap sampel terjadi?
Untuk memberikan beberapa konteks di sini adalah sketsa saya:
#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()
adalah interrupt driven, jadi delay()
seharusnya tidak mempengaruhinya.