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

Dependencies:   GPS_interrupt mbed

Committer:
Gaku0606
Date:
Mon Jan 02 18:49:49 2017 +0000
Revision:
2:c05887794ff5
Parent:
1:1d1b6b0396d1
Child:
3:220b43770a14
????

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