• Der map() Befehl
  • anonym
  • 14.10.2024
  • Naturwissenschaft
Um die Lizenzinformationen zu sehen, klicken Sie bitte den gewünschten Inhalt an.
Der map() Be­fehl

Bei der Ar­beit mit Mi­kro­con­trol­lern er­hal­ten wir oft Werte aus Sen­so­ren oder an­de­ren Ein­ga­be­ge­rä­ten, wie zum Bei­spiel einem Po­ten­tio­me­ter. Diese ana­lo­gen Werte be­we­gen sich im Be­reich von 0 bis 1023. Um die Po­ten­tio­me­ter­schal­tung für viel­sei­ti­ge An­wen­dun­gen nutz­bar zu ge­stal­ten, be­nö­ti­gen wir häu­fig für die An­wen­dung ge­eig­ne­te­re Wer­te­be­rei­che.



Hier kommt der map()-​Befehl ins Spiel. Er hilft dabei, einen Wert aus einem Be­reich in einen an­de­ren zu über­tra­gen.

Be­schrei­bung und Syn­tax

Die map()-​Funktion wird ver­wen­det, um eine Zahl von einem Be­reich in einen an­de­ren zu über­tra­gen. Das be­deu­tet, ein Wert `value`, der im Be­reich von `from­Low` bis `from­High` liegt, wird in den ent­spre­chen­den Wert im Be­reich von `toLow` bis `to­High` um­ge­rech­net. Zum Bei­spiel wird der kleins­te Wert im Ein­gangs­be­reich auf den kleins­ten Wert im Ziel­be­reich um­ge­rech­net, der größ­te Wert auf den größ­ten, und alle Werte da­zwi­schen wer­den ent­spre­chend an­ge­passt.

Syn­tax

y = map (value, fromLow, fromHigh, toLow, toHigh);

Pa­ra­me­ter

value
: Der Wert bzw. die Va­ri­a­ble, die zu­ge­ord­net wer­den soll.

from­Low
: Die un­te­re Gren­ze des ak­tu­el­len Wer­te­be­reichs.

from­High
: Die obere Gren­ze des ak­tu­el­len Wer­te­be­reichs.

toLow
: Die un­te­re Gren­ze des Ziel­be­reichs des Werts.

to­High
: Die obere Gren­ze des Ziel­be­reichs des Werts.

Bei­spie­le

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

In die­sem Fall wird der Wert  (zwi­schen 1 und 50) auf den Be­reich von 50 bis 1 um­ge­rech­net, was den Ef­fekt hat, dass der ur­sprüng­li­che Wer­te­be­reich um­ge­kehrt wird

Du kannst auch ne­ga­ti­ve Werte ver­wen­den:





Hier wird  von 1 bis 50 auf den Be­reich von 50 bis -100 über­tra­gen.



y = map (x, 1, 50, 50, -100);
1
Wende die fol­gen­de map()-​Funktion auf den dar­ge­stelltn ana­lo­gen Wer­te­be­reich von 0 bis 1023 an. Mar­kie­re die neuen Wer­te­be­rei­che unter dem Zah­len­strahl und be­schrif­te sie mit den ent­spre­chen­den ge­map­ten Wer­ten.
y = map (x, 0, 1023, 0, 4);

Wer­te­be­reich von 

ana­log­Re­ad():

0 255 512 767 1023

Wer­te­be­reich

 map(x, 0, 1023, 0, 4)
:

Achtung



  • Die map()- Funktion bildet die alte obere Grenze 'fromHigh' immer nur direkt auf die neue obere Grenze 'toHigh' ab.



  • Die map()-Funktion beschränkt den umgerechneten Wert nicht auf den Zielbereich.
    Das bedeutet, dass Werte außerhalb des Zielbereichs möglich sind.



  • Die map()-Funktion verwendet nur Ganzzahlen.
    Das bedeutet, Bruchreste werden abgeschnitten und nicht gerundet oder gemittelt.



2
Baue ein Stro­bo­skop mit einer LED als Licht­quel­le. Mit dem Po­ten­tio­me­ter als Dreh­reg­ler soll es mög­lich sein die Blink­fre­quenz zu ver­än­dern.
Si­che­re den loop Code­ab­schnit­te auf dem Ar­beits­blatt.
x