ArduinoUnoとSDカードシールドを使用したプロジェクトに取り組んでいます。毎日特定の時間に変数をSDカードに保存したいと思います。 。 Arduinoの現在時刻を取得するにはどうすればよいですか?どんな助けでも大歓迎です。
注:ArduinoはPCに接続されていません。
回答
An十分に正確な方法は、millis()
関数を使用することです。 Arduinoの開始からミリ秒単位で値を返します。特定の時間にArduinoを起動すると、正確な日付と時刻を計算できるようになります。
外部モジュールではないのはなぜですか?? DS3231などのRTCはわずか5ドルで、温度センサーが含まれています!
コメント
- mills()関数に注意してください。約50日後にラップアラウンドします。
- @AndreCourchesne: arduino.stackexchange.com/questions/12587/ …
- では、ラップアラウンドするとどうなるでしょうか。適切に記述された時計プログラムはそれを気にしません。
回答
外部ソースなし
できません。ArduinoUnoにはリアルタイムクロックがありません。リアルタイムクロックは次のようなものにすぎません。 eBayから1ドル。たとえば、DS1307やDS3231。eBayで4.20ドルのバッテリーホルダー、クリスタル、チップ、回路基板を含む、クロックチップが事前に組み立てられた5つのボードを見つけました。バッテリーは提供されていません。
I2Cピン(A4とA5)に接続し、適切なスケッチを使用して時間を1回設定すると、ロールする準備が整います。
何かをしたいだけの場合24時間ごと(必ずしも午前9時36分ではない)の場合、millis
を使用して、適切なミリ秒数が経過した時間を見つけることができます。はおよそ49日ごとにラップされますが、それについて心配する必要はありません。
これに注意してください日付と時刻をログに記録することはできませんが、何かをログに記録することはできます(例:温度)毎日、いつログを開始したかを知る必要があります。
回答
考慮すべき1つの可能性は、 Unoへの電力を制御する 24時間プラグインタイマーを使用します。
つまり、次のようになります:
回路は次のようになります:ACコンセント->タイマー-> USB充電器-> Arduino
タイマーを設定して、たとえば午後11時30分にUnoの電源をオフにし、再びオンにすることができます。真夜中。
このような設定では、millis()
は、最後のUno開始からの時間であり、通常は前の深夜からの時間です。
デバッグ時に、Unoの開始時刻を深夜以外に設定できます。
注意事項は次のとおりです。
- 状況によっては、毎日30分(またはタイマーの増分が何であれ)ダウンタイム
- 停電によるタイマーシフトに耐えることができます