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

Dependencies:   BufferedSoftSerial2 SDFileSystem-RTOS mbed mbed-rtos INA226_ver1

Fork of keiki2016ver5 by albatross

Branch:
fusokukei
Revision:
15:6966299bea4c
Parent:
13:09e05e7cfca1
Child:
16:22aae833bdae
Child:
18:fa3f9ba17af8
--- a/main.cpp	Sat Nov 19 11:00:31 2016 +0000
+++ b/main.cpp	Sat Nov 26 01:12:10 2016 +0000
@@ -3,10 +3,12 @@
 #include "Fusokukei.h"
 #include "MPU6050.h"
 #include "SDFileSystem.h"
+#include "BufferedSoftSerial.h"
+#include "Cadence.h"
 
 #define KX_VALUE_MIN 0.4
 #define KX_VALUE_MAX 0.8
-#define SOUDA_DATAS_NUM 13
+#define SOUDA_DATAS_NUM 12
 #define WRITE_DATAS_NUM 20
 #define MPU_LOOP_TIME 0.01
 #define AIR_LOOP_TIME 0.01
@@ -17,10 +19,14 @@
 #define SD_WRITE_NUM 10
 #define INIT_SERVO_PERIOD_MS 20
 
+//Cadence cadence(p13,p14);
+//Ticker cadenceTicker;
+
 Serial pc(USBTX,USBRX);
-Serial soudaSerial(p13,p14);
-Serial twe(p9,p10);
-Ticker writeDatasTicker;
+BufferedSoftSerial twe(p9,p10);
+//Serial soudaSerial(p13,p14);
+BufferedSoftSerial soudaSerial(p17,p18);
+//Ticker writeDatasTicker;
 Timer writeTimer;
 
 InterruptIn FusokukeiPin(p21);
@@ -47,25 +53,32 @@
 SDFileSystem sd(p5, p6, p7, p8, "sd");
 FILE* fp;
 
-PwmOut kisokuServo(p22);
-PwmOut geikakuServo(p26);
+PwmOut kisokuServo(p26);
+PwmOut geikakuServo(p22);
 
 char soudaDatas[SOUDA_DATAS_NUM];
 float writeDatas[SD_WRITE_NUM][WRITE_DATAS_NUM];
 volatile int write_datas_index = 0;
 
+void cadenceDataReceive();
 void air_countUp();
 void call_calcAirSpeed();
 void init();
 void FusokukeiInit();
 void MpuInit();
 void mpuProcessing();
+//void cadenceRead();
+//void cadenceInit();
 void SdInit();
 void DataReceiveFromSouda();
 void WriteDatas();
 float calcAttackAngle();
 float calcKXdeg(float x);
 
+void cadenceDataReceive(){
+//    cadence.readData();
+}
+
 void air_countUp(){
     air_kaitensu++;
 }
@@ -76,7 +89,9 @@
 }
 
 void init(){
-    twe.baud(115200);
+    twe.baud(19200);
+    soudaSerial.baud(9600);
+//    cadenceTicker.attach(&cadenceDataReceive,0.1);
     //writeTimer.start();
     kisokuServo.period_ms(INIT_SERVO_PERIOD_MS);
     geikakuServo.period_ms(INIT_SERVO_PERIOD_MS);
@@ -84,7 +99,7 @@
     MpuInit(); 
     SdInit();
     //writeDatasTicker.attach(&WriteDatas,1);
-    //soudaSerial.attach(&DataReceiveFromSouda, Serial::RxIrq);
+//    soudaSerial.attach(&DataReceiveFromSouda, Serial::RxIrq);
 }
 
 void FusokukeiInit(){
@@ -157,6 +172,7 @@
     }
 }
 
+
 void SdInit(){
     mkdir("/sd/mydir", 0777);
     fp = fopen("/sd/mydir/sdtest2.csv", "w");
@@ -170,9 +186,16 @@
 void DataReceiveFromSouda(){
     led2 = !led2;
     //pc.printf("received\n\r");
+//    bool kaigyo=0;
     for(int i = 0; i < SOUDA_DATAS_NUM; i++){
-        if(soudaSerial.readable()) soudaDatas[i] = soudaSerial.getc();
+        if(soudaSerial.readable()) {
+            soudaDatas[i] = (char)soudaSerial.getc();
+            if(soudaDatas[i]==';') i=-1;
+//            else pc.printf("%5d:%3d",i,soudaDatas[i]);
+//            kaigyo =1;
+        }else i--;
     }
+//    if(kaigyo) pc.printf("\n\r");
 }
 
 void SDprintf(){
@@ -195,6 +218,7 @@
         //writeDatas[write_datas_index][i] = 0.0;    
         writeDatas[write_datas_index][i] = (float)soudaDatas[i];
     }
+//    writeDatas[write_datas_index][i++] = cadence.cadence;
     writeDatas[write_datas_index][i++] = calcKXdeg(kx_X.read());
     writeDatas[write_datas_index][i++] = calcKXdeg(kx_Y.read());
     writeDatas[write_datas_index][i++] = calcKXdeg(kx_Z.read());
@@ -220,6 +244,8 @@
         pc.printf("%i   ",soudaDatas[i]);
         twe.printf("%i,",soudaDatas[i]);
     }
+//    twe.printf("%f\n\r",cadence.cadence);
+//    pc.printf("%f\n\r",cadence.cadence);
     //pc.printf("\n\r");
     twe.printf("%f,%f,%f,",pitch,roll,yaw);
     twe.printf("%f,%f,%f,",calcKXdeg(kx_X.read()),calcKXdeg(KX_Y),calcKXdeg(KX_Z));   
@@ -277,9 +303,12 @@
     init();
     while(1){
         pc.printf("test\n\r");
+//        if(test.readable()) pc.printf("%d   ",test.getc());
+//        pc.printf("<-softserial\n\r");
         mpuProcessing();
         RollAlarm();
         DataReceiveFromSouda();
+//        cadence.readData();
         WriteDatas();
         WriteServo();
     }