2020_8_30 他からライブラリを引っ張ってきた.
Dependencies: mbed GPS_Interface
main.cpp@2:ee6862d07ae9, 2016-09-04 (annotated)
- Committer:
- mikawataru
- Date:
- Sun Sep 04 14:51:04 2016 +0000
- Revision:
- 2:ee6862d07ae9
- Parent:
- 1:aec45e847ec3
- Child:
- 3:c28d0590adc5
nucleo&GPS
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mikawataru | 2:ee6862d07ae9 | 1 | /* |
mikawataru | 2:ee6862d07ae9 | 2 | 説明 |
mikawataru | 2:ee6862d07ae9 | 3 | Nucleo-F303K8とGPSmモジュールを使ったサンプルプログラム |
mikawataru | 2:ee6862d07ae9 | 4 | |
mikawataru | 2:ee6862d07ae9 | 5 | 参考 |
mikawataru | 2:ee6862d07ae9 | 6 | http://www.hiramine.com/physicalcomputing/general/gps_nmeaformat.html |
mikawataru | 2:ee6862d07ae9 | 7 | |
mikawataru | 2:ee6862d07ae9 | 8 | |
mikawataru | 2:ee6862d07ae9 | 9 | 以下ピン配置 |
mikawataru | 2:ee6862d07ae9 | 10 | Nucleo GPSモジュール |
mikawataru | 2:ee6862d07ae9 | 11 | GND-----GND-----------0V |
mikawataru | 2:ee6862d07ae9 | 12 | 5v------VIN |
mikawataru | 2:ee6862d07ae9 | 13 | D0------TX |
mikawataru | 2:ee6862d07ae9 | 14 | D1------RX |
mikawataru | 2:ee6862d07ae9 | 15 | */ |
Koob | 0:8889ed33c550 | 16 | #include "mbed.h" |
Koob | 1:aec45e847ec3 | 17 | |
Koob | 1:aec45e847ec3 | 18 | DigitalOut myled(LED1); |
mikawataru | 2:ee6862d07ae9 | 19 | Serial gps(D1, D0); // tx, rx |
mikawataru | 2:ee6862d07ae9 | 20 | Serial pc(PA_2, PA_3); // tx, rx |
mikawataru | 2:ee6862d07ae9 | 21 | int i,rlock,mode; |
mikawataru | 2:ee6862d07ae9 | 22 | char gps_data[256],gps2_data[256]; |
mikawataru | 2:ee6862d07ae9 | 23 | char ns,ew; |
mikawataru | 2:ee6862d07ae9 | 24 | float w_time,hokui,tokei; |
mikawataru | 2:ee6862d07ae9 | 25 | float g_hokui,g_tokei; |
mikawataru | 2:ee6862d07ae9 | 26 | float d_hokui,m_hokui,d_tokei,m_tokei; |
Koob | 0:8889ed33c550 | 27 | |
mikawataru | 2:ee6862d07ae9 | 28 | void getGPS() { |
mikawataru | 2:ee6862d07ae9 | 29 | unsigned char c = gps.getc(); |
mikawataru | 2:ee6862d07ae9 | 30 | if( c=='$' || i == 256){ |
mikawataru | 2:ee6862d07ae9 | 31 | mode = 0; |
mikawataru | 2:ee6862d07ae9 | 32 | i = 0; |
mikawataru | 2:ee6862d07ae9 | 33 | } |
mikawataru | 2:ee6862d07ae9 | 34 | if(mode==0){ |
mikawataru | 2:ee6862d07ae9 | 35 | if((gps_data[i]=c) != '\r'){ |
mikawataru | 2:ee6862d07ae9 | 36 | i++; |
mikawataru | 2:ee6862d07ae9 | 37 | }else{ |
Koob | 0:8889ed33c550 | 38 | gps_data[i]='\0'; |
mikawataru | 2:ee6862d07ae9 | 39 | // pc.printf("%s\r\n",gps_data); |
mikawataru | 2:ee6862d07ae9 | 40 | |
mikawataru | 2:ee6862d07ae9 | 41 | if( sscanf(gps_data, "$GPGGA,%f,%f,%c,%f,%c,%d",&w_time,&hokui,&ns,&tokei,&ew,&rlock) >= 1){ |
Koob | 0:8889ed33c550 | 42 | if(rlock==1){ |
mikawataru | 2:ee6862d07ae9 | 43 | pc.printf("Status:Lock(%d)\n\r",rlock); |
mikawataru | 2:ee6862d07ae9 | 44 | //logitude |
Koob | 0:8889ed33c550 | 45 | d_tokei= int(tokei/100); |
Koob | 0:8889ed33c550 | 46 | m_tokei= (tokei-d_tokei*100)/60; |
mikawataru | 2:ee6862d07ae9 | 47 | g_tokei= d_tokei+m_tokei; |
Koob | 0:8889ed33c550 | 48 | pc.printf("Log:%4.5f,",g_tokei); |
mikawataru | 2:ee6862d07ae9 | 49 | //Latitude |
Koob | 0:8889ed33c550 | 50 | d_hokui=int(hokui/100); |
Koob | 0:8889ed33c550 | 51 | m_hokui=(hokui-d_hokui*100)/60; |
Koob | 0:8889ed33c550 | 52 | g_hokui=d_hokui+m_hokui; |
Koob | 0:8889ed33c550 | 53 | pc.printf("Lat:%4.5f\n\r",g_hokui); |
Koob | 0:8889ed33c550 | 54 | } |
Koob | 0:8889ed33c550 | 55 | else{ |
Koob | 0:8889ed33c550 | 56 | pc.printf("\n\rStatus:unLock(%d)\n\r",rlock); |
mikawataru | 2:ee6862d07ae9 | 57 | pc.printf("%s",gps_data); |
Koob | 0:8889ed33c550 | 58 | } |
Koob | 0:8889ed33c550 | 59 | }//if |
mikawataru | 2:ee6862d07ae9 | 60 | } |
mikawataru | 2:ee6862d07ae9 | 61 | } |
Koob | 1:aec45e847ec3 | 62 | } |
Koob | 1:aec45e847ec3 | 63 | |
Koob | 1:aec45e847ec3 | 64 | int main(){ |
mikawataru | 2:ee6862d07ae9 | 65 | pc.printf("*** GPS GT-720F ***"); |
mikawataru | 2:ee6862d07ae9 | 66 | gps.baud(9600); |
mikawataru | 2:ee6862d07ae9 | 67 | pc.baud(115200); |
mikawataru | 2:ee6862d07ae9 | 68 | gps.attach(getGPS,Serial::RxIrq); |
mikawataru | 2:ee6862d07ae9 | 69 | while(1) { |
mikawataru | 2:ee6862d07ae9 | 70 | myled = 1; |
mikawataru | 2:ee6862d07ae9 | 71 | wait(0.2); |
mikawataru | 2:ee6862d07ae9 | 72 | myled = 0; |
mikawataru | 2:ee6862d07ae9 | 73 | wait(0.2); |
mikawataru | 2:ee6862d07ae9 | 74 | } |
mikawataru | 2:ee6862d07ae9 | 75 | } |