私は学生ですが、Arduinoの初心者です。私は自動プラント給水システムを植物に1日2回給水するようにしています。毎日所要時間に正確に作業を実行するためにArduinoを作成してスリープモードにしていますか?必要な時に正確にArduinoに必要な時間に毎日タスクを実行させる方法を教えてください。
答えて
毎日
あなたのArduinoは内部RCにクロックされている場合は、十分な精度(1%)を持っていません。あなたの時計は1ヶ月後に約7時間から派生します。
非常に良い精度が必要な場合は、RTCモジュール(2ppm)を使用することができます。 時計は1ヶ月後約5秒から派生します。
Xtal発振器(200ppm)で十分に正確な
millis()
関数を使用するだけでもかまいません。 時計は1ヶ月後に約10分から派生します。
追加のコンポーネントを必要とせず、RTCで改善する必要があるため、最後の解決策から始めます。
、その後AVRコアが睡眠の異なったレベルを有し、いくつかはクロックを維持する(アイドル)と
millis()
溶液で使用されるべきであり、いくつかはクロックを維持しないであろうだろうスリープモードに
に自身を設定します(パワーダウン)、より電力効率が高く、RTCで使用することができます。解決方法は、必要な低消費電力に依存します。電源レギュレータやその他のコンポーネントのために、ArduinoボードとIDEで最大の低消費電力を達成できないことに注意してください。 Atmega328のデータシートに記載されている200nAのスリープを達成するには、いくつかの作業が必要です。
ミリ()の例
#define INTERVAL_1_DAY 86400000 // 1day => 24*60*60*1000
unsigned long nextDate = INTERVAL_1_DAY;
void loop()
{
unsigned long currentDate = millis(); //millis rollover (overflow) after about 50 days
if(currentDate > nextDate // time elapsed, do action
&& currentDate < (nextDate + INTERVAL_25_DAY)) //treatement of the overflow of millis() and *Dates ...
{
nextDate += INTERVAL_1_DAY; //you have to use nextDate here and not current date like in some examples to have no sweep (some µs each day)
// do your action here
}
// you may add some idle sleep here
// 10s sleep would give a execution date glitch e.g. [3pm to 3pm+10s]
// but some code can fix this
}
millis()関数を使用しています –
最高の精度を維持する必要がある(テストされていない)サンプルを追加しました – Julien
- 1. Azureに毎時waworkerhostをリサイクルさせる方法を教えてください。
- 2. 毎日設定された時間に静的アラームを解除する方法を教えてください。
- 3. 長時間実行されるVBAタスクをユーザーが終了する方法を教えてください。
- 4. メソッドを毎日実行するようにC#Windowsサービスをスケジュールする方法を教えてください。
- 5. Celeryタスクの実行を延期する方法を教えてください。
- 6. whileループを置き換えて実行時間を短縮する方法を教えてください。
- 7. react_routerサンプルの実行方法を教えてください。
- 8. データドージョアタッチイベントの実行方法を教えてください。
- 9. Golang:インタラクティブコマンドの実行方法を教えてください。
- 10. スクリプトの実行方法を教えてください。
- 11. cronタスクの設定方法を教えてください。
- 12. 特定の時間にPHPファイルでのみcronを実行する方法を教えてください
- 13. 特定の時間にサービスを実行する方法を教えてください。
- 14. ユーザーに毎回サインインする方法を教えてください。
- 15. Java Desktop Applicationを閉じるときにタスクを実行する方法を教えてください。
- 16. 行要素を幅全体にする方法を教えてください。
- 17. Inno Setupタスクを常にチェックする方法を教えてください。
- 18. 大胆なキーワードを実行する方法を教えてください。
- 19. ブックマークレットを一度だけ実行する方法を教えてください。
- 20. popen()edプロセスが終了時にデストラクタを確実に実行する方法を教えてください。
- 21. IBM Bluemixで毎日00:30 AM(夜間)にApache Sparkアプリケーションを実行するようにスケジュールする方法を教えてください。
- 22. DbUnit複数のテストが同時に実行されるのを防ぐ方法を教えてください。
- 23. @スケジュールされたタスクが終了する方法を教えてください。
- 24. Logstashを実行して、RDBMSからESにデータを同期させる方法を教えてください。
- 25. redisデータベース間の変更方法を教えてください。
- 26. MEFにこのインターフェイスに必要なタイプを教えてください。
- 27. 実行時にFirebug Liteをプログラムで有効/無効にする方法を教えてください。
- 28. 私のpythonをfedora 23の起動時に実行可能にする方法を教えてください。
- 29. ユーザーにアップロードディレクトリを選択させる方法を教えてください。
- 30. XPathにUTF8を使用させる方法を教えてください。
は、なぜあなたはhttp://playground.arduino.cc/Main/DS1302見たり利用可能な他のRTCを取ることはありません。 – Ouss4
ds1302モジュールでは、タスクは毎日ではなく1回だけ実行できます。 –
あなたはDS1302ではなく、毎日します... – Ouss4