pulseInLong()



Açıklama

pulseInLong() , uzun pulse ve etkilenen senaryoları kesintiye uğratmada daha iyi olan pulseIn () yöntemine bir alternatiftir.

Pim üzerinde bir darbe ( HIGH veya LOW ) okur. Örneğin, value olduğu HIGH , pulseInLong() gitmek için pim bekler LOW için HIGH , zamanlama, o zaman gitmek için pim bekler başlar LOW ve zamanlama durur. Darbenin mikrosaniye cinsinden uzunluğunu döndürür ya da pes eder ve zaman aşımı içinde tam darbe alınmazsa 0 döndürür.

Bu işlevin zamanlaması ampirik olarak belirlenmiştir ve muhtemelen daha kısa darbelerde hatalar gösterecektir. 10 mikrosaniyeden 3 dakika uzunluğa kadar olan darbelerde çalışır. Bu rutin sadece kesmeler etkinleştirildiğinde kullanılabilir. Ayrıca en yüksek çözünürlük geniş aralıklarla elde edilir.

Sözdizimi

pulseInLong(pin, value)
pulseInLong(pin, value, timeout)

Parametreler

pin : Nabzı okumak istediğiniz Arduino pininin numarası. İzin verilen veri türleri: int .
value : okunacak darbe türü: YÜKSEK veya DÜŞÜK . İzin verilen veri türleri: int .
timeout (isteğe bağlı): darbenin başlamasını bekleyecek mikrosaniye sayısı; varsayılan bir saniyedir. İzin verilen veri türleri: unsigned long .

İadeler

Zaman aşımından önce nabız başlamazsa nabzın uzunluğu (mikrosaniye cinsinden) veya 0. Veri türü: unsigned long .

Örnek Kod

Örnek, pim 7'deki bir darbenin zaman süresini yazdırır.

int pin = 7;
unsigned long duration;

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

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

Notlar ve Uyarılar

Bu fonksiyon dayanır micros() öylesine kullanılamaz () noInterrupts bağlamı.

Ayrıca Bakınız