Yuya Aihara / Mbed 2 deprecated maimai

Dependencies:   mbed

main.cpp

Committer:
sugihara0312
Date:
2020-12-19
Revision:
0:b54d41dacf49
Child:
1:fb92cf1c694b

File content as of revision 0:b54d41dacf49:

#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");
    
    while(1){
        if(gps.getgps()){
            /*a,bを緯度経度の初期値で初期化*/
            a = gps.latitude;
            b = gps.longitude;
            pc.printf("get1");          
            break;
        }else{
            pc.printf("Fault_No_Data1\r\n");
            wait(1);
        }
    }  
    while(1){
         if(gps.getgps()){
            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;
}