I-O DATA DEV2 / Mbed 2 deprecated ud-gs4-R_400G_SD_Log_No2

Dependencies:   mbed SDFileSystem_

Revision:
7:b69fa9bb320d
Parent:
6:bf4321ef0330
Child:
8:7f80139df48d
--- a/main.cpp	Wed Aug 04 06:41:02 2021 +0000
+++ b/main.cpp	Thu Aug 19 08:38:59 2021 +0000
@@ -1,5 +1,6 @@
 #include "mbed.h"
 #include "SDFileSystem.h"
+#include "time.h"
 /*
    This basic example just shows how to read the ADC internal channels raw values.
    Please look in the corresponding device reference manual for a complete
@@ -42,84 +43,103 @@
 DigitalOut        led(PB_5);
 int initLIS3DH();
 int read3axes(short *tx,short *ty,short *tz);
-int readTemp(short *tmp);
+//int readTemp(short *tmp);
 FILE     *fp;
 
 int main()
 {
-    short x,y,z,tmp;
- 
-    int   i,l;
-    int lwaight;
-    float wt;
-    uint32_t dt;
-#if 0    
-    pc.printf("\nSTM32 Loadcell  example\r\n");
-    while(1) {
-        led = !led;
-        hx_clk=1;
-        wait(1.0);
-        hx_clk=0;
-        wait(1.0);
-        dt=0;
-        for(i=0;i<24;i++) {
-           hx_clk=1;
-           wait_us(1);
-           dt <<= 1;
-           if (hx_dt==0) dt |= 1;
-           hx_clk=0;
-           wait_us(1);
-        }
-           hx_clk=1;
-           wait_us(1);
-           hx_clk=0;
-        pc.printf("data = %08x %d ",dt,dt);
-        wt =  (float)(dt) * 0.000038f  - 1.2f;          
-        pc.printf("waight = %3.3f\r\n",wt); 
-    }
-#endif
+    short x,y,z,count=0;
+    float ox,oy,oz,oldacc = 0;
+    double xyz[3],newacc=0;
+    //int ret = 0;
+    char buf[512];
+    //char *retchar = NULL;
+    //time_t t;//24H = 86400s
  
     initLIS3DH();
  
-     h3dacc.init(H3LIS331DL_ODR_100Hz, H3LIS331DL_NORMAL,H3LIS331DL_FULLSCALE_2);//これで初期化している
+    h3dacc.init(H3LIS331DL_ODR_100Hz, H3LIS331DL_NORMAL,H3LIS331DL_FULLSCALE_8);//これで初期化している FULLSCALE_8=400G
+    h3dacc.setHPFMode(H3LIS331DL_HPM_NORMAL_MODE_RES);//High Pass Filter ON
  
-    pc.printf("\nSTM32 ADC internal channels reading example\r\n");
-    pc.printf("\nSTM32 3D acc sensor example\r\n");
+    //pc.printf("\nSTM32 ADC internal channels reading example\r\n");
+    //pc.printf("\nSTM32 3D acc sensor example\r\n");
     
     fp = fopen("/sd/testlog.txt", "a");             
          
     if (fp == NULL)
     {
-      pc.printf("open error!!\r\n");
+      //pc.printf("open error!!\r\n");
 
     }     
     else
     {
-      pc.printf("SD opened\r\n");
-      fclose(fp);
+      //pc.printf("SD opened\r\n");
+      //fclose(fp);
       wait_ms(10);
     }
     
     while(1) {
-//        pc.printf("ADC Temp = %f\r\n", (adc_temp.read()*100));
-//        pc.printf("ADC VRef = %f\r\n", adc_vref.read());         
-//        pc.printf("\033[2A");
 //On board ACC sensor
         x=y=z=0;
         read3axes(&x,&y,&z);
-        readTemp(&tmp);
-        pc.printf("x=%d y=%d z=%d tmperature=%d\r\n", x,y,z,tmp);         
-        pc.printf("x=%f y=%f z=%f\r\n", (float)x/1024.0f,(float)y/1024.0f,(float)z/1024.0f);   
+        //readTemp(&tmp);
+        //pc.printf("x=%d y=%d z=%d tmperature=%d\r\n", x,y,z,tmp);    
+        //t = time(NULL);
+        if(count == 5){
+            ox = (float)x/1024.0f;
+            oy = (float)y/1024.0f;
+            oz = (float)z/1024.0f;
+            ox = ox * ox;
+            oy = oy * oy;
+            oz = oz * oz;
+            oldacc = sqrt(ox + oy + oz);
+            
+            //pc.printf("oldacc %ld %f",time(NULL),sqrt(powf((float)x/1024.0f,2) + powf((float)y/1024.0f,2) + powf((float)z/1024.0f,2)));    
+            pc.printf("oldacc %ld, %f\r\n", time(NULL), oldacc);    
+            //pc.printf("oldacc %ld x=%f y=%f z=%f\r\n", time(NULL), (float)x/1024.0f,(float)y/1024.0f,(float)z/1024.0f);   
+            count = 0;
+        }
 // Extra ACC sensor        
-        x=y=z=0;
-        h3dacc.readXYZ(&x, &y, &z);
-        pc.printf("High x=%d y=%d z=%d \r\n", x,y,z);         
+        //x=y=z=0;
+        //h3dacc.readXYZ(&x, &y, &z);
+        h3dacc.getAcceleration(xyz);
+        //t = time(NULL);
+        xyz[0] = xyz[0] * xyz[0];
+        xyz[1] = xyz[1] * xyz[1];
+        xyz[2] = xyz[2] * xyz[2];
+        newacc = xyz[0] + xyz[1] + xyz[2];
+        newacc = sqrt(newacc);
+        //pc.printf("newacc %ld x=%lf, y=%lf, z=%lf \r\n", time(NULL), xyz[0], xyz[1], xyz[2]);
+        pc.printf("newacc %ld, %lf\r\n", time(NULL), newacc);
+        //ret = fprintf(fp, "x=%lf, y=%lf, z=%lf \r\n", xyz[0], xyz[1], xyz[2]);
+        //pc.printf("fprintf ret:%d\r\n", ret);
+        /*
+        retchar = fgets(buf,64,fp);
+        if(!retchar){
+            if(fp){
+                fclose(fp);
+                fp = NULL;
+            }
+        }
+        else{
+            pc.printf("%s\r\n",buf);
+        }
+        */
+        
+        //pc.printf("High x=%d y=%d z=%d \r\n", x,y,z); 
               
         led = !led;
-        wait(1.0);
+        count++;
+        if(time(NULL) > 86400){
+            //Create New File
+            fclose(fp);
+            //fp = fopen();
+        }
+        wait(0.2);
     }
 }
 /*********** porting **************/   
+
 void spiFormat(int b,int m) {
    STSPI.format(b,m);  /* 8bit */
 }
@@ -132,3 +152,6 @@
 int spiWrite(int wd) {
     return ( STSPI.write(wd)); 
 }   
+
+void error(const char* format, ...) {
+}
\ No newline at end of file