2017年度の製作を開始します。

Dependencies:   BufferedSoftSerial2 SDFileSystem-RTOS mbed mbed-rtos INA226_ver1

Fork of keiki2016ver5 by albatross

Revision:
12:f01c1ba847ac
Parent:
11:90e2b070f337
Child:
13:09e05e7cfca1
--- a/main.cpp	Thu Oct 27 15:56:19 2016 +0000
+++ b/main.cpp	Sat Nov 12 12:03:02 2016 +0000
@@ -3,6 +3,7 @@
 #include "Fusokukei.h"
 #include "MPU6050.h"
 #include "SDFileSystem.h"
+#include "SoftwareSerial.h"
 
 #define KX_VALUE_MIN 0.4
 #define KX_VALUE_MAX 0.8
@@ -18,9 +19,10 @@
 #define INIT_SERVO_PERIOD_MS 20
 
 Serial pc(USBTX,USBRX);
-Serial soudaSerial(p13,p14);
 Serial twe(p9,p10);
-Ticker writeDatasTicker;
+Serial cadenceTwe(p13,p14);
+SoftwareSerial soudaSerial(p24,p23);
+//Ticker writeDatasTicker;
 Timer writeTimer;
 
 InterruptIn FusokukeiPin(p30);
@@ -50,6 +52,7 @@
 PwmOut kisokuServo(p26);
 PwmOut geikakuServo(p22);
 
+float cadence;
 char soudaDatas[SOUDA_DATAS_NUM];
 float writeDatas[SD_WRITE_NUM][WRITE_DATAS_NUM];
 volatile int write_datas_index = 0;
@@ -60,6 +63,8 @@
 void FusokukeiInit();
 void MpuInit();
 void mpuProcessing();
+void cadenceRead();
+void cadenceInit();
 void SdInit();
 void DataReceiveFromSouda();
 void WriteDatas();
@@ -77,6 +82,7 @@
 
 void init(){
     twe.baud(115200);
+//    test.baud(300);
     //writeTimer.start();
     kisokuServo.period_ms(INIT_SERVO_PERIOD_MS);
     geikakuServo.period_ms(INIT_SERVO_PERIOD_MS);
@@ -157,6 +163,34 @@
     }
 }
 
+void cadenceInit(){
+    cadenceTwe.baud(115200);
+    
+}
+
+void cadenceRead(){
+    if(twe.readable()){
+        data[data_count]=twe.getc();
+    
+        if(data[data_count]=='\r'){
+            for(int i=0;i<73;i++) data[i]= NULL;
+            data_num=0;
+            data_count=0;
+        }else{
+            if(data[data_count]==';'){
+                data_num++;
+            }
+            if(data_num==15){
+                z_int = (int)data[data_count-1] + (int)data[data_count-2]*10 + (int)data[data_count-3]*100 - offset*111;
+                if(data[data_count-4]!='0') z_int *= -1;
+                cadence = (double)z_int/6; //角度補正前ふつうに
+            }
+            data_count++; 
+        }//else
+            
+    } //readable
+}
+
 void SdInit(){
     mkdir("/sd/mydir", 0777);
     fp = fopen("/sd/mydir/sdtest2.csv", "w");
@@ -171,7 +205,7 @@
     led2 = !led2;
     //pc.printf("received\n\r");
     for(int i = 0; i < SOUDA_DATAS_NUM; i++){
-        soudaDatas[i] = soudaSerial.getc();
+        if(soudaSerial.readable()) soudaDatas[i] = (char)soudaSerial.getc();
     }
 }
 
@@ -276,7 +310,9 @@
 int main(){
     init();
     while(1){
-        pc.printf("test\n\r");
+//        pc.printf("test\n\r");
+//        if(test.readable()) pc.printf("%d   ",test.getc());
+//        pc.printf("<-softserial\n\r");
         mpuProcessing();
         RollAlarm();
         DataReceiveFromSouda();