Я використовую Arduino для запису деяких даних. У моєму ескізі Arduino я також використовував millis()
функцію, щоб я міг відслідковувати час, за який приймається кожне значення, яке я вимірюю. Однак я помітив, що терміни невірні. Наприклад, 30 секунд у реальному житті виходить лише за 10 секунд (складений приклад).
Чи правильно я кажу, що функція затримки Arduino впливає на тривалість використання часу millis()
? Іншими словами, припустимо, у мене затримка 50мс, це означає, що millis()
функція також зупиняється на цю тривалість, а потім продовжується і так далі протягом тривалості з'єднання? Я помітив це, коли спробував побудувати деякі дані та виявив, що частота піків у моїх даних була занадто частою, враховуючи час, який минув. Тож я хочу знати, чи це міркування для цієї невідповідності термінів, і якщо так, то як я це виправити, щоб я міг тримати час виникнення кожного зразка?
Щоб дати деякий контекст, ось мій ескіз:
#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()
перериванням, тому delay()
не повинно впливати на нього.