map()

[Matematika]

Leírás

Újra leképez egy számot egyik tartományból a másikba. Ez azt jelenti, hogy a fromLow értékről a toLow értékre, a fromHigh értékről a toHigh értékre, a köztes értékeket a köztes értékekre stb.

Nem korlátozza az értékeket a tartományon belülre, mert a tartományon kívüli értékek néha szándékosak és hasznosak. A constrain() függvény a függvény előtt vagy után is használható, ha korlátozni kívánjuk a tartományokat.

Vegye figyelembe, hogy bármelyik tartomány "alsó határai" lehetnek nagyobbak vagy kisebbek, mint a "felső határok", így a map() függvény haszná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);

is érvényes és jól működik.

A map() függvény egész számokat használ, így nem generál törteket, ha a matematika azt jelezheti, hogy ezt kell tennie. A töredékmaradványok csonkoltak, és nem kerekítettek vagy átlagoltak.

Szintaxis

map(value, fromLow, fromHigh, toLow, toHigh)

Paraméterek

value: száma a map-hoz.
fromLow: az érték aktuális tartományának alsó határa.
fromHigh: az érték aktuális 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.

Visszatérési érték

A leképezett érték.

Példa

/* Analóg érték leképezése 8 bitesre (0-tól 255-ig) */
void setup() {}

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

Függelék

A matematikához vonzódók számára itt van a teljes függvény

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ámokat használ. Tehát a törtek emiatt eltolódhatnak. Például az olyan törtek, mint a 3/2, 4/3, 5/4, mind 1-ként kerülnek visszaadásra a map() függvényből, annak ellenére, hogy eltérő tényleges értékeik vannak. Tehát ha a projektje pontos számításokat igényel (például a feszültség 3 tizedesjegyig), kérjük, kerülje el a map() alkalmazást, és saját maga hajtsa végre a számításokat a kódban.

Lásd még