آموزش آردوینودستورات آردوینو

دستور analogWrite در آردوینو (ایجاد موج PWM)

دستور analogWrite در آردوینو برای ایجاد موج PWM استفاده میشود.

با این دستور مقدار PWM مورد نظر خود را روی یک پین ایجاد میکنیم. از این دستور برای روشن کردن یک LED در شدت روشنایی های مختلف، حرکت موتور با سرعت متفاوت و … استفاده میشود. با این دستور میتوانیم چرخه وظیفه سیگنال PWM ایجاد شده در پین مورد نظر را تغییر بدهیم.

برد پین های PWM PWM فرکانس PWM

Uno, Nano, Mini

3, 5, 6, 9, 10, 11

490 هرتز (پین های 5 و 6: 980 هرتز)

Mega

2 – 13, 44 – 46

490 هرتز (پین های 4 و 13: 980 هرتز)

Leonardo, Micro, Yún

3, 5, 6, 9, 10, 11, 13

490 هرتز (پین های 3 و 11: 980 هرتز)

Uno WiFi Rev2, Nano Every

3, 5, 6, 9, 10

976 هرتز

MKR boards *

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

0 – 8, 10, A3, A4

732 هرتز

MKR1000 WiFi *

0 – 8, 10, 11, A3, A4

732 هرتز

Zero *

3 – 13, A0, A1

732 هرتز

Nano 33 IoT *

2, 3, 5, 6, 9 – 12, A2, A3, A5

732 هرتز

Nano 33 BLE/BLE Sense

1 – 13, A0 – A7

500 هرتز

Due **

2-13

1000 هرتز

101

3, 5, 6, 9

پین های 3 و 9: 490 هرتز , پین های 5 و 6: 980 هرتز

برای تنظیم پین به عنوان یک خروجی قبل از فراخوانی analogWrite () نیازی به استفاده از دستور pinMode نیست. تابع analogWrite هیچ ارتباطی با پین های آنالوگ یا تابع analogRead ندارد.

جهت کسب اطلاعات بیشتر، مقالات زیر را مشاهده کنید:

دستور analogWrite

analogWrite(pin, value)

  • pin: به جای pin باید نام پین که میخواهید در آن سیگنال PWM ایجاد کنید بنویسید.
  • value: در این پارامتر باید چرخه وظیفه را تعیین کنید. این مقدار میتواند بین 0 (همیشه خاموش) تا 255 (همیشه روشن) باشد.

به طور مثال اگر میخواهید با برد آردوینو اونو، یک ال ای دی را در پین 3 با روشنایی 50 درصد فعال کنید، باید دستور را به صورت analogWrite(3,125) بنویسید.

چه چیزی را بر میگرداند؟

هیچ چیز

نمونه کد با دستور analogWrite

در کد زیر ما مقدار ولتاژ بدست آمده از پتانسیومتر را میخوانیم. مقدار را تقسیم بر 4 میکنیم و عدد بدست آمده که بین 0 تا 255 است را در دستور analogWrite قرار میدهیم.

int ledPin = 9;      // ال ای دی به پین 9 متصل است
int analogPin = 3;   // پتانسیومتر به پین 3 متصل است
int val = 0;         // متغیر برای ذخیره مقدار چرخه وظیفه

void setup() {
  pinMode(ledPin, OUTPUT);  // تعیین پین در حالت خروجی
}

void loop() {
  val = analogRead(analogPin);  // خواندن مقدار ورودی از پتانسیومتر
  analogWrite(ledPin, val / 4); // روشن کردن ال ای دی با مقدار بدست آمده
}

نکات:

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

مطلب پیشنهادی:  اتصال گیرنده مادون قرمز به آردوینو و کنترل با ریموت

دستورات مرتبط:

4.5 (2 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

برای ارسال تصاویر از انجمن سایت استفاده کنید.

سوالات فنی را در انجمن سایت مطرح کنید تا در مسابقه شرکت کنید. ورود به انجمن

4 نظر

  1. سلام وقت شما بخیر
    عذر میخوام دستمو ک روی سنسور ضربان قلب میزارم پالس نمیدازه رو مانیتور درصورتی که بصورتی لحظه ای اگ قرار بدم دستمو؛ پالس مشاهده میکنم
    میشه بفرمایین مشکل چی هستش؟

    1. سلام عزیز
      سوالتون مربوط به کدام پروژه سایت هست؟ در همان مطلب اعلام کنید

  2. سلام خسته نباشید
    آیا می شود در آردوینو ینو پایه های آنالوگ یعنیA0تاA5 رو خروجی قرداد یعنی همون PWM کرد

    1. سلام عزیز، میشه خروجی باشند اما PWM خیر

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

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