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

من موسوعة حسوب
< Arduino‏ | analog io
مراجعة 07:18، 17 أكتوبر 2018 بواسطة جميل-بيلوني (نقاش | مساهمات)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث

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

تملك لوحات أردوينو Due الإمكانيات العتادية التالية:

  • 12 رجل مولِّدة لإشارات PWM بدقة 8 بت افتراضية -مثل اللوحات التي تعتمد على متحكمات AVR-. يمكن زيادة الدقة لتصل إلى 12 بت.
  • 12 رجل مع محول رقمي تشابهي (DAC، اختصارٌ للعبارة Digital-to-Analog Converter) بدقة 12 بت.

متى ما ضُبطَت الدقة إلى 12 بت، يصبح بإمكانك استعمال الدالة analogWrite()‎ مع قيم تتراوح بين 0 و 4095 للاستفادة القصوى من دقة المحول DAC أو لضبط الإشارة PWM دون تدوير القيم (rolling over).

تملك لوحات أردوينو Zero الإمكانيات العتادية التالية:

  • 10 أرجل مولدة لإشارات PWM بدقة 8 بت افتراضية -مثل اللوحات التي تعتمد على متحكمات AVR-. يمكن زيادة الدقة لتصل إلى 12 بت.
  • 1 رجل مع محول رقمي تشابهي (DAC) بدقة 10 بت.

متى ما ضُبطَت الدقة إلى 10 بت، يصبح بإمكانك استعمال الدالة analogWrite()‎ مع قيم تتراوح بين 0 و 1023 للاستفادة القصوى من دقة المحول DAC.

تملك عائلة لوحات أردوينو MKR الإمكانيات العتادية التالية:

  • 4 أرجل مولدة لإشارات PWM بدقة 8 بت افتراضية -مثل اللوحات التي تعتمد على متحكمات AVR-. يمكن تغيير الدقة من 8 (الافتراضية) إلى 12 بت.
  • 1 رجل مع محول رقمي تشابهي (DAC) بدقة 10 بت.

متى ما ضُبطَت الدقة إلى 12 بت، يصبح بإمكانك استعمال الدالة analogWrite()‎ مع قيم تتراوح بين 0 و 4095 لإشارات PWM. اضبط الدقة إلى 10 بت على الأرجل DAC لاستغلال دقة المحول DAC للقيم 1024 بشكل كامل.

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

analogWriteResolution(bits)

المعاملات

bits

عددٌ صحيحٌ يحدِّد دقة القيم المستعملة في الدالة analogWrite()‎ بالبت. يمكن أن تتراوح قيمة هذا المعامل بين 1 و 32. إن اخترت دقة أعلى أو أدنى من المجال الذي يحدده عتاد اللوحة لديك، فإمَّا ستُقتطَع القيمة المستعملة مع الدالة analogWrite()‎ في حال كانت أعلى من القيمة القصوى أو ستُملأ بأصفار في حال كانت صغيرة جدًا. اقرأ قسم "الملاحظات والتحذيرات" في الأسفل بعناية لمزيد من التوضيح حول هذا الأمر.

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

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

أمثلة

مثالٌ على استعمال الدالة analogWriteResolution()‎ مع قيم مختلفة للدقة:

void setup(){
  // بدء واجهة التخاطب التسلسلية
  Serial.begin(9600);
  // تهيئة الأرجل 11 و 12 و 13 إلى أرجل خرج 
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

void loop(){
  // PWM وكتابتها على إحدى أرجل A0 قراءة القيم من الرجل
  // المتصلة مع ضوء ليد
  int sensorVal = analogRead(A0);
  Serial.print("Analog Read) : ");
  Serial.print(sensorVal);

  // PWM استعمال الدقة الافتراضية من أجل إشارات
  analogWriteResolution(8);
  analogWrite(11, map(sensorVal, 0, 1023, 0 ,255));
  Serial.print(" , 8-bit PWM value : ");
  Serial.print(map(sensorVal, 0, 1023, 0 ,255));

  // إلى 12 بت PWM تغيير دقة
  // Due الدقة 12 بت الكاملة مدعومة فقط في لوحات
  analogWriteResolution(12);
  analogWrite(12, map(sensorVal, 0, 1023, 0, 4095));
  Serial.print(" , 12-bit PWM value : ");
  Serial.print(map(sensorVal, 0, 1023, 0, 4095));

  // إلى 4 بت PWM تغيير دقة
  analogWriteResolution(4);
  analogWrite(13, map(sensorVal, 0, 1023, 0, 15));
  Serial.print(", 4-bit PWM value : ");
  Serial.println(map(sensorVal, 0, 1023, 0, 15));

  delay(5);
}

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

إن ضُبٍطَت قيمة الدقة عبر الدالة analogWriteResolution()‎ إلى قيمة أكبر من القيمة القصوى التي توفرها لوحتك، فستضبط أردوينو الدقة إلى القيمة القصوى وتتجاهل القيمة الإضافية. على سبيل المثال، سيؤدي استدعاء الدالة بالشكل analogWriteResolution(16)‎ في لوحة أردوينو Due على رجل لها الخاصية DAC بدقة 12 بت إلى استعمال البتات 12 الأولى للقيم الممرَّرة إلى الدالة analogWrite()‎ وإهمال البتات الأربعة الأخيرة.

إن ضُبطَت قيمة الدقة عبر الدالة analogWriteResolution()‎ إلى قيمة أقل من الإمكانيات التي توفرها لوحتك، فستحل أصفارٌ مكان البتات الناقصة لملء الحجم الذي يتطلبه العتاد. على سبيل المثال، سيؤدي استدعاء الدالة بالشكل analogWriteResolution(8)‎ في لوحة أردوينو Due على رجل لها الخاصية DAC بدقة 12 بت إلى إضافة 4 بتات صفرية إلى قيمةٍ بحجم 8 بت مستعملة في الدالة analogWrite()‎ للحصول على قيمة بحجم 12 بت كما هو مطلوب.

انظر أيضًا

  • الدالة analogReadResolution()‎: هي دالةٌ ملحقةٌ بالواجهة البرمجية التشابهية (Analog API) مخصَّصةٌ للوحات أردوينو Due، و Zero، و MKR، إذ تُستعمَل لضبط حجم (دقة) القيمة المعادة من الدالة analogRead()‎.
  • الدالة analogWrite()‎: تكتب قيمةً تشابهيةً (إشارة عبر معدل عرض النبضة [PWM]) على رجل محدَّدة.
  • الدالة analogRead()‎: تقرأ قيمة رجل تشابهية محدَّدة وتعيدها.
  • الدالة map()‎:
  • درس تعليمي يشرح أرجل الدخل التشابهية.

مصادر