Arduino:Справочник языка Arduino/Функции/Математические функции/map()

Материал из ВикиСправочника
Перейти к: навигация, поиск

Проверка/Оформление/Редактирование: Мякишев Е.А.


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

Функция пропорционально переносит значение (value) из текущего диапазона значений (fromLow .. fromHigh) в новый диапазон (toLow .. toHigh), заданный параметрами.

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

Обратите внимание, что "нижняя граница" может быть как меньше, так и больше "верхней границы". Это может быть использовано для того чтобы "перевернуть" диапазон":

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

Возможно использование отрицательных значений:

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

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

Параметры

value: значение для переноса
fromLow: нижняя граница текущего диапазона
fromHigh: верхняя граница текущего диапазона
toLow: нижняя граница нового диапазона, в который переноситься значение
toHigh: верхняя граница нового диапазона

Возвращаемое значение

Значение в новом диапазоне.

Пример

  1. /* Переносим значение с аналогового входа (возможные значения от 0 до 1023) в 8 бит (0..255) */
  2. void setup() {}
  3.  
  4. void loop()
  5. {
  6.   int val = analogRead(0);
  7.   val = map(val, 0, 1023, 0, 255);
  8.   analogWrite(9, val);
  9. }

Дополнительно

Математически функция map() может быть записана так:

  1. long map(long x, long in_min, long in_max, long out_min, long out_max)
  2. {
  3.   return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
  4. }

См.также

Внешние ссылки