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().