2020/08/31 bmx055のライブラリ及びプログラム内容を一部変更. 変換レートを更新する必要あり?
Dependencies: mbed BMX055_rev2 SDFileSystem GPS_Interface
Diff: main.cpp
- Revision:
- 11:2fc33706edd4
- Parent:
- 10:c60fec9b4e1b
- Child:
- 12:ed1e3282e053
- Child:
- 13:7947a88c4e39
--- a/main.cpp Sun Aug 30 07:01:19 2020 +0000 +++ b/main.cpp Mon Aug 31 11:21:27 2020 +0000 @@ -3,9 +3,7 @@ #include "SDFileSystem.h" #include "GPS.h" - - -GPS gps(PA_9, PA_10); // tx, rx +GPS gps(PA_9, PA_10); //TX(GPS_RX),RX(GPS_TX) DigitalIn FlightPin(PB_0); Serial pc(USBTX, USBRX, 9600);//パソコン側からもマイコン⇒IM920のデータはみれる @@ -57,38 +55,27 @@ bmx.getAcc();//加速度の取得 bmx.getGyro();//角力加速度の取得 bmx.getMag();//地磁気の取得 - - 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; - - - //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]; - if(a[i]<0)a[i] += 4096;//負値の場合+4096 b[i]=bmx.gyroscope[i]; - if(b[i]<0)b[i] += 4096;//負値の場合+4096 c[i]=bmx.magnet[i]; - if(c[i]<0)c[i] += 4096;//負値の場合+4096 - - } + } + //GPS部分 + //gps.getgps(); + int x = (gps.longtitude-135.0f)*1000000; + int y = (gps.latitude-34.0f)*1000000; + if(x==NULL)x=0; + if(y==NULL)y=0; + int north=x * 1000000; + int east=y * 1000000; - //fprintf(fp,"北緯:%f,東経:%f,加速度:%f,%f,%f,ジャイロ:%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); - + //SDカードへの書き込み + 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,(a[0]/512)*9.8, + (a[1]/512)*9.8f,(a[2]/512)*9.8f,(b[0]*125)/2048.0f, + (b[1]*125)/2048.0f,(b[2]*125)/2048.0f,c[0]/3.0f,c[1]/3.0f,c[2]/3.0f); + //IM920部分 //ノード番号(00~FF)を設定.データを送るごとに1増やす. uart.printf("STNN %02x\r\n",j); @@ -97,12 +84,8 @@ uart.printf("TXDA ");//可変長データ送信コマンド - uart.printf("%04x%04x%04x",a[0],a[1],a[2]);//加速度の書き出し - uart.printf("%04x%04x%04x",b[0],b[1],b[2]);//角加速度の書き出し - - - int north=x * 1000000; - int east=y * 1000000; + uart.printf("%04hX%04hX%04hX",a[0],a[1],a[2]);//加速度の書き出し + uart.printf("%04hX%04hX%04hX",b[0],b[1],b[2]);//角加速度の書き出し uart.printf("%08x%08x",east,north);//GPS書き出し @@ -111,64 +94,7 @@ wait(0.34);//IM920長距離モードの場合,3パケット/sが理論上最大速度. } - - - //fclose(fp); - - return 0; - } - - -/*void getGPS(float *hokui_n,float *tokei_n) { //関数getGPS定義 - unsigned char c = gps.getc(); - if( c=='$' || i == 256){ - mode = 0; - i = 0; - } - if(mode==0){ - if((gps_data[i]=c) != '\r'){ - i++; - }else{ - gps_data[i]='\0'; - // pc.printf("%s\r\n",gps_data); - if( sscanf(gps_data, "$GPGGA,%f,%f,%c,%f,%c,%d",&w_time,&hokui,&ns,&tokei,&ew,&rlock) >= 1){ - if(rlock==1){ - // pc.printf("Status:Lock(%d)\n\r",rlock); - //logitude - d_tokei= int(tokei/100); - m_tokei= (tokei-d_tokei*100)/60; - g_tokei= d_tokei+m_tokei; - //pc.printf("Log:%4.5f,",g_tokei); //Latitude - d_hokui=int(hokui/100); - m_hokui=(hokui-d_hokui*100)/60; - g_hokui=d_hokui+m_hokui; - // pc.printf("Lat:%4.5f\n\r",g_hokui); - - *hokui_n=g_hokui; - *tokei_n=g_tokei; - } - /*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.123 if - }*/ - -/*void callback () { - int i; - char buf[65]; - - //i = im920.recv(buf, 64); - buf[i] = 0; - printf("recv: '%s' (%d)\r\n", buf, i); -}*/ void FlightPinDriver(){ @@ -181,7 +107,7 @@ } void nichrome_ON(){ - printf("テグスカット!\n\r"); + printf("cut!\n\r"); fet1=1; wait(2.0);//テグスを切るまでにかかる時間 fet1=0; @@ -190,6 +116,6 @@ } void buzzer(){ - printf("ブザー作動\n\r"); + printf("buzzer\n\r"); fet2=1; } \ No newline at end of file