time.sleep 使い方
先の記事「マイコンって何が出来るの?」では、マイコン仕掛けは端子信号を秩序立てて扱うことが出来ると書きました。
時間軸に沿って秩序立てる方法の一つ、sleepの記述方法です。
sleepの間は他の処理が出来ないので、一定間隔の処理などはイベントタイマー割込みを使うことが多いのですが、送受信のタイミングを待ち合せるなど、やっぱり必須の機能です。
time.sleep クラスをインポート
次のように、timeモジュールのsleepクラスをインポートします。
from time import sleep
この場合、時間は秒単位で指定します。
0.1秒など1秒未満の短い時間も指定できますが、msec や usec 単位で指定したい場合は以下のように、必要なクラスをインポートします。
(3つのクラスをまとめてインポート)
from time import sleep, sleep_ms, sleep_us
単に import time しても良く、sleep時間の指定で毎回time.sleepと書くことになりますが、好みの問題だと思います。
時間待ち
次のように記述することで、指定した時間(1秒)を待ちます。
sleep(1)
インポートの際にsleep_msやsleep_usをインポートしていれば、各々msec単位、usec単位で待ち時間を指定出来ます。
sleepはLEDを点滅させる時にも使いますが、単に処理を止めて時間待ちをします。点滅させながら何らかの処理をしたい時はイベントタイマーを使い、必要な処理をしている間に所定のインターバルで割り込みを発生させて点灯/滅灯を切り替えます。
一方でシリアル通知やポート出力で、相手に通知してからレスポンスを受信(検出)するまで、短時間のタイミング待ちをしたい場合などには気軽に使えて便利です。
時間測定
記事を書くために調べていたら、時間を測定する機能もあるようです。
start = time.ticks_ms()
delta = time.ticks_diff(time.ticks_ms(), start)
RTCを使って測定したことはありますが、RTC無しでも測定できるのが嬉しいですね。今後試してみたいと思います。
記事を書くために調べるって大事ですね。
勉強になります。
出来ればサポート頂けると、嬉しいです。 新しい基板や造形品を作る資金等に使いたいと思います。