mbed用GPSモジュール利用プログラム for IZU 割り込みを利用し、自動的に内部変数へ座標などのデータが更新されるようになっている。そのため、好きなタイミングで専用関数により値を取得できる。

Dependencies:   GPS_interrupt mbed

Committer:
Gaku0606
Date:
Tue Feb 21 13:42:17 2017 +0000
Revision:
3:220b43770a14
Parent:
2:c05887794ff5
kkk

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Gaku0606 1:1d1b6b0396d1 1 #include "mbed.h"
Gaku0606 1:1d1b6b0396d1 2 #include "GPS_interrupt.h"
Gaku0606 3:220b43770a14 3 RawSerial pc(USBTX, USBRX);
Gaku0606 3:220b43770a14 4 //RawSerial mygps(p28, p27);
Gaku0606 1:1d1b6b0396d1 5
Gaku0606 3:220b43770a14 6 #define FIRST_BAUDRATE 9600
Gaku0606 2:c05887794ff5 7 #define BAUDRATE 115200
Gaku0606 2:c05887794ff5 8
Gaku0606 3:220b43770a14 9 //GPS_interrupt *gps;
Gaku0606 3:220b43770a14 10 //GPS_interrupt gps(&mygps, 10);
Gaku0606 3:220b43770a14 11 Serial mygps(D1, D0,115200);
Gaku0606 3:220b43770a14 12 GPS_interrupt gps(&mygps);//, 10);
Gaku0606 2:c05887794ff5 13
Gaku0606 2:c05887794ff5 14 void bootFunction(){
Gaku0606 2:c05887794ff5 15 pc.printf("\r\n");
Gaku0606 2:c05887794ff5 16 pc.printf("start LPC1768 boot phase\r\n");
Gaku0606 2:c05887794ff5 17 wait(0.5);
Gaku0606 2:c05887794ff5 18 for(int i = 0;i < 100;i++){
Gaku0606 2:c05887794ff5 19 pc.printf("Loading... : %3d [%%]\r", i);
Gaku0606 2:c05887794ff5 20 wait(0.025);
Gaku0606 2:c05887794ff5 21 }
Gaku0606 2:c05887794ff5 22 pc.printf("Loading... : %3d [%%]\r\n", 100);
Gaku0606 2:c05887794ff5 23 pc.printf("\t-> finished!!\r\n");
Gaku0606 2:c05887794ff5 24 pc.printf("System : %d Hz\r\n", SystemCoreClock );
Gaku0606 2:c05887794ff5 25 wait(0.5);
Gaku0606 2:c05887794ff5 26 pc.printf("start main program\r\n");
Gaku0606 2:c05887794ff5 27 wait(0.1);
Gaku0606 2:c05887794ff5 28 pc.printf("initialize");
Gaku0606 2:c05887794ff5 29 wait(0.75);
Gaku0606 2:c05887794ff5 30 pc.printf(" -> OK\r\n");
Gaku0606 2:c05887794ff5 31 wait(0.1);
Gaku0606 2:c05887794ff5 32 pc.printf("GPS Connecting");
Gaku0606 2:c05887794ff5 33 wait(0.5);
Gaku0606 2:c05887794ff5 34 pc.printf(".");
Gaku0606 2:c05887794ff5 35 wait(0.5);
Gaku0606 2:c05887794ff5 36 pc.printf(".");
Gaku0606 2:c05887794ff5 37 wait(0.5);
Gaku0606 2:c05887794ff5 38 pc.printf(".");
Gaku0606 2:c05887794ff5 39 wait(0.5);
Gaku0606 2:c05887794ff5 40 pc.printf(".");
Gaku0606 2:c05887794ff5 41 wait(0.5);
Gaku0606 2:c05887794ff5 42 pc.printf(".");
Gaku0606 2:c05887794ff5 43 wait(0.5);
Gaku0606 2:c05887794ff5 44 pc.printf(".");
Gaku0606 3:220b43770a14 45
Gaku0606 2:c05887794ff5 46 wait(0.5);
Gaku0606 2:c05887794ff5 47 }
Gaku0606 1:1d1b6b0396d1 48
Gaku0606 1:1d1b6b0396d1 49 int main() {
Gaku0606 1:1d1b6b0396d1 50
Gaku0606 1:1d1b6b0396d1 51 pc.baud(115200);
Gaku0606 1:1d1b6b0396d1 52
Gaku0606 2:c05887794ff5 53 bootFunction();
Gaku0606 3:220b43770a14 54 wait(0.5);
Gaku0606 3:220b43770a14 55 gps.gps_readable = false;
Gaku0606 3:220b43770a14 56 gps.debug(true);
Gaku0606 3:220b43770a14 57 while(!gps.gps_readable){
Gaku0606 3:220b43770a14 58 if(pc.readable()) break;
Gaku0606 3:220b43770a14 59 }
Gaku0606 3:220b43770a14 60 pc.printf(" -> OK\r\n");
Gaku0606 3:220b43770a14 61 pc.printf("start!!\r\n\r\n");
Gaku0606 1:1d1b6b0396d1 62 while(1){
Gaku0606 2:c05887794ff5 63 double xy[2] = {0};
Gaku0606 2:c05887794ff5 64 float utc[6] = {0};
Gaku0606 3:220b43770a14 65 if(gps.gps_readable){
Gaku0606 3:220b43770a14 66 gps.debug(false);
Gaku0606 3:220b43770a14 67 gps.gps_readable = false;
Gaku0606 3:220b43770a14 68 gps.getPosition(xy);
Gaku0606 3:220b43770a14 69 gps.getUTC(utc);
Gaku0606 3:220b43770a14 70 pc.printf("\033[K");
Gaku0606 3:220b43770a14 71 pc.printf("%d/%d/%d %d:%d:%02.2f ",(int)utc[0],(int)utc[1], (int)utc[2], (int)utc[3], (int)utc[4] ,utc[5]);
Gaku0606 3:220b43770a14 72 pc.printf("(%3.7fe,%3.7fn) ",xy[0], xy[1]);
Gaku0606 3:220b43770a14 73 pc.printf("%d satellites, %.2f[m], %.3f[m/s], %3.2f[degree]\r", gps.Number(), gps.Height(), gps.Knot()*1852.0/3600.0, gps.Degree());
Gaku0606 3:220b43770a14 74 wait(0.1);
Gaku0606 3:220b43770a14 75 }
Gaku0606 3:220b43770a14 76 else gps.debug(true);
Gaku0606 1:1d1b6b0396d1 77 }
Gaku0606 1:1d1b6b0396d1 78 }