دستور pulseInLong در آردوینو (اندازه گیری طول پالس)
دستور pulseInLong در آردوینو پالس پین را میخواند. مثلا این دستور منتظر میماند تا پین از LOW به HIGH برود. سپس زمان را اندازه گیری میکند تا زمانی که پین دوباره LOW شود. این دستور طول پالس را در واحد میکروثانیه برمیگرداند و در صورت عدم دریافت پالس کامل، 0 را برمیگرداند.
زمان بندی این عملکرد به صورت تجربی تعیین شده است و احتمالاً خطاهایی را در پالس های کوتاه تر نشان می دهد. روی پالس هایی از 10 میکرو ثانیه تا 3 دقیقه کار می کند. فقط در صورت فعال شدن وقفه ها می توان از این دستور استفاده کرد.
تفاوت دستور pulseInLong با دستور pulseIn در این است که دستور pulseIn مدت زمان انتظار برای دریافت پالس را اندازه گیری میکند و دستور pulseInLong مدت زمان پالس ورودی را اندازه گیری میکند.
دستور pulseInLong
pulseInLong(pin, value)
pulseInLong(pin, value, timeout)
- pin: به جای pin باید نام پین که میخواهید در آن پالس را دریافت کنید بنویسید.
- value: در این پارامتر باید HIGH یا LOW را بنویسید. این پارامتر تعیین میکند آردوینو منتظر دریافت چه پالسی باشد.
- timeout (اختیاری): در این پارامتر تعیین میکند برای پالس چقدر منتظر بماند. در حالت پیشفرض 1 ثانیه است.
به طور مثال اگر میخواهید در پین 5 مدت زمان پالس HIGH را اندازه گیری کنید، باید دستور را به شکل pulseInLong(5, HIGH)
بنویسید.
نمونه کد با دستور pulseInLong
در کد زیر ما مدت زمان بالا ماندن پین 7 را اندازه گیری میکنیم و درس سریال مانیتور نمایش میدهیم.
int pin = 7; // از پین 7 استفاده میکنیم. unsigned long duration; // ایجاد یک متغیر از نوع لانگ بدون علامت void setup() { Serial.begin(9600); // شروع ارتباط سریال pinMode(pin, INPUT); // تعین پین 7 به عنوان ورودی } void loop() { duration = pulseInLong(pin, HIGH); // اندازه گیری مدت زمان بالا ماندن پین 7 Serial.println(duration); // نمایش مدت زمان در سریال مانیتور }