2018年度計器mbed用プログラム
Dependencies: BufferedSoftSerial2 INA226_ver1 mbed-rtos mbed SDFileSystem-RTOS
Fork of keiki2017 by
Diff: main.cpp
- 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();