タグ付けされた質問 「time」

4
millis()ロールオーバーをどのように処理できますか?
5分ごとにセンサーを読み取る必要がありますが、スケッチには他のタスクもあるためdelay()、読み取りと読み取りの間だけではできません。これらの行に沿ってコーディングすることを提案する遅延なしの点滅チュートリアルがあります: void loop() { unsigned long currentMillis = millis(); // Read the sensor when needed. if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; readSensor(); } // Do other stuff... } 問題は、millis()約49.7日後にゼロにロールバックすることです。私のスケッチはそれよりも長く実行することを目的としているため、ロールオーバーによってスケッチが失敗しないようにする必要があります。ロールオーバー状態(currentMillis < previousMillis)を簡単に検出できますが、どうすればよいかわかりません。 したがって、私の質問:millis()ロールオーバーを処理するための適切/最も簡単な方法は何でしょう か?

5
正確な時間を取得するにはどうすればよいですか?
Arduinoを使用して時計を作成しましたが、時間がずれているようです。ロールオーバーの問題を認識しています。時計は1週間で約15分ドリフトするようです。 Digi-keyのこの共振器でカスタムPCBを使用しています。コードは、各ループの開始時にmillis()関数を読み取り、その値から機能します。 私の質問は、Arduinoで時間を測定するにはどうすればよいですか。
16 time  millis 

3
ミリ秒単位の時間を見つけることは可能ですか?
関数millisは、100マイクロ秒以下のスパンで実行されます。1ミリ秒の通話にかかった時間を測定する信頼できる方法はありますか? 頭に浮かぶアプローチの1つはを使用することですmicrosが、への呼び出しにmicrosは、microsそれ自体の関数呼び出しにかかる時間millisも含まれるため、マイクロの所要時間によっては、測定がオフになる場合があります。 私が取り組んでいるアプリケーションとして、これを見つける必要がありますmillis。
13 time  millis 

3
シリアル通信用のArduinoの高精度タイミング
Arduino Unoを使用して、シリアルポート経由で時間と電圧の情報をPythonに送信し、プロットします。ただし、連続するタイムスタンプ間の間隔のタイミングが時間の経過とともに増加しているようで、プロットに影響を与えます。これは、ボーレートが9600に設定されている場合に特に当てはまります。この場合、最初の時間差はおそらく1320で、比較的短い時間の後に16400に増加します。このレートを最大115200 bpsにすると、比較的長い送信を行った後でも、変化は遅くなり、目立たなくなります。約1340から1500です。時間はすべてマイクロ秒単位で示されます。 この影響を軽減または排除できるかどうか、そしてそれが存在する理由が理解できない場合は知りたいです。これを引き起こす割り込みと遅延について読みましたが、手元にある電子機器の複雑さを十分に理解していないので、知りたいです。 タイミングの精度を上げることはできますか? このタイミングの変化の原因は何ですか? これが私が現在持っているものです: #include <eHealth.h> extern volatile unsigned long timer0_overflow_count; float fanalog0; int analog0; unsigned long time; byte serialByte; void setup() { Serial.begin(9600); } void loop() { while (Serial.available()>0){ serialByte=Serial.read(); if (serialByte=='S'){ while(1){ fanalog0=eHealth.getECG(); // Use the timer0 => 1 tick every 4 us time=(timer0_overflow_count << …

4
リアルタイムクロックがPCから間違った時間を取得するのはなぜですか?
リアルタイムクロックでPCの時刻を設定します。ただし、次のスケッチを実行すると、リアルタイムクロックは、PCの時刻よりも32〜33秒早い時刻を報告します。 #include <Wire.h> #include "RTClib.h" RTC_DS1307 RTC; void setup () { Serial.begin(57600); Wire.begin(); RTC.begin(); if (! RTC.isrunning()) { Serial.println("RTC is NOT running!"); // following line sets the RTC to the date & time this sketch was compiled // uncomment it & upload to set the time, date and start run …

4
Arduinoタイムクロックの精度
現在、PJRCタイムライブラリ(http://www.pjrc.com/teensy/td_libs_Time.html)を使用してArduinoタイムクロックを作成しようとしています。ほとんどのArduinoボードは16MHzクロックと単一の共振器で動作しているため、一定の時間が経過すると時刻が「非同期」になる可能性があることを知っています。 ただし、84 MHzクロックのArduino DUEで使用した場合、Timeライブラリの精度について誰かが知っているかどうか疑問に思いました。私はそれをテストしてきました、そして今のところ、時計は数時間同期されています。ありがとう!
10 time  arduino-due 

3
millis()を使用したArduinoの時間維持は正確または正確ではありませんか?
私は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); …

4
Unixタイムスタンプとの変換
Arduinoで日付、時間、分、秒をミリ秒単位のUnixタイムスタンプに変換する最良の方法は何ですか?RTC(日付、時間、分、秒など)を使用し、BLEを介してUnixタイムスタンプを通信しているため、この変換が必要です オンラインでコードスニペットを見つけましたが、まだ十分にテストしていません。 byte second = epoch%60; epoch /= 60; byte minute = epoch%60; epoch /= 60; byte hour = epoch%24; epoch /= 24; unsigned int years = epoch/(365*4+1)*4; epoch %= 365*4+1; unsigned int year; for (year=3; year>0; year--) { if (epoch >= days[year][0]) break; } unsigned int month; for (month=11; …
8 time  rtc  data-type 

5
delayMicrosecondsをより正確にできますか?
私はDMXデータをビットバンにしようとしています、そしてそれは4usパルスを必要とします。Arduinoの遅延がどれほど優れているかを確認するために確認している結果にはあまり運がありません...かなりひどいようです。 ここに私がした簡単な小さなテストがあります: unsigned long ptime; void setup() { Serial.begin(9600); } void loop() { ptime = micros(); delayMicroseconds(4); Serial.println(micros() - ptime); delay(1000); //just to keep the serial monitor from going nuts } そして結果: 8 4 8 4 4 4 4 4 8 8 8 8 4 8 8 4 4 8 …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.