Jméno

map — mapování hodnoty z jednoho rozsahu do jiného

Přehled

long map(value,  
 fromLow,  
 fromHigh,  
 toLow,  
 toHigh); 
long  value;
long  fromLow;
long  fromHigh;
long  toLow;
long  toHigh;
  • value — hodnota k převední
  • fromLow, fromHigh — dolní a horní hodnota intervalu z kterého se převádí
  • toLow, tohigh — dolní a horní hodnota intervalu do kterého se převádí

Popis

Funkce mapuje číslo z jednoho rozsahu na druhý. Ppkud potřebujeme převést hodnotu v jedné soustvě do jiné soustavy, musíme si napsat příslušné rovnice a z nich odvodi převodní funkci. Pro usnadnění tohoto úkolu máme k dispozici funkci map.

Příklad

Tento příklad ukazuje použití funkce map při převodu analogové hodnoty. Čtená hodnota je v rozsahu <0, 1023> a potřebujeme ji převést (namapovat) na rozsah <0, 255>.

void setup() {
}

void loop() {
    int val = analogRead(0);
    val = map(val, 0, 1023, 0, 255);
    analogWrite(9, val);
}

Zajímavou možností je otočit intervaly. Tím myslím zápis:

int val = analogRead(0);
val = map(val, 0, 1023, 255, 0);
analogWrite(9, val);

Tedy nejnižší hodnou ze vstupního intervalu mapujeme na nejvyšší hodnotu výstupního intervalu. To znamená že když se vstupní hodnota zvetěšuje, výstupní hodnota klesá.

Dodatek

Pro zajímavost, funkce map je definována takto

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

Odkazy

Související informace: Arduino.constrain;

Licence Creative Commons
Elektronika a počítače, jejímž autorem je Radek Hnilica, podléhá licenci Creative Commons Uveďte autora-Nevyužívejte dílo komerčně-Zachovejte licenci 3.0 Česká republika .