Leírás
Átalakít egy számot az egyik tartományból a másikba. Meg kell adnunk, hogy a kiinduló számunk milyen tartományban mozoghat és azt, hogy milyen tartományban legyen a számítás elvégzése után. Tehát abban az esetben, ha a bemeneti tartomány 0-100 (százalék) és ebből PWM értéket szeretne (byte, 0-255) akkor ezt kell megadni kimeneti tartománynak.
Nem korlátozza az értékeket a tartományon belülre, mert a tartományon kívüli értékek néha előfordulhatnak és hasznosak. A constrain() függvényt e funkció előtt vagy után is lehet használni, ha a tartomány korlátozása szükséges.
Vegye figyelembe, hogy bármelyik tartomány "alsó határai" lehetnek nagyobbak vagy kisebbek, mint a "felső határok", tehát a map() függvény felhasználható egy számtartomány megfordítására, például
y = map(x, 1, 50, 50, 1);
A függvény a negatív számokat is jól kezeli, így ez a példa
y = map(x, 1, 50, 50, -100);
szintén érvényes és jól működik.
A map() függvény egész számokat használ, így nem fognak tizedes számok létrejönni. A számítás során keletkező tizedes számjegyek egyszerűen le lesznek vágva (nincs kerekítés).
Szintaxis
map(érték, fromLow, fromHigh, toLow, toHigh)
paraméterek
érték: a leképezni kívánt szám.
fromLow: az érték jelenlegi tartományának alsó határa.
fromHigh: az érték jelenlegi tartományának felső határa.
toLow: az érték céltartományának alsó határa.
toHigh: az érték céltartományának felső határa.
Eredmény
A számított érték.
Példakód
Függelék
A következő képlet alapján történik az eredmény kiszámítása:
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;
}
Megjegyzések és figyelmeztetések
Mint korábban említettük, a map() függvény egész számot használ. Ezért a tört számok nem pontosan jelennek meg. Például a 3/2, 4/3, 5/4 mindegyike 1-ként tér vissza a map() funkcióból, eltérő tényleges értékeik ellenére. Tehát ha a projekt pontos számításokat igényel (pl. A feszültség értéke három tizedes pontossággal), kérjük, fontolja meg a map() elkerülését és a számítások manuális végrehajtását a kódban.