logger

main.cpp

Committer:
takuto003
Date:
2019-12-09
Revision:
0:c3e3dc7923c8

File content as of revision 0:c3e3dc7923c8:

#include "mbed.h"
#include "logger.h"
#include "SDFileSystem.h"
DigitalOut L1(PA_4);
DigitalOut L2(PA_6);
DigitalOut L3(PA_5);
Serial gps(PA_9,PA_10);
Serial pc(PA_2,PA_3);
SDFileSystem sd(PB_5, PB_4, PB_3, PA_15, "sd");
FILE* fp;
LOGGER logg;
Timer t;
float sum = 0;
uint32_t sumCount = 0;
char buffer[14]; 
int log_count=0;
int16_t gyr[3], acc[3], mag[3],Temp;
float mag_init[3];
int COU=0;
int i,rlock,mode;
char gps_data[256];
char ns,ew;
float w_time,hokui,tokei;
float g_hokui,g_tokei;
float d_hokui,m_hokui,d_tokei,m_tokei;
unsigned char c;

void getGPS() {
  c = gps.getc();
  if( c=='$' || i == 256){
    mode = 0;
    i = 0;
    for(int j=0; j<256; j++){
        gps_data[j]=NULL;
    }
  }
  if(mode==0){
    if((gps_data[i]=c) != '\r'){
      i++;
    }else{
      gps_data[i]='\0';
      
      if( sscanf(gps_data, "$GPGGA,%f,%f,%c,%f,%c,%d",&w_time,&hokui,&ns,&tokei,&ew,&rlock) >= 1){
        if(rlock==1){
          L1=1;
          d_tokei= int(tokei/100);
          m_tokei= (tokei-d_tokei*100)/60;
          g_tokei= d_tokei+m_tokei;
          //Latitude
          d_hokui=int(hokui/100);
          m_hokui=(hokui-d_hokui*100)/60;
          g_hokui=d_hokui+m_hokui;
        }
         else{
        }
        sprintf(gps_data, "");
      }
    }
  }
}
int main()
{ 
    i2c.frequency(400000);
    t.start();
    pc.printf("gps start!\r\n");
    gps.baud(9600);
    logg.initialize();
    mkdir("/sd/mydir", 0777);
    FILE *fp=fopen("/sd/test.txt","w");
    fprintf(fp,"start");
    fclose(fp);
    
    gps.attach(getGPS,Serial::RxIrq);
 while(1) {
    FILE *fp = fopen("/sd/test.txt","a");
    COU++;
    fprintf(fp,"ID=%d,",COU);
    fprintf(fp,"%f", t.read());
    logg.readGyroData(gyr);
    logg.readAccelData(acc);
    logg.readMagData(mag);
    Temp = logg.readTempData();
    ax = acc[0] * 2.0 / 32768.0;
    ay = acc[1] * 2.0 / 32768.0;
    az = acc[2] * 2.0 / 32768.0;
    fprintf(fp,"%d, %d, %d,", gyr[0], gyr[1], gyr[2]); 
    fprintf(fp,"%d, %d, %d,", acc[0], acc[1], acc[2]); 
    fprintf(fp,"%f, %f, %f,", ax, ay, az);
    fprintf(fp,"%d, %d, %d", mag[0], mag[1], mag[2]);
    fprintf(fp,"%d,",(Temp/100)); 
    fprintf(fp,"%2.2f, %04.2f", logg.getTemperature(), logg.getPressure());
    fprintf(fp,"%.1f,%.6f,%.6f\n",w_time,g_tokei, g_hokui);
    wait(0.2);
    fclose(fp);
    L1=0;
}
}