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

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

()analogWriteResolution در آردوینو، یک قسمت الحاقیِ (اضافه‌‌ی) API آنالوگ، برای آردوینو Genuino ،Due و آردینو Zero و MKR1000 است که مقدار رزولوشن تابع ()analogWrite را تنظیم می‌کند. ()analogWriteResolution برای سازگاری (مطابقت) با بردهای مبتنی بر AVR، به‌صورت پیش‌فرض به 8 بیت (مقادیری بین 225-0 را برمی‌گرداند) تنظیم شده است. آردوینو Due قابلیت‌های سخت‌افزاری زیر را دارد:

  • 12 پین که پیش‌فرض PWMهای 8 بیتی هستند(مانند بردهای مبتنی بر AVR). این‌ها قابل‌تغییر به 12 بیت رزولوشن هستند.
  • 2 پین با DAC (مبدل دیجیتال به آنالوگ) 12 بیتی.

با تنظیم رزولوشنِ write به 12، برای به‌کار انداختن رزولوشن DAC کامل یا تنظیم سیگنال PWM بدون رول اُوِر می‌توانید از ()alnalogWrite با مقادیری بین 0 تا 4095 استفاده کنید.

آردوینو Zero قابلیت‌های سخت‌افزاری زیر را دارد:

  • 10 پین که پیش‌فرض PWMهای 8 بیتی هستند(مانند بردهای مبتنی بر AVR). این‌ها قابل‌تغییر به 12 بیت رزولوشن هستند.
  • 1 پین با DAC (مبدل دیجیتال به آنالوگ) 10 بیتی.

با تنظیم رزولوشنِ write به 10، برای به‌کار انداختن رزولوشن DAC کامل می‌توانید از ()alnalogWrite با مقادیری بین 0 تا 1023 استفاده کنید.

MKR1000 قابلیت‌های سخت‌افزاری زیر را دارد:

  • 4 پین که پیش‌فرض PWMهای 8 بیتی هستند(مانند بردهای مبتنی بر AVR). این‌ها از 8 بیت (پیش‌فرض) قابل‌تغییر به 12 بیت رزولوشن هستند.
  • 1 پین با DAC (مبدل دیجیتال به آنالوگ) 10 بیتی.

با تنظیم رزولوشنِ write به 12 بیت،برای سیگنال PWM می‌توانید از ()alnalogWrite با مقادیری بین 0 تا 4095 استفاده کنید و برای به‌کار انداختن رزولوشن DAC کامل، روی پین DAC، آن را به 10 بیتِ 1024 مقداری تنظیم کنید.

سینتکس (نحو)

(analogWriteResolution(bits

پارامتر

bits: رزولوشن مقادیر استفاده‌شده در تابع ()analogWrite را (به بیت) تعیین می‌کند. این مقادیر می‌توانند از 1 تا 32 باشند. درصورتی‌که رزولوشنی بالاتر یا پایین‌تر از قابلیت‌های سخت‌افزاری بردتان را انتخاب کنید، مقدار استفاده‌شده در ()analogWrite اگر خیلی بالا باشد، کوتاه و یا اگر خیلی پایین باشد، با صفر پر خواهد شد. برای جزئیات بیشتر، نکته‌ی زیر را مشاهده کنید.

خروجی

هیچ (ندارد)

نکته

اگر مقدار ()analogWriteResolution را بالا‌تر(زیادتر) از امکانات برد خود تنظیم (ست) کنید، برد بیت‌های اضافی را دور خواهد انداخت. مثلاً در استفاده از آردوینو Due با (16)analogWriteResolution، روی پین DAC (مبدل دیجیتال به آنالوگ) 12 بیتی، تنها 12 بیت اولِ مقدار فرستاده‌شده به ()analogWrite استفاده می‌شود و 4 بیت آخر، دور انداخته می‌شود. اگر مقدار ()analogWriteResolution را پایین‌تر (کمتر) از امکانات برد خود تنظیم (ست) کنید، بیت‌های مفقود با صفر پر خواهد شد تا اندازه‌ی موردنیاز سخت‌افزاری را تکمیل کند. مثلاً در استفاده از آردوینو Due با (8)analogWriteResolution، روی پین DAC (مبدل دیجیتال به آنالوگ) 12 بیتی، آردوینو 4 بیت صفر را به مقدار 8 بیتی استفاده‌شده در ()analogWrite اضافه خواهد کرد تا 12 بیت تکمیل شود.

مثال:

 

void setup(){
// باز کردن یک ارتباط سریال جدید
Serial.begin(9600);
// ایجاد خروجی برای پین دیجیتالمان
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}

void loop(){
// خواندن ورودی روی
// A0
//و نگاشت (مپ) آن به یک پین
//PWM
// با یک ال‌ای‌دی متصل
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));

// تغییر رزولوشن
//PWM
// به 12 بیت
// رزولوشن 12 بیتی کامل فقط در آردوینو
//Due
// پشتیبانی می‌شود
analogWriteResolution(12);
analogWrite(12, map(sensorVal, 0, 1023, 0, 4095));
Serial.print(" , 12-bit PWM value : ");
Serial.print(map(sensorVal, 0, 1023, 0, 4095));

// تغییر رزولوشن
//PWM
// به 4 بیت
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);
}

 

Description of the analog input pins

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

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

()map

 

منبع

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

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