Arduino/analog io/analogwrite

من موسوعة حسوب
مراجعة 11:44، 16 أكتوبر 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (أنشأ الصفحة ب'تكتب الدالة <code>analogWrite()‎</code> قيمةً تشابهيةً (إشارة معدل عرض النبضة [PWM]) على رجل محدَّدة. يمكن ا...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

تكتب الدالة 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 في تحويل الإشارة الرقمية إلى تشابهية (عبر محول رقمي تشابهي) وتسلك سلوك خرج تشابهي حقيقي. لا تحتاج إلى استدعاء الدالة 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);    // ضبط حالة الضوء إلى قيمة الزر
}

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

انظر أيضًا

مصادر