■pulseIn関数
pulseIn関数は指定したピンに入力されるパルスを検出します。
たとえば、パルスの種類(value)をHIGHに指定した場合、pulseIn関数は入力がHIGHに変わると同時に時間の計測を始め、またLOWに戻ったら、そこまでの時間(つまりパルスの長さ)をマイクロ秒単位で返します。
タイムアウトを指定した場合は、その時間を超えた時点で0を返します。
この関数で計測可能な時間は、経験上、10マイクロ秒から3分です。あまりに長いパルスに対してはエラーとなる可能性があります。
■使用例
Arduino IDEで使用するpulseIn関数の使い方は以下の通りです。
このプログラムはパルスがHIGHになっている時間(duration)を調べます。
試しにこのプログラムをArduino UNOに書き込み、3番ピンにLOW→HIGH→LOW信号を入力すると、HIGH信号であった時間がマイクロ秒単位で測定され、シリアルモニタ上に測定結果が表示されます。
void setup() { //一回だけ実行 pinMode(3, INPUT); //3番ピンを入力用に設定する Serial.begin( 9600 ); } void loop() { unsigned int interval = 0; interval = pulseIn( 3, HIGH, 29412); Serial.println( interval); }
図1:プログラム例
■「pulseIn(pin, value, timeout)」の構文
pin : パルスを入力するピンの番号
value : 測定するパルスの種類。HIGHまたはLOW
timeout(省略可) : タイムアウト迄の時間(単位:μ秒)デフォルトは1秒 (unsigned long)
戻り値 :パルスの長さ(マイクロ秒)
※パルスがスタートする前にタイムアウトとなった場合は0 (unsigned long)
励みになりますのでよければクリック下さい(^o^)/