Сейчас ваша корзина пуста!
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() для ограничения результатов
- Порядок границ влияет на направление преобразования
- При неверном указании границ может возникнуть некорректный результат
Типичные ошибки
- Неправильный порядок указания границ
- Забывание о типе данных (только целые числа)
- Недооценка влияния дробной части
- Отсутствие проверки на корректность входных данных

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