2018年度計器mbed用プログラム
Dependencies: BufferedSoftSerial2 INA226_ver1 mbed-rtos mbed SDFileSystem-RTOS
Fork of keiki2017 by
Diff: main.cpp
- Branch:
- fusokukei
- Revision:
- 15:6966299bea4c
- Parent:
- 13:09e05e7cfca1
- Child:
- 16:22aae833bdae
- Child:
- 19: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(); }