Преобразовывает значение переменной из одного диапазона в другой. Т.е. значение переменной value, равное fromLow, будет преобразовано в число toLow, а значение fromHigh - в toHigh. Все промежуточные значения value масштабируется относительного нового диапазона [toLow; toHigh].
Функция не ограничивает значение переменной заданными пределами, поскольку ее значения вне указанного диапазона иногда несут полезную информацию. Для ограничения диапазона необходимо использовать функцию constrain() либо до, либо после функции map().
Обратите внимание, что нижние пределы указываемых диапазонов (fromLow, toLow) численно могут быть больше верхних пределов (fromHigh, toHigh). В этом случае функция map() может использоваться для создания обратного диапазона чисел, например:
y = map(x, 1, 50, 50, 1);
Функция может обрабатывать отрицательные числа, поэтому этот пример
y = map(x, 1, 50, 50, -100);
также работает корректно.
Функция map() использует целочисленные вычисления, поэтому не возвращает дробных значений, как это иногда ожидается. При этом дробная часть числа просто отбрасывается, без округления или вычисления средних значений.
result = map(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;
}
Если у Вас есть опыт в работе с Arduino и собственно есть время для творчества, мы приглашаем всех желающих стать авторами статей публикуемых на нашем портале. Это могут быть как уроки, так и рассказы о ваших экспериментах с Arduino. Описание различных датчиков и модулей. Советы и наставления начинающим. Пишите и размещайте свои статьи в соответсвующей ветке форума.