pulseIn()

Last revision:2025/04/30

名称

pulseIn()

説明

ピンからパルス(HIGHもしくはLOW)を読み取る。たとえば、valueHIGHのとき、pulseIn()は、ピンがLOWからHIGHになるのを待ち、時間計測を開始する。その後、ピンがLOWになるのを待ち、時間計測を終了する。パルスが入力されていた時間をマイクロ秒単位で返却する。指定したタイムアウト時間内にパルスが開始されないとタイムアウトし、0を返却する。

この関数のタイミングは経験的に決められているので、長いパルスに対してはエラーとなる。パルスの長さが10マイクロ秒から3分の間で動作する。

オプションのタイムアウトを利用するとコードは速くなる。

書式

指定したピンでのパルス長を測定するには、以下の関数を使う。

  • pulseIn(pin, value)
  • pulseIn(pin, value, timeout)

C言語シグネチャ(avr)

unsigned long pulseIn(uint8_t pin, uint8_t state);

unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout));

引数

この関数は以下の引数を受け付ける。

pinパルスを読み取りたいピン番号。データ型: int
value読みだすパルスの型。HIGHもしくはLOW。データ型: int
timeoutパルスが完了するまでのタイムアウト時間(マイクロ秒)。デフォルトは1秒。データ型: unsigned long

戻り値

パルスが発生していた時間(マイクロ秒)。タイムアウトが発生した時は0。データ型: unsigned long

コード例

以下の例では、7番ピンのパルスの時間をマイクロ秒単位で表示する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
int pin = D1;
unsigned long duration;

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

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

参照

オリジナルのページ

https://docs.arduino.cc/language-reference/en/functions/advanced-io/pulseIn/

実装の解析

pulseIn()

最終更新日

July 12, 2026

inserted by FC2 system