2016-09-12 2 views
1

正しくない:これは、異なる種類のセンサを説明するために、起動時にアナログ値をベースラインに行われArduinoのループの更新がある私は、セットアップ()関数に次のコードスニペットを持って

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

使用されています。 1つのタイプは0を読み取り、別のタイプはゼロ以外の値を読み取ることがあります。始動時に平均して1000回の読み値で始点参照を行うことがポイントです。 1000は明らかに過度のものです、私は後で元に戻すでしょう。

ここでは、1000の読み取り値が128と130の間のどこかで、私はa0totalが約129,000になると予想しています。しかし、1つの例で63,722のように、その数の半分以下が一貫して出てきます。それは半分ではない、それよりも小さい。

もう1つの例:350-352の周りにあるときに最初の500回の読みを合計し、合計が43614になったときです。ラップアラウンドのように見えますが、両方の値にunsigned intを使用しています。起こることはできません。

私にとっては、 "a0total + = a0val"はすべてのループを更新していないようですが、それは意味がありません。

私には何が欠けていますか?

おかげで、 ロン

答えて

2

あなたはこのプラットフォームではunsigned int型のサイズが欠けています。 16ビットなので、最大値は65535です。

関連する問題