###実現したいこと
M5StickCplusの画面に正確な経過時間を表示させたい。
前提
loop部分を1周する事に1カウントされる変数iを用いて、delayの数字×iで経過時間を表示していた。
実際の時間(スマホ等のストップウォッチ)とのズレがあるため、ズレを無くすにはどうすれば良いか教えて頂けると助かります。 delayやmillsを用いて実現できますでしょうか、
どれぐらいのずれがあるんでしょうか
delay200でやった時は60秒経過時点で数秒の遅れでした。
loop1回で
色々な処理+delay200
でしょうから200ms+αでしょう。
それを1回200msとしているのだからα分はずれるでしょう。
タイマーの開始時にmillsを取得して、そこからの差分を用いればいいのでは?
loopの開始でmillsにて値を取得・・・①
loopの最後でmillsにて値を取得・・・②
②-①でloop1回分の時間が出る・・・③
サンプリング間隔-③で得た値をdelayで待てば期待する間隔になるのでは?
③の値がサンプリング間隔より大きい場合など考えないとダメですけど。
その方法でも③の後の計算したdelayから次の開始の①のmillsまでの時間が蓄積される誤差がでてきます。なので最初の1回以外は、①②2回図るのではなく、前回の値の比較で時間を計測すると、蓄積される誤差ではなくなります。