L3GD20 動作テスト②

前回の続き
L3GD20が送る角加速度を見るが
そのままのデータだとノイズやなんやらの影響で
値が暴れすぎるので今のところ移動平均をとって出力させる。
平均をとるデータ数を変えてどれくらいなめらかになるか試す。

移動平均なし
f:id:katakanan:20170812221836p:plain

5回
f:id:katakanan:20170812221839p:plain

10回
f:id:katakanan:20170812221841p:plain

なんとなく飛んでいる値が減っているようだ

コード例

float dx;
float dy;
float dz;

int itr;

int16_t a[SIZE];
int16_t b[SIZE];
int16_t c[SIZE];

int32_t suma;
int32_t sumb;
int32_t sumc;

void get_deg()
{
    suma = 0;
    sumb = 0;
    sumc = 0;

    a[itr] = gyro.read_x();
    b[itr] = gyro.read_y();
    c[itr] = gyro.read_z();
    itr = (itr + 1)%SIZE;
    
    for(int i=0;i<SIZE;i++)
    {
        suma += a[i];
        sumb += b[i];
        sumc += c[i];
    }
    
    dx = (float)suma/SIZE;
    dy = (float)sumb/SIZE;
    dz = (float)sumc/SIZE;
    
    pc.printf("X%fY%fZ%f\r\n", dx,dy,dz);    
}