私は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()
影響はありません。