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

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

تكتب الدالة analogWrite()‎ قيمةً تشابهيةً (إشارة عبر معدل عرض النبضة [PWM]) على رجل محدَّدة. يمكن استعمالها لإضاء ضوء ليد بمستويات سطوع مختلفة أو قيادة محرك بسرعات مختلفة.

بعد استدعاء الدالة analogWrite()‎ ستولد الرجل موجة مربعة ثابتة ذات دورة عمل (duty cycle) محدَّدة حتى الاستدعاء التالي للدالة analogWrite()‎ (أو استدعاء الدالة digitalRead()‎ أو digitalWrite()‎) على نفس الرجل. تردد إشارة معدل عرض النبضة (PWM) هي 490 هرتز تقريبًا. في لوحات أردوينو Uno وما يشابهها، تردد الرجل 5 والرجل 6 يقارب 980 هرتز.

في أغلب لوحات أردوينو (تلك ذات المتحكمات ATmega168 أو ATmega328P)، تعمل هذه الدالة على الأرجل 3 و 5 و 6 و 9 و 10 و 11. في لوحات أردوينو Mega، تعمل هذه الدالة على الأرجل من 2 إلى 13 و من 44 إلى 46. أمَّا في لوحات أردوينو الأقدم ذات المتحكمات ATmega8، تعمل الدالة analogWrite()‎ على الأرجل 9 و 10 و 11 فقط.

تدعم لوحات أردوينو DUE استعمال الدالة analogWrite()‎ مع الأرجل من 2 إلى 13 بالإضافة إلى الرجل DAC0 و DAC1. تستعمل الرجل DAC0 والرجل DAC1 في تحويل الإشارة الرقمية إلى تشابهية (عبر محول رقمي تشابهي [Digital-to-Analog Converter]) وتسلك سلوك خرج تشابهي حقيقي. لا تحتاج إلى استدعاء الدالة pinMode()‎ لضبط الرجل إلى رجل خرج قبل استدعاء الدالة analogWrite()‎.

ليس للدالة analogWrite()‎ أية صلة بالأرجل التشابهية أو الدالة analogRead()‎.

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

analogWrite(pin, value)

المعاملات

pin

عددٌ يشير إلى الرجل الرقمية المراد قراءة قيمتها.

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

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

أمثلة

ضبط قيمة الرجل 13 المعرَّفة على أنها رجل خرج إلى نفس قيمة الرجل 7 المعرَّفة على أنَّها رجل دخل:
int ledPin = 13;   // هنالك ضوء ليد متصل بالرجل 13 الرقمية
int inPin = 7;     // زر ضغط متصل بالرجل 7 الرقمية
int val = 0;       // مغير لتخزين القيمة المقروءة

void setup()
{
  pinMode(ledPin, OUTPUT);      // ضبط الرجل 13 الرقمية على أنها رجل خرج 
  pinMode(inPin, INPUT);        // ضبط الرجل 7 الرقمية على أنها رجل دخل
}

void loop()
{
  val = digitalRead(inPin);     // قراءة رجل الدخل
  digitalWrite(ledPin, val);    // ضبط حالة الضوء إلى قيمة الزر
}

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

يكون للإشارات PWM المولَّدة على الرجل 5 والرجل 6 دورات عمل (duty cycles) أعلى من المتوقع بسبب التفاعلات مع الدالتين millis()‎ و delay()‎ اللتين تتشاركان المؤقت الداخلي نفسه المستعمل في توليد الإشارات PWM تلك. سيلاحظ هذا الأمر أغلب الأحيان عند ضبط دورة العمل إلى قيم منخفضة (مثل ضبطها إلى قيمة بين 0 و 10) والذي قد ينتج عنها القيمة 0 التي لا تُطفِئ (turning off) الإشارة المخرجة على الرجل 5 والرجل 6 بشكل كامل.

انظر أيضًا

  • الدالة analogRead()‎: تقرأ قيمة رجل تشابهية محدَّدة وتعيدها.
  • الدالة analogReference()‎: تهيِّئ قيمة الجهد المرجعي (reference voltage) المستعمل من أجل الدخل التشابهي (أي القيمة المستعملة بوصفها أعلى قيمة ضمن مجال القيم المدخلة).
  • الدالة analogWriteResolution()‎: هي دالةٌ ملحقةٌ بالواجهة البرمجية التشابهية (Analog API) مخصَّصةٌ للوحات أردوينو Due، إذ تُستعمَل لضبط دقة الدالة analogWrite()‎.
  • درس تعليمي يشرح أرجل الدخل التشابهية.
  • مثال عملي حول إضاءة ضوء ليد بشكل متقطع.

مصادر