pulseInLong()

[Advanced I/O]

Açıklama

pulseInLong() uzun darbe ve kesintiden etkilenen senaryoları işlemede daha iyi olan pulseln()'e bir alternatiftir.

Bir pinde bir darbe (HIGH veya LOW) okunur. Örneğin, değer HIGH ise, pulseInLong(), pinin LOW'dan HIGH'e gitmesini bekler,zamanlamayı başlatır ve pinin LOW olmasını bekler ve zamanlamayı durdurur. Darbenin uzunluğunu mikrosaniye cinsinden döndürür veya pes eder zaman aşımı içinde tam darbe alınmadıysa 0 döndürür.

Bu işlevin zamanlaması deneysel olarak belirlenmiştir ve muhtemelen daha kısa darbelerde hatalar gösterecektir. 10 mikrosaniyeden 3 dakikaya kadar olan darbeler üzerinde çalışır. Bu rutin, yalnızca kesmeler etkinleştirildiğinde kullanılabilir. Ayrıca en yüksek çözünürlük büyük aralıklarla elde edilir.

Sözdizimi

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

Parametreler

pin: pulse değerini okumak istediğiniz Arduino pininin numarası. İzin verilen veri türleri: int.

value: okunacak pulse değeri: HIGH veya LOW. İzin verilen veri türleri: int.

timeout(isteğe bğlı): Darbenin başlaması için beklenecek mikrosaniye sayısı. İzin verilen veri türleri: unsigned long.

Geri Dönüş

Darbenin uzunluğu (mikrosaniye cinsinden) veya zaman aşımından önce darbe başlamadıysa 0. Veri türü: unsigned long.

Örnek Kod

pin7'de 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 işlev şuna bağlıdır. micros() bu nedenle noInterrupts() bağlamında kullanılamaz