mbed用GPSモジュール利用プログラム for IZU 割り込みを利用し、自動的に内部変数へ座標などのデータが更新されるようになっている。そのため、好きなタイミングで専用関数により値を取得できる。
Dependencies: GPS_interrupt mbed
Diff: Hybrid_interruptGPS.cpp
- Revision:
- 2:c05887794ff5
- Parent:
- 1:1d1b6b0396d1
- Child:
- 3:220b43770a14
--- a/Hybrid_interruptGPS.cpp Mon Jan 02 00:43:18 2017 +0000 +++ b/Hybrid_interruptGPS.cpp Mon Jan 02 18:49:49 2017 +0000 @@ -3,27 +3,67 @@ Serial pc(USBTX, USBRX); RawSerial mygps(p9, p10); -GPS_interrupt gps(&mygps, 9600); +#define FIRST_BAUDRATE 115200 +#define BAUDRATE 115200 + +GPS_interrupt gps(&mygps, BAUDRATE, 10, FIRST_BAUDRATE); + +void bootFunction(){ + pc.printf("\r\n"); + pc.printf("start LPC1768 boot phase\r\n"); + wait(0.5); + for(int i = 0;i < 100;i++){ + pc.printf("Loading... : %3d [%%]\r", i); + wait(0.025); + } + pc.printf("Loading... : %3d [%%]\r\n", 100); + pc.printf("\t-> finished!!\r\n"); + pc.printf("System : %d Hz\r\n", SystemCoreClock ); + wait(0.5); + pc.printf("start main program\r\n"); + wait(0.1); + pc.printf("initialize"); + wait(0.75); + pc.printf(" -> OK\r\n"); + wait(0.1); + pc.printf("GPS Connecting"); + wait(0.5); + pc.printf("."); + wait(0.5); + pc.printf("."); + wait(0.5); + pc.printf("."); + wait(0.5); + pc.printf("."); + wait(0.5); + pc.printf("."); + wait(0.5); + pc.printf("."); + wait(0.5); + while(1){ + if(gps.gps_readable) break; + } + pc.printf(" -> OK\r\n"); + pc.printf("start!!\r\n\r\n"); + wait(0.5); +} int main() { pc.baud(115200); - mygps.baud(9600); + //mygps.baud(FIRST_BAUDRATE); - pc.printf("%d Hz\r\n", SystemCoreClock ); + bootFunction(); - wait(3.0); while(1){ - //if(gps.gps_readable){ - double xy[2] = {0}; - float utc[6] = {0}; - gps.getPosition(xy); - gps.getUTC(utc); - 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]); - pc.printf("lon %f\tlat %f\r\n",xy[0], xy[1]); - wait(0.10); - // gps.gps_readable = false; - //} - + double xy[2] = {0}; + float utc[6] = {0}; + gps.getPosition(xy); + gps.getUTC(utc); + pc.printf("\033[K"); + 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]); + pc.printf("(%3.7fe,%3.7fn) ",xy[0], xy[1]); + pc.printf("%d satellites, %.2f[m], %.3f[m/s], %3.2f[degree]\r", gps.Number(), gps.Height(), gps.Knot()*1852/3600, gps.Degree()); + wait(0.1); } }