pulseIn()

Описание

Считывает импульс (HIGH или LOW) на пине. Например, если value равен HIGH, pulseIn() ожидает перехода пина из LOW в HIGH, начинает отсчёт времени, затем ожидает перехода пина обратно в LOW и останавливает отсчёт. Возвращает длительность импульса в микросекундах или сдаётся и возвращает 0, если полный импульс не был получен в течение таймаута.

Тайминг этой функции определён эмпирически и, вероятно, будет содержать ошибки на коротких импульсах. Работает с импульсами длительностью от 10 микросекунд до 3 минут.

Синтаксис

Используйте следующие функции для измерения длительности импульса на конкретном пине:

  • pulseIn(pin, value)

  • pulseIn(pin, value, timeout)

Параметры

Функция принимает следующие параметры:

  • pin: номер пина Arduino, на котором нужно измерить импульс. Допустимые типы данных: int.

  • value: тип считываемого импульса: HIGH или LOW. Допустимые типы данных: int.

  • timeout (необязательный): время ожидания начала импульса в микросекундах; по умолчанию одна секунда. Допустимые типы данных: unsigned long.

Возвращаемое значение

Возвращает длительность импульса (в микросекундах) или 0, если импульс не начался до истечения таймаута. Тип данных: unsigned long.

Пример кода

Пример выводит длительность импульса на пине 7.

int pin = 7;
unsigned long duration;

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

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

Примечания и предупреждения

Предупреждение

Если при вызове pulseIn() прерывания активны, тайминг может быть менее точным. Для получения наиболее точных результатов в критических приложениях рассмотрите использование pulseInLong().

См. также