logger

Revision:
0:c3e3dc7923c8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Dec 09 15:37:51 2019 +0000
@@ -0,0 +1,97 @@
+#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;
+}
+}