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;
}