我正在写一个arduino草图,我的传感器给出的值介于400和1023之间。我想将这些值转换为百分比,其中400为0%,1023为100%。我一直在搞乱各种方程式,但我的代数有点生疏。在C中有一种简单的方法吗?
答案 0 :(得分:6)
double percentage = (value - 400) / (double) (1023 - 400);
这将给出0.0到1.0之间的百分比。如果你想要它在0到100之间,则乘以100。
答案 1 :(得分: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之间的值。这是你的百分比。
答案 2 :(得分:1)
0% <-> 400
100% <-> (1023-400)
假设您得到的值为x = 850
百分比是:
(850 - 400)/(1023 - 400)*100 = (100*x-40000)/623
double in = get_value();
double percent = (double)(100*in - 40000.0)/623;
答案 3 :(得分:1)
我建议使用地图功能:map(value, fromLow, fromHigh, toLow, toHigh)
percentage = map(your_value, 400, 1023, 0, 100);
答案 4 :(得分:0)
arduino实际上有一个内置函数,因为ADC值总是需要转换为人类形式。