mbed用GPSモジュール利用プログラム for IZU 割り込みを利用し、自動的に内部変数へ座標などのデータが更新されるようになっている。そのため、好きなタイミングで専用関数により値を取得できる。
Dependencies: GPS_interrupt mbed
Hybrid_interruptGPS.cpp@2:c05887794ff5, 2017-01-02 (annotated)
- 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?
User | Revision | Line number | New 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 | } |