こんばんは!
今回はArduinoでプログラムの経過時間を測れる関数「millis()」についてです。
millis()
millis()はArduinoがプログラムの実行を開始してからの時間をミリ秒(ms)で返します。
経過時間を表示したい場合や経過時間に応じて処理をしたい場合などに使われます。
スケッチ例
1 2 3 4 5 6 7 8 9 10 11 | unsigned long tm; void setup() { Serial.begin(9600); } void loop() { tm = millis() / 1000; Serial.print(tm); Serial.print(","); delay(1000); } |
このように時間を計測することができます。
オーバーフロー
millis()はプログラムの経過時間を計測することができます。
しかしmillis()はunsigned long intであるため0~(2の32乗 - 1)ミリ秒、つまり0ミリ秒から4294967295ミリ秒までしか測ることができません。
4294967295ミリ秒は
4,294,967,295/1000/60/60/24≒49.7日
なので約50日後に値が0に戻ってしまいます、これをオーバーフローといいます。
長期的に動作するものではこれによって誤動作をしてしまうので注意が必要です。