mbed用GPSモジュール利用プログラム for IZU 割り込みを利用し、自動的に内部変数へ座標などのデータが更新されるようになっている。そのため、好きなタイミングで専用関数により値を取得できる。
Dependencies: GPS_interrupt mbed
Hybrid_interruptGPS.cpp
- Committer:
- Gaku0606
- Date:
- 2017-01-02
- Revision:
- 2:c05887794ff5
- Parent:
- 1:1d1b6b0396d1
- Child:
- 3:220b43770a14
File content as of revision 2:c05887794ff5:
#include "mbed.h" #include "GPS_interrupt.h" Serial pc(USBTX, USBRX); RawSerial mygps(p9, p10); #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(FIRST_BAUDRATE); bootFunction(); while(1){ 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); } }