Yuya Aihara / Mbed 2 deprecated maimai

Dependencies:   mbed

Committer:
sugihara0312
Date:
Sat Dec 19 07:22:27 2020 +0000
Revision:
0:b54d41dacf49
Child:
1:fb92cf1c694b
a

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sugihara0312 0:b54d41dacf49 1 #include "mbed.h"
sugihara0312 0:b54d41dacf49 2 #include "getGPS.h"
sugihara0312 0:b54d41dacf49 3 #include <stdio.h>
sugihara0312 0:b54d41dacf49 4 #include <math.h>
sugihara0312 0:b54d41dacf49 5
sugihara0312 0:b54d41dacf49 6 #define PIN_SDA D4
sugihara0312 0:b54d41dacf49 7 #define PIN_SCL D5
sugihara0312 0:b54d41dacf49 8
sugihara0312 0:b54d41dacf49 9 Serial pc(SERIAL_TX,SERIAL_RX,921600);//通信
sugihara0312 0:b54d41dacf49 10 Serial xbee(D1,D0);//Xbeeのピン
sugihara0312 0:b54d41dacf49 11 GPS gps (D1,D0);
sugihara0312 0:b54d41dacf49 12
sugihara0312 0:b54d41dacf49 13
sugihara0312 0:b54d41dacf49 14 int main()
sugihara0312 0:b54d41dacf49 15 {
sugihara0312 0:b54d41dacf49 16 double a;
sugihara0312 0:b54d41dacf49 17 double b;
sugihara0312 0:b54d41dacf49 18 double distance;
sugihara0312 0:b54d41dacf49 19
sugihara0312 0:b54d41dacf49 20 pc.printf("GPS begin\n");
sugihara0312 0:b54d41dacf49 21
sugihara0312 0:b54d41dacf49 22 while(1){
sugihara0312 0:b54d41dacf49 23 if(gps.getgps()){
sugihara0312 0:b54d41dacf49 24 /*a,bを緯度経度の初期値で初期化*/
sugihara0312 0:b54d41dacf49 25 a = gps.latitude;
sugihara0312 0:b54d41dacf49 26 b = gps.longitude;
sugihara0312 0:b54d41dacf49 27 pc.printf("get1");
sugihara0312 0:b54d41dacf49 28 break;
sugihara0312 0:b54d41dacf49 29 }else{
sugihara0312 0:b54d41dacf49 30 pc.printf("Fault_No_Data1\r\n");
sugihara0312 0:b54d41dacf49 31 wait(1);
sugihara0312 0:b54d41dacf49 32 }
sugihara0312 0:b54d41dacf49 33 }
sugihara0312 0:b54d41dacf49 34 while(1){
sugihara0312 0:b54d41dacf49 35 if(gps.getgps()){
sugihara0312 0:b54d41dacf49 36 printf("get2");
sugihara0312 0:b54d41dacf49 37
sugihara0312 0:b54d41dacf49 38 /*ここから距離の計算*/
sugihara0312 0:b54d41dacf49 39 /*c、dを得た緯度経度の値で初期化*/
sugihara0312 0:b54d41dacf49 40 double c;
sugihara0312 0:b54d41dacf49 41 double d;
sugihara0312 0:b54d41dacf49 42 c = gps.latitude;
sugihara0312 0:b54d41dacf49 43 d = gps.longitude;
sugihara0312 0:b54d41dacf49 44
sugihara0312 0:b54d41dacf49 45 const double pi = 3.14159265359;//円周率
sugihara0312 0:b54d41dacf49 46
sugihara0312 0:b54d41dacf49 47 /*ラジアンに変換*/
sugihara0312 0:b54d41dacf49 48 double theta_a = a * pi /180;
sugihara0312 0:b54d41dacf49 49 double theta_b = b * pi / 180;
sugihara0312 0:b54d41dacf49 50 double theta_c = c * pi / 180;
sugihara0312 0:b54d41dacf49 51 double theta_d = d * pi / 180;
sugihara0312 0:b54d41dacf49 52
sugihara0312 0:b54d41dacf49 53 double e = sin(theta_a) * sin(theta_c) + cos(theta_a) * cos(theta_c) * cos(theta_b-theta_d);//2点間のなす角を求める
sugihara0312 0:b54d41dacf49 54 double theta_r = acos(e);
sugihara0312 0:b54d41dacf49 55
sugihara0312 0:b54d41dacf49 56 const double earth_radius = 6378140;//赤道半径
sugihara0312 0:b54d41dacf49 57
sugihara0312 0:b54d41dacf49 58 distance = earth_radius*theta_r;//距離の計算
sugihara0312 0:b54d41dacf49 59
sugihara0312 0:b54d41dacf49 60 /*距離が25m以上なら表示、通信*/
sugihara0312 0:b54d41dacf49 61 if(distance>=30){
sugihara0312 0:b54d41dacf49 62 pc.printf("run over 20m");
sugihara0312 0:b54d41dacf49 63 break;
sugihara0312 0:b54d41dacf49 64 }
sugihara0312 0:b54d41dacf49 65
sugihara0312 0:b54d41dacf49 66 }else {
sugihara0312 0:b54d41dacf49 67 pc.printf("False_No_Data2\r\n");
sugihara0312 0:b54d41dacf49 68 wait(1);
sugihara0312 0:b54d41dacf49 69 }//データ取得失敗を表示、通信、1秒待機
sugihara0312 0:b54d41dacf49 70
sugihara0312 0:b54d41dacf49 71 }
sugihara0312 0:b54d41dacf49 72 pc.printf("成功\n");
sugihara0312 0:b54d41dacf49 73 return 0;
sugihara0312 0:b54d41dacf49 74 }