2020/08/31 bmx055のライブラリ及びプログラム内容を一部変更. 変換レートを更新する必要あり?
Dependencies: mbed BMX055_rev2 SDFileSystem GPS_Interface
Diff: main.cpp
- Revision:
- 10:c60fec9b4e1b
- Parent:
- 9:fc0559c27628
- Child:
- 11:2fc33706edd4
--- a/main.cpp Sat Aug 29 13:27:41 2020 +0000 +++ b/main.cpp Sun Aug 30 07:01:19 2020 +0000 @@ -1,13 +1,14 @@ #include "mbed.h" #include "BMX055.h" #include "SDFileSystem.h" +#include "GPS.h" -Serial gps(PA_9, PA_10); // tx, rx +GPS gps(PA_9, PA_10); // tx, rx DigitalIn FlightPin(PB_0); -Serial pc(USBTX, USBRX, 19200);//パソコン側からもマイコン⇒IM920のデータはみれる +Serial pc(USBTX, USBRX, 9600);//パソコン側からもマイコン⇒IM920のデータはみれる Serial uart(PA_2, PA_3, 19200);//TX(IM920_RX), RX(IM920_TX) DigitalOut fet1(PA_8); //MOSFET PIN:GATE @@ -18,7 +19,6 @@ Ticker warikomi; Timeout t; //double a[3],b[3],c[3]; - int i,j=0,rlock,mode; char ns,ew; float w_time;//,hokui,tokei; @@ -29,7 +29,7 @@ char str[256]; -void getGPS(float *hokui_n,float *tokei_n); +//void getGPS(float *hokui_n,float *tokei_n); //void callback (); void FlightPinDriver(); void nichrome_ON(); @@ -37,8 +37,7 @@ int main() { - - float *hokui_n,*tokei_n; + // float *hokui_n,*tokei_n; mkdir("/sd/mydir00", 0777); FILE *fp = fopen("/sd/mydir00/sddata.csv", "w"); @@ -46,10 +45,10 @@ error("Could not open file for write\n"); } - gps.baud(9600); + //gps.baud(9600); //pc.baud(9600); //gps.attach(getGPS(&hokui_n,&tokei_n),Serial::RxIrq); - //fprintf(fp,"N,E,acc:x,acc:y,acc:z,gyr:x,gyr:y,gyr:z,mag:x,mag:y,mag:z"); + fprintf(fp,"N,E,acc:x,acc:y,acc:z,gyr:x,gyr:y,gyr:z,mag:x,mag:y,mag:z\r\n"); warikomi.attach(&FlightPinDriver,0.5); @@ -58,15 +57,24 @@ bmx.getAcc();//加速度の取得 bmx.getGyro();//角力加速度の取得 bmx.getMag();//地磁気の取得 - getGPS(hokui_n,tokei_n);//GPS取得 + + gps.getgps(); + int x = (float)(gps.longtitude-135.0)*1000000; + int y = (float)(gps.latitude-34.0)*1000000; + if(x==NULL)x=0; + if(y==NULL)y=0; + - if(*hokui_n==NULL){ - hokui_n=0;} - if(*tokei_n==NULL){ - tokei_n=0;} - //(fp,"%f,%f,%f,%f,%f,%2.4f,%2.4f,%2.4f,%2.4f,%2.4f,%2.4f\n\r",hokui_n,tokei_n,(bmx.accel[0]/512)*9.8, - //(bmx.accel[1]/512)*9.8,(bmx.accel[2]/512)*9.8,(bmx.gyroscope[0]*125)/2048, - //(bmx.gyroscope[1]*125)/2048,(bmx.gyroscope[2]*125)/2048,bmx.magnet[0],bmx.magnet[1],bmx.magnet[2]); + //float hokui_n=0; + //float tokei_n=0; + + //getGPS(hokui_n,tokei_n);//GPS取得 + + // printf("%f,%f\n\r",*hokui_n,*tokei_n); + + fprintf(fp,"%f,%f,%f,%f,%f,%2.4f,%2.4f,%2.4f,%2.4f,%2.4f,%2.4f\n\r",gps.longtitude,gps.latitude,(bmx.accel[0]/512)*9.8, + (bmx.accel[1]/512)*9.8,(bmx.accel[2]/512)*9.8,(bmx.gyroscope[0]*125)/2048, + (bmx.gyroscope[1]*125)/2048,(bmx.gyroscope[2]*125)/2048,bmx.magnet[0],bmx.magnet[1],bmx.magnet[2]); int a[3],b[3],c[3]; for(int i=0;i<3;i++){ a[i]=bmx.accel[i]; @@ -93,15 +101,13 @@ uart.printf("%04x%04x%04x",b[0],b[1],b[2]);//角加速度の書き出し - int north=*hokui_n * 1000000; - int east=*tokei_n * 1000000; - - printf("%f",*hokui_n); + int north=x * 1000000; + int east=y * 1000000; uart.printf("%08x%08x",east,north);//GPS書き出し uart.printf("\r\n"); - printf("%d%d\n\r",north,east); + //printf("%d%d\n\r",north,east); wait(0.34);//IM920長距離モードの場合,3パケット/sが理論上最大速度. } @@ -114,7 +120,7 @@ } -void getGPS(float *hokui_n,float *tokei_n) { //関数getGPS定義 +/*void getGPS(float *hokui_n,float *tokei_n) { //関数getGPS定義 unsigned char c = gps.getc(); if( c=='$' || i == 256){ mode = 0; @@ -142,16 +148,18 @@ *hokui_n=g_hokui; *tokei_n=g_tokei; } - //else{ + /*if(rlock==0){ //pc.printf("\n\rStatus:unLock(%d)\n\r",rlock); //pc.printf("%s",gps_data); - //} + *hokui_n=0; + *tokei_n=0; + } }//if *hokui_n=hokui; *tokei_n=tokei; } //else - } //L.16 if - } + } //L.123 if + }*/ /*void callback () { int i;