![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
加速度センサMPU6050 サンプルプログラムでは、xyz軸の加速度を表示します。
Dependencies: mbed MPU6050 Math
Fork of MPU6050_cansat by
Diff: main.cpp
- Revision:
- 5:8bc5cef21589
- Parent:
- 4:d2bb399c7c8c
- Child:
- 6:f1106d9e843c
--- a/main.cpp Fri Nov 09 21:03:51 2018 +0000 +++ b/main.cpp Sat Nov 17 09:40:32 2018 +0000 @@ -5,24 +5,23 @@ MPU6050 mpu(p9,p10);//(SDA,SCL)のピン配置 int main() { - float filterCoefficient = 0.3; // ローパスフィルターの係数(これは環境によって要調整。1に近づけるほど平滑化の度合いが大きくなる。 + float filterCoefficient = 0.9; // ローパスフィルターの係数(これは環境によって要調整。1に近づけるほど平滑化の度合いが大きくなる。 float lowpassValue = 0; float highpassValue = 0; float speed = 0;//加速度時から算出した速度 float oldSpeed = 0;//ひとつ前の速度 float oldAccel = 0;//ひとつ前の加速度 float difference=0;//変位 - float timespan=0.1;//時間差 + float timespan=0.01;//時間差 float accel[3];//accelを3つの配列で定義。 while(1){ mpu.readAccelData(accel);//加速度の値をaccel[3]に代入 float x = accel[0]/16384-0.043;//x軸方向の加速度 - float y = accel[1]/16384-0.012;//y軸方向の加速度 - float z = accel[2]/16384;//z軸方向の加速度 - printf("accel x:%f y:%f z:%f\r\n",x,y,z);//加速度の表示 + float y = accel[0]/16384;//y軸方向の加速度 + float z = accel[0]/16384;//z軸方向の加速度 // ローパスフィルター(現在の値 = 係数 * ひとつ前の値 + (1 - 係数) * センサの値) lowpassValue = lowpassValue * filterCoefficient + x * (1 - filterCoefficient); - // ハイパスフィルター(センサの値 - ローパスフィルターの値) + // ハイパスフィルター(センサの値 - ローパスフィルターの値)// highpassValue = x - lowpassValue; // 速度計算(加速度を台形積分する) @@ -33,7 +32,9 @@ difference = ((speed + oldSpeed) * timespan) / 2 + difference; oldSpeed = speed; - printf(" speed %f difference %f\n",speed,difference); - wait(0.1); + //printf(" speed %f difference %f\r\n",speed,difference);//速度と加速度を表示 + //printf("%f,",speed);//速度を表示 + printf("%f,",difference);//変位を表示 + wait(0.01); } }