pulseIn


指定したピンのパルスの長さ(時間)を取得します。

パルスとは、ピンの状態がLOWからHIGHになりまたLOWに戻るまでの信号のうごき、または、HIGHからLOWになりまたHIGHに戻るまでの信号の動きを示します。

使用するピンはあらかじめpinMode関数でINPUTに設定しておきます。

書き方 pulseIn(ピン番号,信号タイプ)
pulseIn(ピン番号,信号タイプ,タイムアウト時間)
戻り値 unsigned long パルスの長さ(時間 :マイクロ秒)
取得できなかった場合は0
引数 ピン番号… int
信号タイプ… HIGH  (LOW->HIGH->LOW)/ LOW ( HIGH->LOW->HIGH)
タイムアウト時間…unsigned long タイムアウトまでの時間(マイクロ秒)
※デフォルトは1秒です。
※タイムアウト時間を設定すると処理は速くなります。

プログラム例

注意点

pulseInの動きは、プログラム内部ではプログラムステップ数を数えてその値を返しています。
そのため、実際のパルス幅と約1%程度の誤差がでる、特にパルス幅が100μ以下の場合はその誤差が大きくなるようです。
また、pluseIn関数実行時はその間制御が止まり次のシーケンスが実行されないため、リアルタイム処理には向かないようです。
pulseInの報告記事
タイムアウトの不正確についての質問記事
pulseInセロしか出力されない質問記事
Arduinoのpulsein関数で使用出来るピンについて

クムクムで使ってみる

弊社の二足歩行プログラミングロボットクムクムには、超音波距離センサーが目の部分についていて、これを使って障害物までの距離を検知することができます。
その処理にこの関数を使用することができます。
<<距離センサーので障害物までの距離を測る>>

このサンプルプログラムではTrigパルスを発生させるためにdelayMicroseconds(1)を使っている間処理が止まりますので、例えば、クムクムの場合であれば、顔を回転させながらリアルタイムに目前の障害物検知を行うとすると顔の回転がカクカクなってしまいます。

タイトルとURLをコピーしました