将百分比值分配给一系列值

时间:2013-08-02 22:58:27

标签: c arduino

我正在写一个arduino草图,我的传感器给出的值介于400和1023之间。我想将这些值转换为百分比,其中400为0%,1023为100%。我一直在搞乱各种方程式,但我的代数有点生疏。在C中有一种简单的方法吗?

5 个答案:

答案 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

C

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值总是需要转换为人类形式。

check here