前回の続き
L3GD20が送る角加速度を見るが
そのままのデータだとノイズやなんやらの影響で
値が暴れすぎるので今のところ移動平均をとって出力させる。
平均をとるデータ数を変えてどれくらいなめらかになるか試す。
移動平均なし
5回
10回
なんとなく飛んでいる値が減っているようだ
コード例
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); }