またまた「Arduinoねた」です。
いろいろなセンサーを接続して実験などしているのですが・・・
センサーの精度が良くなかったり、ふらふらとノイズの影響を受けることがあるので、一定時間ごとに計測した値の最新の4回の平均をとることにしました。
void loop( )
{
int x,x1,x2,x3,x4;
x4 = x3;
x3 = x2;
x2 = x1;
x1 = analogRead( OUT ); // センサーの値を取得
x = ( x1 + x2 + x3 + x4 ) / 4;
}
こんな感じ・・・
そうすると、変数x には、4回の平均値が入る・・・と思ったのですが・・・
凄く小さな値になります。
で、最近やっと覚えた Serial.print( ) で、変数 x2 の値を表示してみると、「0」です。
いつまでも「0」です。
loop( ) のループは、ループの最初に戻ると毎回初期化される・・・ということなんでしょうか?
とりあえず、変数を静的に定義すると
static int x,x1,x2,x3,x4;
やっと、4回の平均値が表示されるようになりました。
イメージ的には・・・
main( )
{
while( true )
loop( );
}
ということなんですね。
これも、Arduinoの常識なの?