آموزش, رفرنس

()analogWrite در آردوینو

()analogWrite در آردوینو

()analogWrite در آردوینو یک مقدار آنالوگ (PWM wave) را روی پین می‌نویسد. از ()analogWrite می‌توان برای تنظیم روشنایی یک ال‌ای‌دی با شدت نور متنوع یا راندن یک موتور با سرعت‌های مختلف استفاده کرد. پس از فراخوانی ()analogWrite، تا فراخوانی بعد همین دستور (یا فراخوانی ()digitalRead یا ()digitalWrite روی همان پین) پین یک موج مربعی ثابت را طبق چرخه‌ی وظیفه‌ی (دوره‌ی کاری – duty cycle) مشخص‌شده، تولید خواهد کرد. در بیشتر پین‌ها، فرکانس سیگنال PWM، تقریباً 490 هرتز است. در آردوینو Uno و بردهای مشابه، پین‌های 5 و 6 حدوداً فرکانس 980 هرتز دارند. پین‌های 3 و 11 Leonardo هم فرکانس 980 هرتز دارند.

 

در بیشتر بردهای آردوینو (آن‌هایی که مبتنی بر  ATmega168 و ATmega328 هستند)، این تابع (فانکشن) روی پین‌های 10،9،6،5،3 و 11 و در آردوینو Mega، تابع روی پین‌های 13-2 و 46-44 کار می‌کند. بردهای قدیمی‌تر آردوینو دارای ATmega8، فقط روی پین‌های 10،9 و 11 از ()analogWrite پشتیبانی می‌کند.

آردوینو Duo از ()analogWrite روی پین 2 ار طریق پین 13 و پین‌های DAC0 و DAC1 پشتیبانی می‌کند. بر‌خلاف پین‌های PWM، پین  DAC0 و DAC1 مبدل دیجیتال به آنالوگ هستند و همانند خروجی‌های آنالوگ واقعی عمل می‌کنند.

قبل از فراخوانی ()analogWrite نیازی به فراخوانی ()pinMode و تنظیم پین‌ها به‌عنوان خروجی نیست.

تابع analogWrite هیچ ارتباطی با پین‌های آنالوگ و  تابع analogRead ندارد.

سینتکس (نحو)

(analogWrite(pin, value

پارامتر

pin: پین برای نوشتن.

value: چرخه‌ی وظیفه: بین ۲۵۵ (همیشه on) و ۰ (همیشه off)

خروجی

ندارد (هیچ)

نکته

خروجی‌های PWM تولید‌شده روی پین‌های 5 و 6، چرخه‌ی وظیفه‌ی بالاتری نسبت به آنچه انتظار می‌رود را خواهد داشت. این اتفاق به دلیل اثر متقابل با توابع ()millis و ()delay است که تایمر درونیِ یکسانی را برای تولید آن خروجی‌های PWM به‌صورت مشترک استفاده می‌کنند و بیشتر در تنظیمات پایین چرخه‌ی وظیفه (به‌عنوان‌مثال 10 – 0) دیده خواهد شد و ممکن است به مقداری از 0 که به‌صورت کامل خروجی روی پین 5 و 6 را خاموش نکند، بیانجامد.

مثال:

خروجی را به LED تنظیم می کند که متناسب با مقدار خوانده‌شده از پتانسیومتر است:

()analogRead در آردوینو

 

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

4 دیدگاه در “()analogWrite در آردوینو

  1. Avatar for سپهر یحیایی سپهر یحیایی گفت:

    خوب بود اما کامل نبود بهتر بود ک توضیحات بیشتری بدهید .
    همینطور برنامه رو باز تر می‌کردید .
    ممنون

    1. Avatar for Sisoog Os Sisoog Os گفت:

      این قسمت بیشتر یه حالت رفرنس داره و ترجمه خود سایت اردوینو هست و گرنه واقعا جا برای توضیحات خیلی زیاد تر هست

  2. Avatar for حامد حامد گفت:

    ببخشید نوشتید که: وقتی value =0 باشه حالت on خواهد داشت و وقتی که value=255باشه حالت off خواهد داشت (در حالت analogWrite).
    این برعکسش درست نیست؟

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      بله دوست عزیز – اصلاح شد
      ممنون برای نکته سنجی شما 🙂

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *