map()

map() — функция для пропорционального преобразования значений из одного диапазона в другой. Она позволяет масштабировать входные данные под требуемые параметры.

Синтаксис

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

Параметры

value - исходное значение для преобразования
fromLow - нижняя граница исходного диапазона
fromHigh - верхняя граница исходного диапазона
toLow - нижняя граница целевого диапазона
toHigh - верхняя граница целевого диапазона

Пример

void setup() {
  Serial.begin(9600);
}

void loop() {
  // Считываем значение с аналогового входа (0-1023)
  int analogVal = analogRead(A0);
  
  // Преобразуем в диапазон 0-255 для ШИМ
  int pwmVal = map(analogVal, 0, 1023, 0, 255);
  
  // Преобразуем в диапазон температур -20..50
  int tempVal = map(analogVal, 0, 1023, -20, 50);
  
  Serial.print("Исходное: "); Serial.print(analogVal);
  Serial.print(" | PWM: "); Serial.print(pwmVal);
  Serial.print(" | Температура: "); Serial.println(tempVal);
  
  delay(500);
}

Примечание

Особенности работы

  • Работает только с целыми числами
  • Дробная часть при преобразовании отбрасывается, а не округляется
  • Границы диапазонов могут быть расположены в любом порядке
  • Можно использовать отрицательные значения

Практическое применение

Функция используется в следующих случаях:

  • Преобразование значений с датчиков
  • Масштабирование данных для вывода
  • Настройка параметров устройств
  • Адаптация значений под конкретные нужды

Важные особенности

  • Функция не ограничивает значения диапазоном автоматически
  • Можно комбинировать с constrain() для ограничения результатов
  • Порядок границ влияет на направление преобразования
  • При неверном указании границ может возникнуть некорректный результат

Типичные ошибки

  • Неправильный порядок указания границ
  • Забывание о типе данных (только целые числа)
  • Недооценка влияния дробной части
  • Отсутствие проверки на корректность входных данных

Тип функции

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *