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

دستور map در آردوینو (تناسب گیری بین محدوده ها)

دستور map در آردوینو برای تناسب گیری عدد ورودی از یک محدوده به محدوده دیگر استفاده میشود.

تابع map() یک عدد را از یک محدوده به محدوده دیگر منتقل میکند. به طور مثال یک عدد بین 10 تا 20 را به عددی بین 40 تا 80 تبدیل میکند. همچنین استفاده از دستور constrain برای قبل و بعد از این دستور مفید است.

توجه داشته باشید که “مرزهای پایین” هر دامنه ممکن است بزرگتر یا کوچکتر از “مرزهای بالایی” باشد بنابراین ممکن است از تابع map () برای معکوس کردن یک محدوده از اعداد استفاده شود،

این تابع همچنین اعداد منفی را به خوبی کنترل می کند ، مانند این مثال

y = map(x, 1, 50, 50, -100);

تابع map () از اعداد صحیح استفاده می کند بنابراین کسری ایجاد نمی کند. ممکن است با قوانین ریاضی تناسب مورد نظر شما اعشاری باشد اما این دستور اعشار و … را ایجاد نمیکند.

دستور map

map(value, fromLow, fromHigh, toLow, toHigh)

  • value: عدد ورودی شما
  • fromLow: تعیین محدوده پایین ورودی (حداقل)
  • fromHigh: تعیین محدوده بالا ورودی (حداکثر)
  • toLow: تعیین محدوده پایین خروجی (حداقل)
  • toHigh: تعیین محدوده بالا خروجی (حداکثر)

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

مقدار تناسب گیری شده را برمیگرداند.

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

در کد ما یک عدد را از محدوده 0 تا 1023 به محدوده 0 تا 255 منتقل میکنیم. در کد زیر از دستور analogRead و analogWrite نیز استفاده میشود.

void setup() {}

void loop() {
  int val = analogRead(0); // مقدار ورودی از پین 0 خوانده میشود
  val = map(val, 0, 1023, 0, 255); // عدد از محدوده 0 تا 1023 به محدوده 0 تا 255 تبدیل میشود.
  analogWrite(9, val); // عدد خروجی برای ایجاد سیگنال PWM استفاده میشود.
}

نکات:

همانطور که قبلاً ذکر شد، تابع map () از ریاضیات عدد صحیح استفاده می کند. به همین دلیل کسر ها با این دستور ایجاد نمیشوند. به عنوان مثال ، کسرهایی مانند 3/2 ، 4/3 ، 5/4 همه به صورت 1 بر می گردند. بنابراین اگر پروژه شما نیاز به محاسبات دقیق دارد (به عنوان مثال ولتاژ دقیق تا 3 رقم اعشاری)، بهتر است خودتان با ریاضیات صحیح و واقعی تناسب گیری را انجام دهید.

5/5 - (3 امتیاز)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام آیرنکس را دنبال کنید.
تصویر از محمد رحیمی

محمد رحیمی

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

2 نظر

  1. ممنون از سایت عالی شما
    خود این سایت برابری میکنه با بسته های پولی
    واقعا ممنون

    1. سلام عزیز، خوشحالم که سایت برای شما مفید واقع شده

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

نشانی ایمیل شما منتشر نخواهد شد.