2020_8_30 他からライブラリを引っ張ってきた.

Dependencies:   mbed GPS_Interface

Committer:
MatsumotoKouki
Date:
Thu Jun 18 00:50:46 2020 +0000
Revision:
3:c28d0590adc5
Parent:
2:ee6862d07ae9
Child:
5:5d7e7cf9210a
gps 6/18

Who changed what in which revision?

UserRevisionLine numberNew 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
MatsumotoKouki 3:c28d0590adc5 13 pa10------TX
MatsumotoKouki 3:c28d0590adc5 14 pa9------RX
mikawataru 2:ee6862d07ae9 15 */
Koob 0:8889ed33c550 16 #include "mbed.h"
Koob 1:aec45e847ec3 17
Koob 1:aec45e847ec3 18 DigitalOut myled(LED1);
MatsumotoKouki 3:c28d0590adc5 19 Serial gps(PA_9, PA_10); // tx, rx
MatsumotoKouki 3:c28d0590adc5 20 Serial pc(USBTX, USBRX); // 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);
MatsumotoKouki 3:c28d0590adc5 67 pc.baud(9600);
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 }