Arduino를 사용하여 일부 데이터를 기록했습니다. Arduino 스케치 millis()
에서 측정 한 각 값이 취해지는 시간을 추적 할 수 있도록 이 기능 도 사용했습니다 . 그러나 타이밍이 정확하지 않은 것으로 나타났습니다. 예를 들어 실생활에서 30 초는 10 초 (예제)로 나옵니다.
Arduino 지연 기능이 계속 사용하는 시간에 영향을 준다고 말하는 것이 맞 millis()
습니까? 다시 말해, 50ms의 지연이 있다고 가정 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()
영향을 미치지 않아야합니다.