This page is also available in 3 other languages

pulseInLong()

[Advanced I/O]

설명

핀에서 펄스(HIGH 또는 LOW)를 읽습니다. 예를 들어, valueHIGH 이면, pulseIn() 은 핀이 HIGH 가 될 때까지 기다리고, 타이머를 시작하고, 핀이 LOW 가 될 때까지 기다리고 타이머를 멈춥니다. 펄스의 길이를 마이크로초 단위로 반환합니다. 정해진 timeout 안에 펄스가 시작되지 않으면 0을 반환합니다. 이 함수의 타이머는 경험적으로 결정되고, 긴 펄스에 대해 오류를 낼 수도 있습니다. 10 마이크로초부터 3분까지의 길이의 펄스에 대해 동작합니다.

함수가 호출됐을 때 핀이 이미 HIGH이면, 핀이 LOW가 됐다가 HIGH가 될 때까지 기다렸다가 카운팅을 시작하는 것에 주의하세요. 이 루틴은 인터럽트가 활성화됐을 때만 쓸 수 있습니다. 또한 긴 간격으로 가장 높은 해상도가 얻어집니다.

문법

pulseInLong(pin, value)

pulseInLong(pin, value, timeout)

매개변수

pin: 펄스를 읽을 핀 번호. (int)

value: 읽을 펄스의 유형: HIGH 또는 LOW. (int)

timeout (옵션): 펄스 시작을 기다릴 시간 (마이크로초 단위). 기본값은 1초 (unsigned long)

반환

펄스의 길이 (마이크로초 단위) 또는 0 (timeout이 지날 때까지 펄스가 시작하지 않으면) (unsigned long)

예제 코드

이 예제는 7번 핀에 들어오는 펄스의 지속시간을 계산합니다.

int pin = 7;
unsigned long duration;

void setup() {
  pinMode(pin, INPUT);
}

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

주의와 경고

이 함수는 micros()에 의존하므로 noInterrupts() 컨텍스트 안에서는 쓸 수 없습니다.

See also