الدالة pulseIn()
في أردوينو
تحسب الدالة pulseIn()
طول نبضةٍ (إمَّا HIGH
أو LOW
) على رجل محدَّدة. إن كانت مثلًا القيمة الممرَّرة إلى الدالة هي HIGH
، فستنتظر حتى تتغير حالة الرجل من LOW
إلى HIGH
لتبدأ حساب الوقت الذي تستغرقه الإشارة للعودة إلى الحالة LOW
لتُوقِف المؤقت حينذاك؛ تعيد الدالة بعدئذٍ طول النبضة بواحدة الميكروثانية أو تستسلم وتعيد القيمة 0 بعد انتهاء المهلة الزمنية المحدَّدة إن لم تعثر على نبضة كاملة خلالها.
يحدَّد التوقيت في هذه الدالة بطريقة تجريبية ويحتمل أن يحمل أخطاءً كلما زاد طول النبضة. تعمل هذه الدالة مع النبضات التي يتراوح طولها من 10 ميكرو ثانية إلى 3 دقائق.
البنية العامة
pulseIn(pin, value)
pulseIn(pin, value, timeout)
المعاملات
pin
عددٌ صحيح يشير إلى الرجل المراد حساب طول النبضة المولَّدة عليها.
value
نوع النبضة المراد قراءتها لحساب طولها وتكون إمَّا HIGH
أو LOW
.
timeout
عددٌ طويلٌ عديم الإشارة (unsigned long) يحدِّد المهلة الزمنية بالميكروثانية التي ستنتظر الدالة خلالها بدء النبضة عند الحافة value
. القيمة الافتراضية لهذا المعامل الاختياري هي: 1 ثانية.
القيم المعادة
يعاد عددٌ طويلٌ عديم الإشارة يمثِّل طول النبضة المولَّدة على الرجل pin
بالميكروثانية، أو تعاد القيمة 0 إن لم تبدأ أيَّة نبضة عند الحافة value
قبل انتهاء المهلة timeout
الزمنية.
أمثلة
حساب زمن نبضة على الرجل 7 باستعمال الدالة pulseIn()
:
int pin = 7;
unsigned long duration;
void setup()
{
pinMode(pin, INPUT);
}
void loop()
{
duration = pulseIn(pin, HIGH);
}
انظر أيضًا
- الدالة
noTone()
: توقف توليد موجةٍ مربَّعةٍ على رجل معيَّنة أُنشئَت باستعمال الدالةtone()
. - الدالة
pulseInLong()
هي دالةٌ بديلةٌ محسَّنةٌ للدالةpulseIn()
، إذ يمكنها التعامل مع نبضات ومقاطعات طويلة متأثرة بحالات مختلفة. - الدالة
shiftIn()
: تزيح بايتًا من البيانات من رجل محدَّدة إلى متغيِّر مقدار بتٍّ واحدٍ في كل مرة تتغير فيها حالة النبضة على رجل أخرى إلىHIGH
. - الدالة
shiftOut()
: تزيح بايتًا من البيانات إلى رجل محدَّدة مقدار بتٍّ واحدٍ في كل مرة تتغير فيها حالة النبضة على رجل أخرى إلىHIGH
. - الدالة
tone()
: تولِّد موجةً مربَّعةً بتردد محدَّد (وبنسبة 50% لدورة العمل [duty cycle]) على رجل معيَّنة.