Funkcia → map()
Popis :
Premapuje číslo z jedného rozsahu do druhého. To znamená, že hodnota (fromLow) by sa namapovala na (toLow), hodnota (fromHigh) na (toHigh), hodnoty (in-between) na hodnoty (in-between) atď.
Neobmedzuje hodnoty na rozsah, pretože hodnoty mimo rozsah sú niekedy zamýšľané a užitočné. Funkciu constrain() možno použiť buď pred touto funkciou alebo po nej, ak sú požadované limity rozsahov.
Všimnite si, že „dolné hranice“ ktoréhokoľvek rozsahu môžu byť väčšie alebo menšie ako „horné hranice“, takže funkciu map() možno použiť na obrátenie rozsahu čísel, napr.
y = map(x, 1, 50, 50, 1);
Funkcia dobre zvláda aj záporné čísla, napr.
y = map(x, 1, 50, 50, -100);
Funkcia map() používa celočíselnú matematiku, takže nebude generovať zlomky. Zlomkové zvyšky sú skrátené a nie sú zaokrúhlené ani spriemerované.
Syntax :
map(value, fromLow, fromHigh, toLow, toHigh)
Parametre :
hodnota: číslo na mapovanie.
fromLow: spodná hranica aktuálneho rozsahu hodnoty.
fromHigh: horná hranica aktuálneho rozsahu hodnoty.
toLow: dolná hranica cieľového rozsahu hodnoty.
toHigh: horná hranica cieľového rozsahu hodnoty.
Returns :
Mapovaná hodnota. (data type) : long.
Príklad kódu :
/* Mapujte analógovú hodnotu na 8 bitov (0 až 255) */
void setup() {}
void loop() {
int val = analogRead(0);
val = map(val, 0, 1023, 0, 255);
analogWrite(9, val);
}
Poznámky :
Pre matematicky založených je tu celá funkcia
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;
}
Ako už bolo spomenuté, funkcia map() používa celočíselnú matematiku. Takže zlomky môžu byť kvôli tomu potlačené. Napríklad zlomky ako 3/2, 4/3, 5/4 budú všetky vrátené ako 1 z funkcie map() napriek ich odlišným skutočným hodnotám. Ak teda váš projekt vyžaduje presné výpočty (napr. napätie s presnosťou na 3 desatinné miesta), zvážte, či sa vyhnete mape () a implementujete výpočty do svojho kódu ručne.
Pridaj komentár