gps test 161222
Dependencies: SDFileSystem mbed
Diff: main.cpp
- Revision:
- 0:6cb9ece2cb7e
diff -r 000000000000 -r 6cb9ece2cb7e main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Dec 22 07:43:26 2016 +0000 @@ -0,0 +1,123 @@ +#include "mbed.h" +#include "SDFileSystem.h" + +SDFileSystem sd(p5, p6, p7, p8, "sd"); +//sdFileSystem sd("sd"); +DigitalOut led1(LED1); +DigitalIn cds(p29); +PwmOut l_moter(p22); +PwmOut r_moter(p21); +PwmOut servo(p24); +Serial gps(p13,p14); +Serial gps2(p9,p10); +Serial pc(USBTX,USBRX); + +time_t seconds = time(NULL) + (60 * 60 * 9); // JST +struct tm *t = localtime(&seconds); + +char gps_c[250]; +int a,b,c,d,e,f,g; +float h,i,j,k,l,m,n,servo_pul; +char o,p; + +int sd_write(){ + a=0; + pc.printf("sequence2\n"); + + while(a <= 159) + { + led1=1; + servo_pul = servo_pul+0.0001; + servo.pulsewidth(servo_pul); + if(servo_pul >= 0.0022) + { servo_pul=0.0008;} + gps_c[a] = gps.getc(); + pc.printf("%d %c\n",a,gps_c[a]); + + if(gps_c[a] == '\n')//改行まできたとき + { gps_c[a+1] = '\0'; + a=0; + pc.printf("gps_c = NULL\n"); + + + if(memcmp(gps_c,"$GPRMC",6) == 0) + { sscanf(gps_c,"$GPRMC,%f,%c,%f,N,%f,E,%f,%f,%f,%f,W",&h,&o,&i,&j,&k,&l,&m,&n); + pc.printf("$GPRMC,%f,%c,%f,N,%f,E,%f,%f,%f,%f,W \n",h,o,i,j,k,l,m,n); + pc.printf("%04d/%02d/%02d %02d:%02d:%02d\n", + t->tm_year +1900, t->tm_mon+12, t->tm_mday+7, t->tm_hour+15, t->tm_min-54,t->tm_sec); + + //mkdir("/sd/gps", 0777); + FILE *fp = fopen("/sd/gps.txt", "a"); + if(fp == NULL) { + error("Could not open file for write\n"); + } + + fprintf(fp,"$GPRMC,%f,%c,%f,N,%f,E,%f,%f,%f,%f,W \n",h,o,i,j,k,l,m,n); + fprintf(fp,"%04d/%02d/%02d %02d:%02d:%02d\n", + t->tm_year +1900, t->tm_mon+12, t->tm_mday+7, t->tm_hour+15, t->tm_min-54,t->tm_sec); + + fclose(fp); + } + + if(memcmp(gps_c,"$GPGGA",6) == 0) + { sscanf(gps_c,"$GPGGA,%f,%f,N,%f,E,%d,%d,%f,%f,M,%f,M",&h,&i,&j,&b,&c,&k,&l,&m); + pc.printf("$GPGGA,%f,%f,N,%f,E,%d,%d,%f,%f,M,%f,M\n",h,i,j,b,c,k,l,m); + pc.printf("%04d/%02d/%02d %02d:%02d:%02d\n", + t->tm_year +1900, t->tm_mon+12, t->tm_mday+7, t->tm_hour+15, t->tm_min-54,t->tm_sec); + + // mkdir("/sd/gps", 0777); + FILE *fp = fopen("/sd/gps.txt", "a"); + if(fp == NULL) { + error("Could not open file for write\n"); + } + + fprintf(fp,"$GPGGA,%f,%f,N,%f,E,%d,%d,%f,%f,M,%f,M",h,i,j,b,c,k,l,m); + fprintf(fp,"%04d/%02d/%02d %02d:%02d:%02d\n", + t->tm_year +1900, t->tm_mon+12, t->tm_mday+7, t->tm_hour+15, t->tm_min-54,t->tm_sec); + + fclose(fp); + }} + + + + else if(gps_c[a] == '$') + { a=1; + gps_c[0] = '$'; + pc.printf("gps_c = $\n"); + } + + else + { a++; } + } + led1=0; + return(0); +} + +int main(void){ + servo.period(0.020); + servo_pul=0; + pc.printf("%04d/%02d/%02d %02d:%02d:%02d\n", + t->tm_year +1900, t->tm_mon+12, t->tm_mday+7, t->tm_hour+15, t->tm_min-54,t->tm_sec); + + FILE *fp = fopen("/sd/gps.txt", "a"); + if(fp == NULL) {error("Could not open file for write\n");} + fprintf(fp,"start %04d/%02d/%02d %02d:%02d:%02d\n", + t->tm_year +1900, t->tm_mon+12, t->tm_mday+7, t->tm_hour+15, t->tm_min-54,t->tm_sec); + fclose(fp); + + while(1){ + + if(cds==0) + { + while(1){ + pc.printf("sequence1 %04d/%02d/%02d %02d:%02d:%02d\n", + t->tm_year +1900, t->tm_mon+12, t->tm_mday+7, t->tm_hour+15, t->tm_min-54,t->tm_sec); + + + sd_write(); + wait(0.1); + } + } + } + +} \ No newline at end of file