narumi tatsuya
/
go-went-Carlos_Gone
ニドキング
Diff: main.cpp
- Revision:
- 2:20304b3cea67
- Parent:
- 1:1dab888e1f3c
- Child:
- 3:3a62c5ccfddb
diff -r 1dab888e1f3c -r 20304b3cea67 main.cpp --- a/main.cpp Wed Dec 16 07:18:54 2020 +0000 +++ b/main.cpp Thu Dec 17 13:32:46 2020 +0000 @@ -1,18 +1,20 @@ #include "mbed.h" #include "TB6612.h" #include "getGPS.h" -#include"math.h" #include "BMP180.h" #include <stdio.h> +#include <math.h> #define PIN_SDA D4 #define PIN_SCL D5 + Serial pc(SERIAL_TX,SERIAL_RX,921600);//通信 Serial xbee(D1,D0);//Xbeeのピン DigitalOut FET(D9);//FETのピン DigitalIn flight(D6); //フライトピンのピン DigitalOut SW(D7);//フライトピンの電圧降下ピン TB6612 motor(D7,D9,D11);//モータードライバーのピン +GPS gps (D1,D0); int main(){ @@ -35,13 +37,14 @@ SW = 0; xbee.printf("やったぞおおおおおおおおお!\n"); - pc.printf("やったぞおおおおおおおおお!\n");//フライトピンが外れたときに表示 + break; } } } BMP180 bmp180(PIN_SDA,PIN_SCL); float pressure,temperature,altitude;//気圧,気温,高度 + int n; xbee.printf("\rstart!\n\r");//気圧センサースタート bmp180.Initialize(27,BMP180_OSS_ULTRA_HIGH_RESOLUTION);//27は府大の海抜高度 xbee.printf("initialization complete!\n\r");//初期化完了 @@ -61,8 +64,9 @@ xbee.printf("Altitude(m)\t:%.3f\n\r",altitude); xbee.printf("--------------------------------\n\r"); - wait(1); + wait(3); break; + n=0; }else{ xbee.printf("NO DATA\n\r"); xbee.printf("---------------------------\n\r"); @@ -82,50 +86,51 @@ y7 = (y5 - 1) * y6; y8 = y7 / 0.0065; altitude = y8; - speed = (x8 - y8)/1; + speed = (x8 - y8)/(float)(3+n);//値が取得でた場合は,3秒間の速さをだし,値が取得できなかった場合は3+n秒(nは値が取得できなかった回数)の速さをだす xbee.printf("Altitude(m)\t:%.3f\n\r",altitude); xbee.printf("Speed(m/s)\t:%.3f\n\r",speed); xbee.printf("--------------------------------\n\r"); x8 = y8; - wait(1); + n=0; + wait(3); if(speed<=0){ break; - }} - else{ + } + }else{ xbee.printf("NO DATA\n\r"); + ++n; wait(1); } } - /*speedが0以下になったらFETに20秒電流を流してその後電流を止まる*/ + /*speedが0以下になったらFETに20秒電流を流してその後電流を止める*/ FET=1; wait(20); FET=0; - -} - //motor=100; - - double a; +motor = 100; +double a; double b; double distance; - xbee.printf("GPS begin\n");; - pc.printf("GPS begin\n"); + xbee.printf("GPS begin\n"); while(1){ if(gps.getgps()){ /*a,bを緯度経度の初期値で初期化*/ a=gps.latitude; b=gps.longitude; - pc.printf("(%lf,%lf)\r\n",gps.latitude,gps.longitude);//緯度と経度を表示 + xbee.printf("(%lf,%lf)\r\n",gps.latitude,gps.longitude);//緯度と経度を表示 + xbee.printf("--------------------------------\n\r"); break; }else{ - pc.printf("Fault_No_Data\r\n"); + xbee.printf("Fault_No_Data\r\n"); wait(1); } - } while(1){ + } + while(1){ if(gps.getgps()){ - pc.printf("(%lf,%lf)\n\r",gps.latitude,gps.longitude);//緯度と経度を表示 + xbee.printf("(%lf,%lf)\n\r",gps.latitude,gps.longitude);//緯度と経度を表示 + xbee.printf("--------------------------------\n\r"); /*ここから距離の計算*/ /*c、dを得た緯度経度の値で初期化*/ @@ -149,11 +154,11 @@ distance=earth_radius*theta_r;//距離の計算 - /*距離が20m以上なら表示、通信*/ - if(distance>=25){ - pc.printf("run over20m"); + /*距離が25m以上なら表示、通信*/ + if(distance>=30){ + pc.printf("run over 20m"); motor=0; - xbee.printf("run over20m"); + xbee.printf("run over 20m"); break; } @@ -164,6 +169,6 @@ }//データ取得失敗を表示、通信、1秒待機 } - + xbee.printf("成功\n"); return 0; } \ No newline at end of file