エレキジャック Web版 mbedで初めてのマイコン開発 センサを使ってみよう Rapid PrototypingでGPSロガーをサクサク作るの記事のGPS Loggerのプログラムです。とても簡単にGPS Loggerを作ることができます。 http://www.eleki-jack.com/arm/2011/03/mbed-rapid-prototypinggps-1.html

Dependencies:   TextLCD mbed SDFileSystem

Committer:
sunifu
Date:
Tue Mar 08 08:13:49 2011 +0000
Revision:
0:83a5c5ca947f

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sunifu 0:83a5c5ca947f 1 #include "mbed.h"
sunifu 0:83a5c5ca947f 2 #include "MyGPS.h"
sunifu 0:83a5c5ca947f 3 #include "TextLCD.h"
sunifu 0:83a5c5ca947f 4 #include "string.h"
sunifu 0:83a5c5ca947f 5 #include "SDFileSystem.h"
sunifu 0:83a5c5ca947f 6
sunifu 0:83a5c5ca947f 7 TextLCD lcd(p24, p26, p27, p28, p29, p30) ;
sunifu 0:83a5c5ca947f 8 MyGPS gps(p9, p10); // tx, rx
sunifu 0:83a5c5ca947f 9 SDFileSystem sd(p5, p6, p7, p8, "sd1") ;
sunifu 0:83a5c5ca947f 10 DigitalOut led1(LED1);
sunifu 0:83a5c5ca947f 11
sunifu 0:83a5c5ca947f 12 void writeLocation(void) ;
sunifu 0:83a5c5ca947f 13 void ledFlash(void);
sunifu 0:83a5c5ca947f 14
sunifu 0:83a5c5ca947f 15 int main() {
sunifu 0:83a5c5ca947f 16 time_t oldTime = 0 ,nowTime = 0;
sunifu 0:83a5c5ca947f 17 char strTimeMsg[16];
sunifu 0:83a5c5ca947f 18 time_t t_time;
sunifu 0:83a5c5ca947f 19
sunifu 0:83a5c5ca947f 20 gps.setUpdateTime(10);
sunifu 0:83a5c5ca947f 21 lcd.cls();
sunifu 0:83a5c5ca947f 22
sunifu 0:83a5c5ca947f 23 lcd.locate(0,0);
sunifu 0:83a5c5ca947f 24 lcd.printf("Please Wait....");
sunifu 0:83a5c5ca947f 25 gps.setTime();
sunifu 0:83a5c5ca947f 26
sunifu 0:83a5c5ca947f 27 t_time = gps.getTime() ;
sunifu 0:83a5c5ca947f 28
sunifu 0:83a5c5ca947f 29 strftime(strTimeMsg,16,"%m/%d %H:%M:%S",localtime(&t_time));
sunifu 0:83a5c5ca947f 30 lcd.locate(0,0);
sunifu 0:83a5c5ca947f 31 lcd.printf("%s",strTimeMsg);
sunifu 0:83a5c5ca947f 32 wait(2.0);
sunifu 0:83a5c5ca947f 33
sunifu 0:83a5c5ca947f 34 while (1) {
sunifu 0:83a5c5ca947f 35 gps.sample();
sunifu 0:83a5c5ca947f 36 lcd.cls();
sunifu 0:83a5c5ca947f 37 if ( gps.getStatus() ==1 ){
sunifu 0:83a5c5ca947f 38 lcd.locate(0,0);
sunifu 0:83a5c5ca947f 39 lcd.printf("lat:%10.6f %c",gps.getLatitude(),gps.getNS());
sunifu 0:83a5c5ca947f 40 lcd.locate(0,1);
sunifu 0:83a5c5ca947f 41 lcd.printf("lon:%10.6f %c",gps.getLongitude(),gps.getEW());
sunifu 0:83a5c5ca947f 42
sunifu 0:83a5c5ca947f 43 nowTime = gps.getTime();
sunifu 0:83a5c5ca947f 44 if( (oldTime + gps.getUpdateTime()) < nowTime ){
sunifu 0:83a5c5ca947f 45 writeLocation();
sunifu 0:83a5c5ca947f 46 oldTime = nowTime;
sunifu 0:83a5c5ca947f 47 }
sunifu 0:83a5c5ca947f 48 }else{
sunifu 0:83a5c5ca947f 49 lcd.locate(0,1);
sunifu 0:83a5c5ca947f 50 lcd.printf("data not valid!");
sunifu 0:83a5c5ca947f 51 }
sunifu 0:83a5c5ca947f 52 }
sunifu 0:83a5c5ca947f 53 }
sunifu 0:83a5c5ca947f 54
sunifu 0:83a5c5ca947f 55 void writeLocation(void)
sunifu 0:83a5c5ca947f 56 {
sunifu 0:83a5c5ca947f 57 FILE *fp,*fp1;
sunifu 0:83a5c5ca947f 58 char strTimeMsg[32];
sunifu 0:83a5c5ca947f 59 time_t t_time;
sunifu 0:83a5c5ca947f 60
sunifu 0:83a5c5ca947f 61 if ( gps.getStatus() == 1 ){
sunifu 0:83a5c5ca947f 62 if ( (fp = fopen("/sd1/gps.txt","a"))== NULL ) {
sunifu 0:83a5c5ca947f 63 lcd.cls();
sunifu 0:83a5c5ca947f 64 lcd.locate(0,0);
sunifu 0:83a5c5ca947f 65 lcd.printf("gps Open Failed.") ;
sunifu 0:83a5c5ca947f 66 wait(0.5);
sunifu 0:83a5c5ca947f 67 }else{
sunifu 0:83a5c5ca947f 68 t_time = gps.getTime() ;
sunifu 0:83a5c5ca947f 69 strftime(strTimeMsg,32,"%Y/%m/%d %H:%M:%S ",localtime(&t_time));
sunifu 0:83a5c5ca947f 70 fprintf(fp,"%s",strTimeMsg);
sunifu 0:83a5c5ca947f 71 fprintf(fp,"Latitude:%f Longitude:%f\n",gps.getLatitude(),gps.getLongitude());
sunifu 0:83a5c5ca947f 72
sunifu 0:83a5c5ca947f 73 ledFlash();
sunifu 0:83a5c5ca947f 74 fclose(fp);
sunifu 0:83a5c5ca947f 75 }
sunifu 0:83a5c5ca947f 76
sunifu 0:83a5c5ca947f 77 if ( (fp1 = fopen("/sd1/NMEA.nme","a"))== NULL ) {
sunifu 0:83a5c5ca947f 78 lcd.cls();
sunifu 0:83a5c5ca947f 79 lcd.locate(0,1);
sunifu 0:83a5c5ca947f 80 lcd.printf("NMEA Open Failed.") ;
sunifu 0:83a5c5ca947f 81 wait(0.5);
sunifu 0:83a5c5ca947f 82 }else{
sunifu 0:83a5c5ca947f 83 fprintf(fp1,"%s\n",gps.getNMEA());
sunifu 0:83a5c5ca947f 84 fclose(fp1);
sunifu 0:83a5c5ca947f 85 }
sunifu 0:83a5c5ca947f 86 }
sunifu 0:83a5c5ca947f 87 }
sunifu 0:83a5c5ca947f 88
sunifu 0:83a5c5ca947f 89 void ledFlash(void)
sunifu 0:83a5c5ca947f 90 {
sunifu 0:83a5c5ca947f 91 led1=1;
sunifu 0:83a5c5ca947f 92 wait(0.3);
sunifu 0:83a5c5ca947f 93 led1=0;
sunifu 0:83a5c5ca947f 94 }