Tôi đã sử dụng Arduino để ghi lại một số dữ liệu. Trong bản phác thảo Arduino của tôi, tôi cũng đã sử dụng millis()
chức năng này để tôi có thể theo dõi thời gian mà mỗi giá trị tôi đang đo được thực hiện. Tuy nhiên, tôi nhận thấy rằng thời gian không chính xác. Ví dụ 30 giây trong cuộc sống thực chỉ xuất hiện dưới dạng 10 giây (ví dụ tạo thành).
Tôi có đúng không khi nói rằng chức năng trì hoãn Arduino ảnh hưởng đến việc duy trì thời gian sử dụng millis()
? Nói cách khác, giả sử tôi có độ trễ 50ms, điều đó có nghĩa là millis()
chức năng cũng dừng trong khoảng thời gian đó và sau đó tiếp tục và cứ như vậy trong suốt thời gian kết nối? Tôi nhận thấy điều này khi tôi thử vẽ một số dữ liệu và thấy rằng tần số của các đỉnh trong dữ liệu của tôi quá thường xuyên trong khoảng thời gian đã trôi qua. Vì vậy, tôi muốn biết liệu đó có phải là lý do cho sự không phù hợp về thời gian này không và nếu có, làm cách nào để khắc phục điều này để tôi có thể giữ thời gian mỗi mẫu xảy ra?
Để đưa ra một số bối cảnh ở đây là bản phác thảo của tôi:
#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()
bị gián đoạn điều khiển, vì vậy delay()
không nên ảnh hưởng đến nó.