6軸センサ(ジャイロ、加速度)を100Hz, GPSの数値を10Hzでロギングする。結果は全てシリアルモニタに出力される。 It enables us to log 6axis sensor datas (gyro,acceleration ) in 100Hz,ans GPS datas in 10Hz. All results will be outputted in serial moniter.
Dependencies: mbed MPU6050_alter
Diff: main.cpp
- Revision:
- 1:9e0eb043ecdb
- Parent:
- 0:847c925d2821
diff -r 847c925d2821 -r 9e0eb043ecdb main.cpp --- a/main.cpp Sat Feb 23 06:25:15 2019 +0000 +++ b/main.cpp Wed Feb 27 03:26:21 2019 +0000 @@ -1,4 +1,7 @@ -/*シリアルモニタに6軸センサを100Hz, +/*Atsumi Toda 2/20/2019 +Shibaura Institute of Technology + +シリアルモニタに6軸センサを100Hz, GPSからの経度、緯度、アンテナ高度、対地速度を10HZで出力する gpsからの文字列を読み取ってから6軸の値を読みだす為、出力するデータを GPGGAとGPRMCに限定しgpsモジュールを10Hz出力に設定する必要あり。 @@ -28,7 +31,8 @@ /*-------------------------------------------*/ /*------サンプリング間隔[s]--------*/ -//#define PERIOD 0.020 +#define PERIOD 0.010 +#define GPS_UPDATE_RATE 5 /*------------------------------*/ /*---------ピン指定-------------*/ @@ -96,14 +100,15 @@ /*--------------------------------------*/ double val=passed_time.read(); - //pc.printf("%f,%f,%f,%f,%f,%f,%f,%4.6f,%3.6f,%f,%f\r\n",val,dpsX,dpsY,dpsZ,a[0],a[1],a[2],g_tokei,g_hokui,a_altitude,speed_to_ground); - //pc.printf("%7.3f,%f,%f,%f,%4.6f,%3.6f,%7.3f,%f\r\n",val,dpsX,dpsY,dpsZ,g_tokei,g_hokui,a_altitude,speed_to_ground); - pc.printf("A,%7.3f,%f,%f,%f,%f,%f,%f,%f\r\n",val,dpsX,dpsY,dpsZ,a[0],a[1],a[2],tempreture_current); + pc.printf("A,%7.3f,%f,%f,%f,%f,%f,%f,%f\r\n",val,dpsX,dpsY,dpsZ,a[0],a[1],a[2],tempreture_current,g_tokei,g_hokui,a_altitude,speed_to_ground); + //pc.printf("G,%7.3f,%4.6f,%3.6f,%7.3f,%f\r\n",val,g_tokei,g_hokui,a_altitude,speed_to_ground); //pc.printf("pased time is %f\r\n",val); } void gps_rx(){ - + + __disable_irq(); // 割り込み禁止 + /*=============GPS信号受信に用いる変数群===============*/ //char c; int i,rlock,stn; @@ -120,7 +125,6 @@ //speed_to_ground float speed_knot,azi; - /*===============================================*/ i=0; @@ -208,24 +212,27 @@ double val=passed_time.read(); pc.printf("G,%7.3f,%4.6f,%3.6f,%7.3f,%f\r\n",val,g_tokei,g_hokui,a_altitude,speed_to_ground); + __enable_irq(); // 割り込み許可 + }//void gps_rx int main() { //wait(20); - pc.baud(230400);//シリアルポートの通信レート設定 + pc.baud(460800);//シリアルポートの通信レート設定 gps.baud(115200); tempreture_initiation=mpu.getTemp();//初期温度取得 passed_time.start();//タイマー開始 - //flipper.attach(&scan_update, PERIOD);//scan_update関数をPERIOD間隔で呼び出し + //flipper.attach(&scan_update, PERIOD);//scan_update関数をPERIOD間隔で呼び出し while(1) { gps_rx();//4ms passed + wait_ms(4.0); scan_update(); - for(int update_period=0;update_period<9;update_period++){ - wait_ms(6.0); + for(int update_period=0;update_period< int((100/GPS_UPDATE_RATE)-1);update_period++){ + wait_ms(7.6); scan_update(); //このfor文1周で約10msとなる。 }