map()

Beschreibung

Bildet eine Zahl von einem Bereich in einen anderen ab. Das heißt, ein Wert von fromLow würde auf toLow, einen Wert von fromHigh bis toHigh, Werte zwischen dazwischen auf Werte dazwischen usw. zugeordnet.

Beschränkt die Werte nicht innerhalb des Bereichs, da Werte außerhalb des Bereichs manchmal beabsichtigt und nützlich sind. Die constrain()-Funktion kann entweder vor oder nach dieser Funktion verwendet werden, wenn eine Begrenzung der Bereiche gewünscht werden.

Beachte, dass die "unteren Grenzen" eines Bereichs größer oder kleiner als die "oberen Grenzen" sein können, sodass die Funktion map() beispielsweise zum Umkehren eines Arrays verwendet werden kann.

y = map(x, 1, 50, 50, 1);

Die Funktion kann auch mit negativen Zahlen gut umgehen, so dass dieses Beispiel:

y = map(x, 1, 50, 50, -100);

auch valide ist und funktioniert.

Die map() - Funktion verwendet Ganzzahl-Mathematik, so dass keine Brüche generiert werden, wenn die Mathematik möglicherweise darauf hinweist, dass dies der Fall ist. Bruchreste werden abgeschnitten und nicht gerundet oder gemittelt.

Syntax

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

Parameter

  • value: Die Nummer, die zugeordnet werden soll.
  • fromLow: Die untere Grenze des aktuellen Wertebereichs.
  • fromHigh: Die obere Grenze des aktuellen Wertebereichs.
  • toLow: Die untere Grenze des Zielbereichs des Werts.
  • toHigh: Die obere Grenze des Zielbereichs des Werts.

Rückgabewert

Den zugeordneten Wert.

Beispielcode

/* Zuordnen eines analogen Werts auf 8 Bits (0 bis 255). */ void setup() { pinMode(9, OUTPUT); // sets the pin as output } void loop() { int val = analogRead(0); val = map(val, 0, 1023, 0, 255); analogWrite(9, val); }

Anhang

Für mathematisch Interessierte ist hier die ganze Funktion

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

※ Anmerkungen und Warnungen:

  • Wie bereits erwähnt, verwendet die map()-Funktion Ganzzahl-Mathematik. Dadurch können Brüche unterdrückt werden. Zum Beispiel werden Brüche wie 3/2, 4/3, 5/4 trotz ihrer unterschiedlichen tatsächlichen Werte von der Funktion map() als 1 zurückgegeben. Wenn also für das Projekt genaue Berechnungen erforderlich sind (z. B. eine auf 3 Dezimalstellen genaue Spannung), sollte man map() vermeiden und die Berechnungen manuell im Code implementieren.
  • The map() function returns an integer number. If you want to get the float number, you need to put the below custom function in your sketch and use it:
float floatMap(float x, float in_min, float in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; }
  • Or
double doubleMap(double x, double in_min, double in_max, double out_min, double out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; }

Siehe Auch

ARDUINO KAUFEMPFEHLUNG

Arduino UNO R3
Arduino Starter Kit
Bitte Beachten: Dies sind Partnerschaftslinks. Wenn Sie die Komponenten über diese Links Kaufen, können wir eine Provision erhalten, ohne weitere Kosten für Sie. Wir Schätzen es.

※ OUR MESSAGES