Analog I/O - آنالوگ

analogWrite – نوشتن آنالوگ

analogWrite - نوشتن آنالوگ

توضیحات

تابع analogWrite – نوشتن آنالوگ مقدار آنالوگ را روی پین مورد نظر می نویسد. می توان به کمک ان میزان روشنایی یک LED را تنظیم یا سرعت حرکت یک موتور را تنظیم کرد. پس از فراخوان تابع analogWrite – نوشتن آنالوگ، پین یک موج مستطیلی را ایجاد می کند تا زمانی که یکی از توابع analogWrite (یا digitalRead() یا digitalWrite()) در همان پین فراخوان شوند.

BoardPWM PinsPWM Frequency
Uno, Nano, Mini3, 5, 6, 9, 10, 11490 Hz (pins 5 and 6: 980 Hz)
Mega2 – 13, 44 – 46490 Hz (pins 4 and 13: 980 Hz)
Leonardo, Micro, Yún3, 5, 6, 9, 10, 11, 13490 Hz (pins 3 and 11: 980 Hz)
Uno WiFi Rev2, Nano Every3, 5, 6, 9, 10976 Hz
MKR boards *0 – 8, 10, A3, A4732 Hz
MKR1000 WiFi *0 – 8, 10, 11, A3, A4732 Hz
Zero *3 – 13, A0, A1732 Hz
Nano 33 IoT *2, 3, 5, 6, 9 – 12, A2, A3, A5732 Hz
Nano 33 BLE/BLE Sense1 – 13, A0 – A7500 Hz
Due **2-131000 Hz
1013, 5, 6, 9pins 3 and 9: 490 Hz, pins 5 and 6: 980 Hz
  • * علاوه بر قابلیت های ذکر شده در پین ها ، برد های MKR، Nano 33 IoTو Zero هنگام استفاده از تابع analogWrite – نوشتن آنالوگ در پایه DAC0(A0) باید توجه شود که دارای خروجی آنالوگ واقعی هستند.
  • ** علاوه بر قابلیت های PWM در پایه های ذکر شده در بالا ، هنگام استفاده از analogWrite () در پایه های DAC0 و DAC1 ، دلیل خروجی آنالوگ واقعی است.
  • برای تنظیم پین به عنوان یک خروجی قبل از فراخوانی analogWrite نیازی به تماس با pinMode()  نیست.
  • عملکرد analogWrite هیچ ارتباطی با پین های آنالوگ یا تابع analogRead ندارد.

نحوه استفاده

analogWrite(pin, value)
  • در قسمت pin باید پینی وارد شود که مقدار به ان داده شود.
  • در قسمت value باید چرخه کار ذکر شود. بین 0 (همیشه خاموش) و 255 (همیشه روشن).
  • هر دو داده pin و value باید از نوع int باشند

خروجی تابع

تابع خروجی ندارد.

مثال

دادن خروجی به LED متناسب با مقدار خوانده شده از پتاسیومتر.

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

void setup() {
  pinMode(ledPin, OUTPUT);  // پین را به عنوان خروجی تنظیم می کنیم
}

void loop() {
  val = analogRead(analogPin);  // پین ورودی را می خوانیم
  analogWrite(ledPin, val / 4); //
 از 0 تا 255 تبدیل می کنیم analogWrite از 0 تا 1023، analogRead مقادیر
}

نکات مهم

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

مطالعه بیشتر

PWM

نوشته های مشابه

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

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