Deskripsi
Merupakan fungsi alternatif dari pulseIn() yang lebih baik untuk menghandle pulsa yang lebih panjang dan efek yang ditimbulkan oleh interupsi
Contoh untuk nilai HIGH akan menunggu pulsa dari LOW ke HIGH, start timing dan menunggu untuk kembali ke LOW untuk stop timing. Nilai yang diperoleh di sini adalah lebar pulsa dalam microsecond atau nilai nol apabila tidak diperoleh pulsa hingga time out
Fungsi ini akan menampilkan error untuk pulsa yang lebih lebar. Hanya akan bekerja dalam nilai 10uS hingga 3 menit.

Syntax
pulseInLong(pin, value)
pulseInLong(pin, value, timeout)
Parameters
pin: Nomor pin Arduino Board di mana pulsa akan dibaca. Tipe data yang diijinkan int
value: tipe pulsa yang dibaca, HIGH atau LOW. Tipe data yang diijinkan int
timeout(optional): nilai dalam microsecond untuk menunggu pulsa dimulai, default dalam satu detik. Tipe data yang diijinkan unsigned long
Returns:
Lebar pulsa dalam microsecond atau nol apabila tidak ada pulsa hingga timeout. Tipe data yang diijinkan unsigned long
Contoh Program:
int pin = 7; //nomor pin Arduino Board yang digunakan
unsigned long duration; //tipe data variabel duration unsigned
//long
void setup() {
Serial.begin(9600); //set baudrate serial 9600 bps
pinMode(pin, INPUT); //set mode pin pada pin 7 Arduino Board
//sebagai input
}
void loop() {
duration = pulseInLong(pin, HIGH); //ambil nilai yang diperoleh dari
//fungsi pulseIn dengan tipe
//pulsa HIGH dan simpan di variabel
//duration
Serial.println(duration); //tampilkan isi variabel duration
//ke serial
}
Contoh Program dan Peringatan
Fungsi ini tergantung pada fungsi micros() sehingga tidak dapat digunakan apabila tanpa menggunakan interupsi
Terjemahan dan edit dari https://www.arduino.cc/reference/en/language/functions/advanced-io/pulseinlong/
DELTA ELECTRONIC
Paulus Andi Nalwan, ST