Функція map(value, fromLow, fromHigh, toLow, toHigh)

Документація

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


Відображає значення з одного діапазону в інший. Тобто значення з fromLow відображатиметься в toLow, а значення з fromHigh в toHigh, проміжні значення в проміжні значення тощо.

Не обмежує значення діапазоном, тому що значення поза діапазоном іноді навмисні та корисні. Функція constrain() може бути використана до чи після цієї функції, якщо обмеження діапазонів є бажаним.

Зауважте, що “нижні межі” будь-якого діапазону можуть бути більшими чи меншими за “верхні межі”, тому функція map() може використовуватися, щоб перевернути діапазон чисел, наприклад

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

Ця функція також обробляє від'ємні числа, так що цей приклад теж дійсний і працює добре:

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

Функція map() використовує цілочисельні обчислення, тому не створюватиме дробів, коли може здатися, що вона повинна це зробити. Дробові залишки відкидаються, а не округлюються чи усереднюються.

Параметри

значення: число для відображення

fromLow: нижня межа поточного діапазону значення

fromHigh: верхня межа поточного діапазону значення

toLow: нижня межа цільового діапазону значення

toHigh: верхня межа цільового діапазону значення

Повертає

Відображене значення

Приклад

/* Відобразити на аналоговому значення 8 бітів (від 0 до 255) */
void setup() {}
 
void loop()
{
  int val = analogRead(0);
  val = map(val, 0, 1023, 0, 255);
  analogWrite(9, val);
}


Додаток

Для прихильників математики нижче вся функція.

long map(long x, long in_min, long in_max, long out_min, long out_max)
{
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}


Повернутись до головної

Коментарі 0

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.