我正在写一个 arduino 草图,我的传感器给出的值在 400 到 1023 之间。我想将这些值转换为百分比,其中 400 为 0%,1023 为 100%。我一直在搞各种方程,但我的代数有点生疏了。有没有一种简单的方法可以在 C 中做到这一点?
问问题
4074 次
5 回答
6
double percentage = (value - 400) / (double) (1023 - 400);
这将为您提供介于 0.0 和 1.0 之间的百分比。如果您希望它在 0 到 100 之间,请乘以 100。
于 2013-08-02T23:03:37.367 回答
2
好吧,我假设您可以自己处理代码(另外,我的 C 有点生疏),所以我将解释解决方案背后的数学:
你基本上想标准化 400 到 1023 之间的值。
这是 1023-400 = 623 个值进行标准化。我们的范围是 0...623,我们想将它映射到 0...100:
我们将减去的值(0...623 之间的数字)除以 623,得到 0...1 之间的数字(因此 0 为 0,623 为 1,300 约为 0.50),并且然后将该结果乘以 100,得到一个介于 0...100 之间的值。还有你的百分比。
于 2013-08-02T23:08:19.753 回答
1
我建议使用地图功能:map(value, fromLow, fromHigh, toLow, toHigh)
percentage = map(your_value, 400, 1023, 0, 100);
于 2013-08-04T07:39:12.963 回答
1
代数
0% <-> 400
100% <-> (1023-400)
假设你得到一个值 x = 850
百分比是:
(850 - 400)/(1023 - 400)*100 = (100*x-40000)/623
C
double in = get_value();
double percent = (double)(100*in - 40000.0)/623;
于 2013-08-02T23:03:54.943 回答
0
arduino 实际上有一个内置函数,因为 ADC 值总是需要转换为人类形式。
于 2013-08-03T18:18:47.150 回答