Map

Материал из MK90.ORG wiki
Перейти к:навигация, поиск

Справка Язык | Библиотеки | Сравнение | Изменения

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

Описание

Ремасштабирует число из одного диапазона в другой. Если число равно fromLow, то оно становится toLow; если число равно fromHigh - оно становится toHigh, а все промежуточные значения из диапазона fromLow..fromHigh пропорционально пересчитываются в значения toLow..toHigh. При этом value может и выходить за пределы диапазона - если необходимо ограничить ее значение, используйте функцию constrain() до или после вызова map().

Помните, что "нижняя" граница каждого диапазон может быть больше или меньше "верхней" границы, и тогда функцию map() можно использовать для "обращения" (реверсивного отображения), например:

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

Функция работает и с отрицательными значениями, например:

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

Функция map() использует целочисленные вычисления, поэтому дробная часть будет отбрасываться (а не огругляться или усредняться).

Синтаксис

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

Параметры

value: значение для преобразования

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;
}

Смотри также

Руководство по Wiring


Исправления, пожелания и новые статьи должны быть опубликованы через Форум.

Оригинальные тексты руководств и переводы распространяются Arduino и MK90 на условиях лицензии Creative Commons Attribution-ShareAlike 3.0 License. Примеры исходных кодов и ссылки являются общественным достоянием.