Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
- Committer:
- aihara
- Date:
- 2020-12-19
- Revision:
- 2:19c8f66ab10f
- Parent:
- 1:fb92cf1c694b
File content as of revision 2:19c8f66ab10f:
#include "mbed.h" #include "getGPS.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のピン //GPS gps (D1,D0); int main() { double a; double b; double distance; pc.printf("GPS begin\n"); wait(2); GPS gps (D1,D0); while(1){ if(gps.getgps()){ /*a,bを緯度経度の初期値で初期化*/ a = gps.latitude; b = gps.longitude; wait(2); Serial xbee(D1,D0);//Xbeeのピン pc.printf("get1"); break; }else{ wait(2); Serial xbee(D1,D0);//Xbeeのピン pc.printf("Fault_No_Data1\r\n"); wait(1); } } //wait(2); //GPS gps (D1,D0); while(1){ if(gps.getgps()){ wait(2); Serial xbee(D1,D0);//Xbeeのピン printf("get2"); /*ここから距離の計算*/ /*c、dを得た緯度経度の値で初期化*/ double c; double d; c = gps.latitude; d = gps.longitude; const double pi = 3.14159265359;//円周率 /*ラジアンに変換*/ double theta_a = a * pi /180; double theta_b = b * pi / 180; double theta_c = c * pi / 180; double theta_d = d * pi / 180; double e = sin(theta_a) * sin(theta_c) + cos(theta_a) * cos(theta_c) * cos(theta_b-theta_d);//2点間のなす角を求める double theta_r = acos(e); const double earth_radius = 6378140;//赤道半径 distance = earth_radius*theta_r;//距離の計算 /*距離が25m以上なら表示、通信*/ if(distance>=30){ pc.printf("run over 20m"); break; } }else { pc.printf("False_No_Data2\r\n"); wait(1); }//データ取得失敗を表示、通信、1秒待機 } pc.printf("成功\n"); return 0; }