2018年度計器mbed用プログラム

Dependencies:   BufferedSoftSerial2 INA226_ver1 mbed-rtos mbed SDFileSystem-RTOS

Fork of keiki2017 by albatross

Files at this revision

API Documentation at this revision

Comitter:
YusukeWakuta
Date:
Fri Jun 16 07:34:32 2017 +0000
Branch:
SDandCadenceThread
Parent:
69:1f892421d694
Child:
71:c06da87572f1
Commit message:
????????????????

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Fri Jun 16 02:04:45 2017 +0000
+++ b/main.cpp	Fri Jun 16 07:34:32 2017 +0000
@@ -55,8 +55,6 @@
 
 //Timer sonarTimer;
 AnalogIn sonarPin(p15);
-//InterruputIn sonarPin(p15);
-//double sonarDistTime
 double sonarDist;
 float sonarV;
 
@@ -160,25 +158,31 @@
 
 //ケイデンスの値を取得します。
 // source: 定格12V電源の電圧値[mV], input: センサ値[mV]
-void updateCadence(double source, double input,double input2,bool isFFlag)
+void updateCadence(double source, double input,double input2)
 {
+
+    static bool isFFlag = true;
     if(isFFlag) {
         lastCadenceInput =  isOh182eOverThreshold(source,input);
         lastCadenceInput2 =  isOh182eOverThreshold(source,input2);
         cadenceTimer.start();
+        isFFlag = false;
         return;
     }
-    if((isOh182eOverThreshold(source,input) ^ lastCadenceInput) ||(isOh182eOverThreshold(source,input2) ^ lastCadenceInput2)) {
+    if((isOh182eOverThreshold(source,input) != lastCadenceInput) ||(isOh182eOverThreshold(source,input2) != lastCadenceInput2)) {
         if(cadenceCounter < 3) {
             cadenceCounter++;
+            led3 = !led3;
+            lastCadenceInput =  isOh182eOverThreshold(source,input);
+            lastCadenceInput2 =  isOh182eOverThreshold(source,input2);
             return;
         }
         cadenceResult =60.0/  (cadenceTimer.read_us() / 1000000.0); //クランク一回転にかかる時間を取得
         cadenceTimer.reset();
         cadenceCounter = 0;
     }
-        lastCadenceInput =  isOh182eOverThreshold(source,input);
-        lastCadenceInput2 =  isOh182eOverThreshold(source,input2);
+    lastCadenceInput =  isOh182eOverThreshold(source,input);
+    lastCadenceInput2 =  isOh182eOverThreshold(source,input2);
 }
 
 void init()
@@ -316,28 +320,26 @@
 
 void SDprintf(const void* arg)
 {
-    SdInit();
-    bool isFirstCadenceFlag = true;
+  //  SdInit();
     while(1) {
-        led3 = !led3;
-        updateCadence(V,mgPin.read() * 3.3,mgPin2.read() * 3.3,isFirstCadenceFlag);
-        printf("mgPin V:%f\n",mgPin.read()*3.3);
-        isFirstCadenceFlag = false;
-        if(write_datas_index == SD_WRITE_NUM-1) {
-            fp = fopen("/sd/mydir/data.csv", "a");
-            if(fp == NULL) {
-                error("Could not open file for write!!\n");
-            }
-            for(int i = 0; i < SD_WRITE_NUM; i++) {
-                for(int j = 0; j < WRITE_DATAS_NUM; j++) {
-                    fprintf(fp,"%f,", writeDatas[i][j]);
-                }
-            }
-            fprintf(fp,"\n");
-            fclose(fp);
-
-            write_datas_index=0;
-        }
+        updateCadence(V,mgPin.read() * 3300.0,mgPin2.read() * 3300.0);
+        //  pc.printf("V:%5.5f  mgPin:%5.5f     mgPin2:%5.5f",V,mgPin.read() * 3300.0,mgPin2.read() * 3300.0);
+      //  if(write_datas_index == SD_WRITE_NUM-1) {
+//            fp = fopen("/sd/mydir/data.csv", "a");
+//            if(fp == NULL) {
+//                error("Could not open file for write!!\n");
+//            }
+//            for(int i = 0; i < SD_WRITE_NUM; i++) {
+//                for(int j = 0; j < WRITE_DATAS_NUM; j++) {
+//                    fprintf(fp,"%f,", writeDatas[i][j]);
+//                }
+//                fprintf(fp,"\n");
+//            }
+//
+//            fclose(fp);
+//
+//            write_datas_index=0;
+//        }
         Thread::wait(100);
     }
 }
@@ -383,7 +385,7 @@
     }
     twe.printf("%s",sbuf);
     twe.printf("inp,%d,%i,%d,%i\n",soudaDatas[YOKUTAN_DATAS_NUM],soudaDatas[sizeof(int) + YOKUTAN_DATAS_NUM + 2],(int)soudaDatas[SOUDA_DATAS_NUM - sizeof(int) - 3],soudaDatas[SOUDA_DATAS_NUM-1]);
-    
+
     /*
     送信文字列
     0-13翼端データ
@@ -401,10 +403,12 @@
 //    pc.printf("%d,%i,%d,%i,",soudaDatas[YOKUTAN_DATAS_NUM],soudaDatas[sizeof(int) + YOKUTAN_DATAS_NUM + 2],(int)soudaDatas[SOUDA_DATAS_NUM - sizeof(int) - 3],soudaDatas[SOUDA_DATAS_NUM-1]);
 //    pc.printf("%f,%f,%f\n\r",pitch,roll,yaw);
 //    printf("mgPin V:%f\n\r",mgPin.read()*3.3);
-    pc.printf("%d,%i,%d,%i\n%f,%f,%f\n%f,%f,%f\n\r",
-        soudaDatas[YOKUTAN_DATAS_NUM],soudaDatas[sizeof(int) + YOKUTAN_DATAS_NUM + 2],(int)soudaDatas[SOUDA_DATAS_NUM - sizeof(int) - 3],soudaDatas[SOUDA_DATAS_NUM-1],
-        pitch,roll,yaw,
-        airSpeed,sonarDist,cadenceResult);
+    // pc.printf("%d,%i,%d,%i\n%f,%f,%f\n%f,%f,%f\n\r",
+//              soudaDatas[YOKUTAN_DATAS_NUM],soudaDatas[sizeof(int) + YOKUTAN_DATAS_NUM + 2],(int)soudaDatas[SOUDA_DATAS_NUM - sizeof(int) - 3],soudaDatas[SOUDA_DATAS_NUM-1],
+//              pitch,roll,yaw,
+//              airSpeed,sonarDist,cadenceResult);
+    pc.printf("cadence:%5.5f\n\r",cadenceResult);
+
 //    for(int i = 0; i < strlen(cadence_twe.myBuff); i++){
 //        ////pc.printf("%c",*(cadence_twe.myBuff+i));
 //    }
@@ -413,7 +417,7 @@
 //        android.printf("%f,%f,%f,",pitch,roll,yaw);
 //        android.printf("%f,%f,\r\n",airSpeed,sonarDist);
         android.printf("%4.2f,%4.2f,%4.2f,\n,",roll,airSpeed,cadenceResult);//cadence_twe.cadence);
-//        led2 = !led2; 
+//        led2 = !led2;
     }
 //    SDprintf();
 }
@@ -450,10 +454,13 @@
     init();
     int VCcounter = 0;
     while(1) {
-        if(VCcounter%20 == 0 && VCmonitor.getVoltage(&V) == 0) {
-            pc.printf("e:%f\n",V);
-        }VCcounter++;
-        
+        if(VCcounter%20 == 0 ) {
+            if( VCmonitor.getVoltage(&V) == 0) {
+                pc.printf("e:%f\n",V);
+            }
+        }
+        VCcounter++;
+
 //        updateCadence(V,mgPin.read() * 3.3,mgPin2.read() * 3.3,isFirstCadenceFlag);
         //pc.printf("test\n\r");
 //        mpuProcessing();