當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Arduino pulseInLong()用法及代碼示例

[高級輸入/輸出]

說明

pulseInLong()pulseIn() 的替代品,它更擅長處理長脈衝和中斷受影響的場景。

讀取引腳上的脈衝(HIGHLOW)。例如,如果 valueHIGH ,則 pulseInLong() 等待引腳從 LOW 變為 HIGH ,開始計時,然後等待引腳變為 LOW 並停止計時。返回脈衝的長度(以微秒為單位),如果在超時時間內沒有收到完整的脈衝,則放棄並返回 0。

此函數的時間已根據經驗確定,並且可能會在較短的脈衝中顯示錯誤。適用於長度為 10 微秒到 3 分鍾的脈衝。隻有在激活中斷時才能使用此例程。此外,以大間隔獲得最高分辨率。

用法

pulseInLong(pin, value)
pulseInLong(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 = pulseInLong(pin, HIGH);
  Serial.println(duration);
}

注意事項和警告

此函數依賴於micros(),因此不能在noInterrupts() 上下文中使用。

相關用法


注:本文由純淨天空篩選整理自arduino.cc大神的英文原創作品 pulseInLong()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。