变量的Arduino循环更新不正确

时间:2016-09-12 19:26:58

标签: arduino

我在setup()函数中有以下代码片段:

...
unsigned int a0val;
unsigned int a0total = 0;
...
for (i = 0; i < 1000; i++) {
    a0val = analogRead(A0);
    Serial.println(a0val);
    a0total += a0val;
}
Serial.println(a0total);
...

这样做是为了在启动时对模拟值进行基线处理,以考虑所使用的不同类型的传感器。一种类型可以读取0而另一种类型可以读取一些非零值。关键是通过在启动时平均1000个读数来获得起点参考。 1000显然是矫枉过正,我稍后会减少。

现在,在128到130之间的1000个读数中,我预计a0总计大约为129,000。但是,总数一直不到这个数字的一​​半,例如63,722。它甚至不到一半,它还不到那个。

另一个例子:当它们都在350-352左右时,我将前500个读数加起来,总数达到43614.它看起来像环绕,但是我对两个值都使用unsigned int这样就可以了不会发生。

所以对我来说,几乎看起来像“a0total + = a0val”并没有更新每个循环,但这也没有意义。

我错过了什么?

谢谢, 罗恩

1 个答案:

答案 0 :(得分:2)

此平台上缺少unsigned int的大小。它是16位,因此最大值为65535