【Arduino・C++ お礼500枚】 センサーなどから取得したランダムな値の10回の平均を取りたいのですが、どのようなプログラムを書けばいいか分かりません。 教えてください

C言語関連 | プログラミング100閲覧xmlns="http://www.w3.org/2000/svg">500

ベストアンサー

0

その他の回答(3件)

0

直接の回答ではないです。 マイコンでは除算は計算コストが高い(メモリーは喰うはステップ数が多くなるので計算に時間がかかること)ので10なんて使いません。2のべき乗にします。8回や16回の平均です。 右シフト3で1/8、4で1/16です。速度では10数倍の差が出ると思う。

1

平均値なのだから、10回分足して、それを10で割る。それだけです。 やり方は、データ型の取り方も含めて色々あるだろうけど、 どんな方法でも10個程度なら気にするほどでも無いと思う。 一例。loop関数中に使用 static float data[10]={0}; static byte adrs=0,flag=0; static float sum=0; float average; sum-=data[adrs];//前のデータを引いて data[adrs]=sensor_read();//新たなデータを入れて sum+=data[adrs];//新たなデータを足して if(++adrs==10){//次の書き込み位置に変えて flag=1; adrs=0; } if(flag)float average=sum/10;//平均値を出す else average=sum/adrs;

1人がナイス!しています