我无法弄清楚搜索我想要的功能的术语:
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 中编写自己的函数,但我猜是内置的。
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)
您的意思是正确的公式是:(来自 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)
实际上查尔斯威廉姆斯的回答并没有完全解决等效的Arduino“地图”功能。更正确的公式是:=((value-inLo)/(inhi-inlo))*(outhi-outlo)