mbed用GPSモジュール利用プログラム for IZU 割り込みを利用し、自動的に内部変数へ座標などのデータが更新されるようになっている。そのため、好きなタイミングで専用関数により値を取得できる。
Dependencies: GPS_interrupt mbed
Hybrid_interruptGPS.cpp
- Committer:
- Gaku0606
- Date:
- 2017-02-21
- Revision:
- 3:220b43770a14
- Parent:
- 2:c05887794ff5
File content as of revision 3:220b43770a14:
#include "mbed.h" #include "GPS_interrupt.h" RawSerial pc(USBTX, USBRX); //RawSerial mygps(p28, p27); #define FIRST_BAUDRATE 9600 #define BAUDRATE 115200 //GPS_interrupt *gps; //GPS_interrupt gps(&mygps, 10); Serial mygps(D1, D0,115200); GPS_interrupt gps(&mygps);//, 10); 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); } int main() { pc.baud(115200); bootFunction(); wait(0.5); gps.gps_readable = false; gps.debug(true); while(!gps.gps_readable){ if(pc.readable()) break; } pc.printf(" -> OK\r\n"); pc.printf("start!!\r\n\r\n"); while(1){ double xy[2] = {0}; float utc[6] = {0}; if(gps.gps_readable){ gps.debug(false); gps.gps_readable = false; 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.0/3600.0, gps.Degree()); wait(0.1); } else gps.debug(true); } }