我在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”并没有更新每个循环,但这也没有意义。
我错过了什么?
谢谢, 罗恩
答案 0 :(得分:2)
此平台上缺少unsigned int的大小。它是16位,因此最大值为65535
。