دستور 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 ندارد.
جهت کسب اطلاعات بیشتر، مقالات زیر را مشاهده کنید:
- PWM چیست ؟ آموزش انواع پالس PWM
- آموزش راه اندازی PWM با برد آردوینو
- آموزش کنترل سروو موتور با برد آردوینو
دستور 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 شود.
دستورات مرتبط:
سلام وقت شما بخیر
عذر میخوام دستمو ک روی سنسور ضربان قلب میزارم پالس نمیدازه رو مانیتور درصورتی که بصورتی لحظه ای اگ قرار بدم دستمو؛ پالس مشاهده میکنم
میشه بفرمایین مشکل چی هستش؟
سلام عزیز
سوالتون مربوط به کدام پروژه سایت هست؟ در همان مطلب اعلام کنید
سلام خسته نباشید
آیا می شود در آردوینو ینو پایه های آنالوگ یعنیA0تاA5 رو خروجی قرداد یعنی همون PWM کرد
سلام عزیز، میشه خروجی باشند اما PWM خیر