View on GitHub

pages

pulseInLong()

ここはpulseInLong() 関数のページです

説明

pulseInLong()は、pulseIn()の代替で、長いパルスや割り込みの影響を受けるシナリオを処理するのに適しています

ピンのパルス(HIGHまたはLOW)を読み取ります。例えば、値がHIGHの場合、pulseInLong()はピンがLOWからHIGHになるのを待ち、タイミングを開始し、その後ピンがLOWになるのを待ち、タイミングを止めます。パルスの長さをマイクロ秒単位で返すか、タイムアウト時間内に完全なパルスを受信できなかった場合は0を返します

この機能のタイミングは経験的に決定されており、短いパルスでは誤差が生じると思われます。10マイクロ秒から3分の長さのパルスで動作します。このルーチンは、割り込みが有効な場合のみ使用できます。さらに、最も高い分解能は大きなインターバルで得られます

構文

pulseInLong(pin, value)
pulseInLong(pin, value, timeout)

パラメータ

pin:パルスを読み取りたいArduinoのピンの番号。型はint
value:読み取るパルスの種類(HIGHまたはLOW)。型はint
timeout(オプション):パルスが開始されるまでの秒数(マイクロ秒)。型はunsigned int

返り値

パルスの長さ(マイクロ秒単位),またはタイムアウト前にパルスが開始されなかった場合は0。型はunsigned long

サンプルコード

この例では、7番ピンのパルスの継続時間を送信します

int pin = 7;
unsigned long duration;

void setup() {
  Serial.begin(9600);
  pinMode(pin, INPUT);
}

void loop() {
  duration = pulseInLong(pin, HIGH);
  Serial.println(duration);
}

注意点

この関数は、micros()に依存しているので、noInterrupts()が使用されているコード内では使用できません

出典

このページはArduino公式のページを翻訳したものです(一部意訳を含みます)

一覧に戻る
トップページに戻る