2

我无法弄清楚搜索我想要的功能的术语:

Anrduino 有一个 map(value,inLo,inHi,outLo,outHi) 函数,该函数采用 IN 范围内的值并返回映射到 OUT 范围的相同比率的值。例如 map(5,0,6,200,380) 返回 350,因为 0-6 范围内的值 5 是 5/6,而 200 到 380 范围内的 5/6 是 350。

我可以在 Excel 中编写自己的函数,但我猜是内置的。

4

3 回答 3

1

James Ramsden 在这里给出了很好的解释:http: //james-ramsden.com/map-a-value-from-one-number-scale-to-another-formula-and-c-code/

本质上,如果一个比例是从 a0 到 a1 而另一个比例是从 b0 到 b1 并且您希望将值a映射到b的某个值。方程是:

在此处输入图像描述

输入与原始问题相同的术语:

映射(值,inLo,inHi,outLo,outHi)= outLo +(outHi - outLo)*(值 - inLo)/(inHi - inLo)

于 2019-01-02T07:03:52.733 回答
0

您的意思是正确的公式是:(来自 arduino.cc/en/Reference/Map)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;}

(最后你忘记了+out_min

于 2016-03-09T14:37:40.723 回答
0

实际上查尔斯威廉姆斯的回答并没有完全解决等效的Arduino“地图”功能。更正确的公式是:=((value-inLo)/(inhi-inlo))*(outhi-outlo)

于 2015-12-07T23:28:32.010 回答