 # Explanation of map function is wrong

I found dozens of Youtube tutorials and they all follow your guide on Map ( ), but the function behaves not as it should behave. I know the internals are perfectly logical from a programmers perspective with its head into integer divides, but they are NOT from an engineers perspective. https://www.arduino.cc/reference/en/language/functions/math/map/ The most demo-ed example is to map a potentiometer to a LED PWM value. 99% of tutorials does this:

``````output=map(input,0,1023,0,255);
``````

But because of integer divide behaviour, this does not lead to the desired result. Value 0-4 turn into 0, where only 1023 becomes 255. Another example:

``````output=map(input,0,1023,0,100);
``````

This example will NEVER give 100 as outcome! I found by testing all sort of combinations, we ALWAYS need to add 1 to both high ends of the ranges, or subtract 1 if the range is in reverse order. so the LED PWM example done right is (with perfect 1 outcome on every 4 input values evenly distributed):

``````output=map(input,0,1024,0,256);
``````

and if you want to remap it to say 100 to -100, you should do

``````output=map(input,0,1024,100,-101);
``````

Can someone please fix the documentation on this?

blnkjns:
The most demo-ed example is to map a potentiometer to a LED PWM value. 99% of tutorials does this:

``````output=map(input,0,1023,0,255);
``````
``````output = input / 4;
``````

There, fixed.

I wouldn't constrain() your research to the use of map(), the Arduino reference would be the first pace I'd check.