mbed-GPS(nucleo)

Dependencies:   mbed

Committer:
kosukesuzuki
Date:
Wed Aug 03 09:15:06 2022 +0000
Revision:
0:01188f8d5d7c
mbed-GPS(nucleo);

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kosukesuzuki 0:01188f8d5d7c 1 #include "mbed.h"
kosukesuzuki 0:01188f8d5d7c 2
kosukesuzuki 0:01188f8d5d7c 3 #include "math.h"
kosukesuzuki 0:01188f8d5d7c 4
kosukesuzuki 0:01188f8d5d7c 5 #define TIME_GAP 6.0
kosukesuzuki 0:01188f8d5d7c 6
kosukesuzuki 0:01188f8d5d7c 7 Serial gps(PA_9,PA_10);
kosukesuzuki 0:01188f8d5d7c 8
kosukesuzuki 0:01188f8d5d7c 9 Timer timer_open;
kosukesuzuki 0:01188f8d5d7c 10 Timer timer_log;
kosukesuzuki 0:01188f8d5d7c 11 Ticker tic_open;
kosukesuzuki 0:01188f8d5d7c 12 Ticker tic_log;
kosukesuzuki 0:01188f8d5d7c 13
kosukesuzuki 0:01188f8d5d7c 14 float _DMS2DEG(float raw_data);
kosukesuzuki 0:01188f8d5d7c 15 int _imput(char cha);
kosukesuzuki 0:01188f8d5d7c 16
kosukesuzuki 0:01188f8d5d7c 17 float Time;
kosukesuzuki 0:01188f8d5d7c 18 char gps_data[256];
kosukesuzuki 0:01188f8d5d7c 19 int cnt_gps;
kosukesuzuki 0:01188f8d5d7c 20 int Cnt_GPS=0;
kosukesuzuki 0:01188f8d5d7c 21
kosukesuzuki 0:01188f8d5d7c 22 int main(){
kosukesuzuki 0:01188f8d5d7c 23 while(1){
kosukesuzuki 0:01188f8d5d7c 24 if(gps.readable()){
kosukesuzuki 0:01188f8d5d7c 25 gps_data[cnt_gps]=gps.getc();
kosukesuzuki 0:01188f8d5d7c 26 if(gps_data[cnt_gps]=='$' || cnt_gps==256){
kosukesuzuki 0:01188f8d5d7c 27 cnt_gps=0;
kosukesuzuki 0:01188f8d5d7c 28 memset(gps_data,'\0',256);
kosukesuzuki 0:01188f8d5d7c 29 }else if (gps_data[cnt_gps]=='\r'){
kosukesuzuki 0:01188f8d5d7c 30 float world_time, lon_east, lat_north;
kosukesuzuki 0:01188f8d5d7c 31 int rlock, sat_num;
kosukesuzuki 0:01188f8d5d7c 32 char lat,lon;
kosukesuzuki 0:01188f8d5d7c 33 if(sscanf(gps_data,
kosukesuzuki 0:01188f8d5d7c 34 "GPGGA,%f,%f,%c,%f,%c,%d,%d"
kosukesuzuki 0:01188f8d5d7c 35 ,&world_time,&lat_north,&lat,
kosukesuzuki 0:01188f8d5d7c 36 &lon_east,&lon,
kosukesuzuki 0:01188f8d5d7c 37 &rlock,&sat_num)>=1){
kosukesuzuki 0:01188f8d5d7c 38 if(rlock==1){
kosukesuzuki 0:01188f8d5d7c 39 lat_north=_DMS2DEG(lat_north);
kosukesuzuki 0:01188f8d5d7c 40 lon_east=_DMS2DEG(lon_east);
kosukesuzuki 0:01188f8d5d7c 41 printf("Lat:%f,Lon:%f\r\ntime:%f,sat_num:%d\r\n",
kosukesuzuki 0:01188f8d5d7c 42 lat_north,lon_east,world_time,sat_num);
kosukesuzuki 0:01188f8d5d7c 43 }else{
kosukesuzuki 0:01188f8d5d7c 44 printf("%s\r\n",gps_data);
kosukesuzuki 0:01188f8d5d7c 45 }
kosukesuzuki 0:01188f8d5d7c 46 }
kosukesuzuki 0:01188f8d5d7c 47 }else{
kosukesuzuki 0:01188f8d5d7c 48 cnt_gps++;
kosukesuzuki 0:01188f8d5d7c 49 }
kosukesuzuki 0:01188f8d5d7c 50 }
kosukesuzuki 0:01188f8d5d7c 51 if(timer_log.read()>=30.0*60.0)timer_log.reset();
kosukesuzuki 0:01188f8d5d7c 52 }
kosukesuzuki 0:01188f8d5d7c 53 }
kosukesuzuki 0:01188f8d5d7c 54 float _DMS2DEG(float raw_data){
kosukesuzuki 0:01188f8d5d7c 55 int d=(int)(raw_data/100);
kosukesuzuki 0:01188f8d5d7c 56 float m=(raw_data-(float)d*100);
kosukesuzuki 0:01188f8d5d7c 57 return (float)d+m/60;
kosukesuzuki 0:01188f8d5d7c 58 }
kosukesuzuki 0:01188f8d5d7c 59
kosukesuzuki 0:01188f8d5d7c 60
kosukesuzuki 0:01188f8d5d7c 61
kosukesuzuki 0:01188f8d5d7c 62
kosukesuzuki 0:01188f8d5d7c 63
kosukesuzuki 0:01188f8d5d7c 64
kosukesuzuki 0:01188f8d5d7c 65
kosukesuzuki 0:01188f8d5d7c 66