cansat_B 2019 / Mbed 2 deprecated GPSXBeeCompleted

Dependencies:   mbed

Committer:
YUPPY
Date:
Wed Oct 30 05:37:08 2019 +0000
Revision:
3:3cd62c194bd0
Parent:
2:639bfe0721a7
Child:
4:88f7837f947f
GPS completed;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
KINU 1:c142b1682312 1 #include "mbed.h"
KINU 1:c142b1682312 2 #include "getGPS.h"
KINU 1:c142b1682312 3 #include "math.h"
KINU 1:c142b1682312 4
KINU 1:c142b1682312 5 Serial pc(USBTX,USBRX);
KINU 2:639bfe0721a7 6 GPS gps (p28,p27);
KINU 1:c142b1682312 7
KINU 1:c142b1682312 8
KINU 1:c142b1682312 9 int main() {
YUPPY 3:3cd62c194bd0 10 double a;
YUPPY 3:3cd62c194bd0 11 double b;
YUPPY 3:3cd62c194bd0 12 double distance;
KINU 1:c142b1682312 13
KINU 1:c142b1682312 14 pc.printf("GPS Start\n");
KINU 1:c142b1682312 15
KINU 2:639bfe0721a7 16 while(1) {
KINU 2:639bfe0721a7 17 if(gps.getgps()){
KINU 1:c142b1682312 18 a = gps.latitude;
KINU 1:c142b1682312 19 b = gps.longitude;
KINU 1:c142b1682312 20
KINU 2:639bfe0721a7 21 pc.printf("(%lf,%lf)\r\n",gps.latitude,gps.longitude);//緯度と経度を表示
KINU 1:c142b1682312 22 break;
KINU 2:639bfe0721a7 23
KINU 2:639bfe0721a7 24 }else{
KINU 1:c142b1682312 25 pc.printf("NO DATA\r\n");//データ取得失敗
KINU 1:c142b1682312 26 wait(1);
KINU 1:c142b1682312 27 }
KINU 1:c142b1682312 28 }
KINU 2:639bfe0721a7 29 while(1){
KINU 2:639bfe0721a7 30 if(gps.getgps()) {
KINU 2:639bfe0721a7 31
YUPPY 3:3cd62c194bd0 32 pc.printf("(%lf,%lf)\n\r",gps.latitude,gps.longitude);//緯度と経度を表示
KINU 2:639bfe0721a7 33
YUPPY 3:3cd62c194bd0 34 // 球面三角法により、大円距離(メートル)を求める
YUPPY 3:3cd62c194bd0 35 double c;
YUPPY 3:3cd62c194bd0 36 double d;
YUPPY 3:3cd62c194bd0 37 c = gps.latitude;
YUPPY 3:3cd62c194bd0 38 d = gps.longitude;
KINU 2:639bfe0721a7 39
YUPPY 3:3cd62c194bd0 40 const double pi = 3.14159265359; // 円周率
KINU 2:639bfe0721a7 41
KINU 2:639bfe0721a7 42 double ra = a * pi / 180;
KINU 2:639bfe0721a7 43 double rb = b * pi / 180; // 緯度経度をラジアンに変換
KINU 2:639bfe0721a7 44 double rc = c * pi / 180;
KINU 2:639bfe0721a7 45 double rd = d * pi / 180;
YUPPY 3:3cd62c194bd0 46
KINU 2:639bfe0721a7 47 double e = sin(ra) * sin(rc) + cos(ra) * cos(rc) * cos(rb - rd); // 2点の中心角(ラジアン)を求める
KINU 2:639bfe0721a7 48 double rr = acos(e);
KINU 2:639bfe0721a7 49
KINU 2:639bfe0721a7 50 const double earth_radius = 6378140; // 地球赤道半径(m)
KINU 2:639bfe0721a7 51
YUPPY 3:3cd62c194bd0 52 distance = earth_radius * rr; // 2点間の距離(m)
YUPPY 3:3cd62c194bd0 53
KINU 2:639bfe0721a7 54
KINU 2:639bfe0721a7 55 if (distance<5){
KINU 2:639bfe0721a7 56 }else{
KINU 1:c142b1682312 57 pc.printf("5m clear!");
KINU 1:c142b1682312 58 break;
KINU 2:639bfe0721a7 59 }
KINU 2:639bfe0721a7 60
KINU 1:c142b1682312 61 }else{
KINU 1:c142b1682312 62 pc.printf("NO DATA\r\n");//データ取得失敗
KINU 1:c142b1682312 63 wait(1);
KINU 1:c142b1682312 64 }
KINU 1:c142b1682312 65 }
KINU 1:c142b1682312 66 return 0;
KINU 2:639bfe0721a7 67 }
KINU 2:639bfe0721a7 68
KINU 2:639bfe0721a7 69
KINU 2:639bfe0721a7 70
KINU 2:639bfe0721a7 71
KINU 2:639bfe0721a7 72
KINU 2:639bfe0721a7 73
KINU 2:639bfe0721a7 74