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