Minden, ami elektronika

Elektronikával hobbi szinten foglalkozó oldal

map()

2019. augusztus 20. 01:22 - raptor13

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.

Lásd még

abs()

constrain()

max()

min()

pow()

sq()

sqrt()

Szólj hozzá!
Címkék: funkciók arduino

A bejegyzés trackback címe:

https://electro.blog.hu/api/trackback/id/tr3315011108

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása