()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 بیت تکمیل شود.
مثال:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | 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); } |
سلام برای تغییر رزولوشن فقط یکبار کافیه که تابع analogWriteResolution() رو در بخش setup صدا بزنیم یا باید هر بار که میخوایم از analogWrite() استفاده کنیم قبلش analogWriteResolution() رو بکار ببریم؟؟
سلام دوست عزیز
تنها کافیه یک بار این تابع فراخوان بشه و تا زمانی که نخواهید دقت رو تغییر بدید نیازی نیست مجددا این تابع رو صدا بزنید