الدالة tone()‎ في أردوينو

من موسوعة حسوب
اذهب إلى: تصفح، ابحث

تولِّد الدالة tone()‎ موجةً مربَّعةً بتردد محدَّد (وبنسبة 50% لدورة العمل [duty cycle]) على رجل معيَّنة. يمكن تحديد فترة زمنية معيَّنة تُولَّد خلالها الموجة فقط أو ستستمر عملية توليد الموجة إلى أن تستدعى الدالة noTone()‎. يمكن ربط الرجل التي ستُولَّد عليها الموجة بطنَّان إجهادي (piezo buzzer) أو أي مكبر صوت لتشغيل النغمات الناتجة عن الموجة المولَّدة.

يمكن توليد نغمة واحدة فقط على إحدى الأرجل، لذا إن كان هنالك نغمة تعمل على رجل معيَّنة واستدعيت الدالة tone()‎ على رجل أخرى، فلن يكون لهذا الاستدعاء أي تأثير. أمَّا إن استدعيت الدالة على نفس الرجل التي تعمل عليها النغمة آنذاك، فسيعاد ضبط تردد النغمة التي يجري توليدها.

سيتداخل استعمال الدالة tone()‎ مع الخرج PWM على الرجل 3 والرجل 11 (على جميع اللوحات باستثناء لوحات Mega).

ليس بالإمكان توليد نغمات بتردد أقل من 21 هرتز. لتفاصيل تقنية أوسع، اطلع على هذه الصفحة.

البنية العامة

tone(pin, frequency)

tone(pin, frequency, duration)

المعاملات

pin

عددٌ صحيحٌ يشير إلى الرجل المراد توليد الموجة (النغمة) عليها.

frequency

عددٌ صحيحٌ عديم الإشارة (unsigned int) يحدِّد تردُّد النغمة بالهرتز.

duration

عددٌ طويلٌ عديم الإشارة (unsigned long) يحدِّد مدة عمل النغمة بالميلي ثاينة، وهو معامل اختياري.

القيم المعادة

لا يعاد أي شيء.

أمثلة

مثال على استعمال الدالة tone()‎ لتوليد موجة مربعة بتردد معين على الرجل 3:
unsigned int freq = 1000;
void setup() {
  tone(3, freq);     // على الرجل 3 freq توليد موجبة مربعة بالتردد
}

void loop() {
  // وهنا وتكرار تنفيذها tone لا حاجة لوضع الدالة 
}

ملاحظات وتحذيرات

إن أردت تشغيل نغمات مختلفة على أرجل مختلفة، فأنت بحاجة إلى استدعاء الدالة noTone()‎ على الرجل التي تعمل عليها النغمة آنذاك قبل استدعاء الدالة tone()‎ على الرجل التالية.

انظر أيضًا

  • الدالة noTone()‎: توقف توليد موجةٍ مربَّعةٍ على رجل معيَّنة أُنشئَت باستعمال الدالة tone()‎.
  • الدالة pulseIn()‎: تحسب طول نبضةٍ (إمَّا HIGH أو LOW) على رجل محدَّدة.
  • الدالة pulseInLong()‎ هي دالةٌ بديلةٌ محسَّنةٌ للدالة pulseIn()‎، إذ يمكنها التعامل مع نبضات ومقاطعات طويلة متأثرة بحالات مختلفة.
  • الدالة shiftIn()‎: تزيح بايتًا من البيانات من رجل محدَّدة إلى متغيِّر مقدار بتٍّ واحدٍ في كل مرة تتغير فيها حالة النبضة على رجل أخرى إلى HIGH.
  • الدالة shiftOut()‎: تزيح بايتًا من البيانات إلى رجل محدَّدة مقدار بتٍّ واحدٍ في كل مرة تتغير فيها حالة النبضة على رجل أخرى إلى HIGH.
  • مثال عملي: تشغيل لحن باستعمال الدالة tone()‎.
  • مثال عملي: إنشاء نغمة تتبع باستعمال الدالة tone()‎.
  • مثال عملي: إنشاء لوحة مفاتيح بسيطة مع استعمال الدالة tone()‎.
  • مثال عملي: تشغيل نغمات متعددة على عدة مخرجات باستعمال الدالة tone()‎.
  • درس: تعديل عرض النبضة (PWM).

مصادر