![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
今までのジョイスティックの入力を段階分けしていた方式から、アナログ値をできる限りそのまま使用する方式に変更しました。
Fork of ControlMain2017 by
Diff: main.cpp
- Branch:
- test
- Revision:
- 8:dbc8c87dac78
- Parent:
- 7:59ddbe239835
- Child:
- 9:c32999b4d2f9
diff -r 59ddbe239835 -r dbc8c87dac78 main.cpp --- a/main.cpp Fri Nov 25 09:42:13 2016 +0000 +++ b/main.cpp Sat Nov 26 01:17:08 2016 +0000 @@ -6,23 +6,24 @@ #define YOKUTAN_DATAS_NUM 4 #define IMPUT_DATAS_NUM 2 #define SEND_DATAS_CAN_ID 100 -#define SEND_DATAS_TIME 0.15 //0.1 -#define READ_INPUT_TIME 0.2 +#define SEND_DATAS_TIME 0.5 +#define THRESHOLD_OH_VALUE 0.14 +#define CALC_CADENCE_TIME 0.05 CAN can_R(p30,p29); CAN can_L(p9,p10); +//Serial toKeikiSerial(p13,p14); +BufferedSoftSerial toKeikiSerial(p17,p18); Serial pc(USBTX,USBRX); -//BufferedSoftSerial toKeikiSerial(p26,p25); -Serial toKeikiSerial(p13,p14); DigitalIn eruron_R(p22); DigitalIn eruron_L(p20); DigitalIn drug_R(p23); DigitalIn drug_L(p19); DigitalOut myled1(LED1); DigitalOut myled2(LED2); -//Ticker sendDatasTicker; -Ticker inputControlValuesTicker; -//Ticker testSSTicker; +Ticker sendDatasTicker; +Ticker cadenceTicker; +Timer cadenceTimer; AnalogIn p(p15); AnalogIn q(p16); @@ -74,34 +75,45 @@ void SendDatas(){ can_R.write(CANMessage(SEND_DATAS_CAN_ID, inputDatas_R, IMPUT_DATAS_NUM)); can_L.write(CANMessage(SEND_DATAS_CAN_ID, inputDatas_L, IMPUT_DATAS_NUM)); + toKeikiSerial.putc(';'); for(int i = 0; i < YOKUTAN_DATAS_NUM; i++){ +// toKeikiSerial.putc(i); +// toKeikiSerial.putc(10+i); toKeikiSerial.putc(yokutanDatas_R[i]); - wait_ms(10); toKeikiSerial.putc(yokutanDatas_L[i]); - wait_ms(10); } for(int i = 0; i < IMPUT_DATAS_NUM; i++){ +// toKeikiSerial.putc(4+i); +// toKeikiSerial.putc(14+i); toKeikiSerial.putc(inputDatas_R[i]); - wait_ms(10); - pc.printf("%d\n\r",inputDatas_R[i]);//%cで出力すると見えない系の文字が出る toKeikiSerial.putc(inputDatas_L[i]); - wait_ms(10); - pc.printf("%d\n\r",inputDatas_L[i]); } - toKeikiSerial.putc(cadence); - wait_ms(10); +// toKeikiSerial.putc(cadence); pc.printf("test\n\r"); } -//void testSS(){ -// test.putc(50); -// wait_ms(10); -//} - + +void calcCadence(){ + //pc.printf("%f,%f\n\r",p.read(),q.read()); + if(p.read() > THRESHOLD_OH_VALUE) stateP = true; + else stateP = false; + if(q.read() > THRESHOLD_OH_VALUE) stateQ = true; + else stateQ = false; + if((stateP == true && stateP_old == false) || + stateQ == true && stateQ_old == false){ + cadenceTimer.stop(); + cadence = (char)30.0/cadenceTimer.read(); + pc.printf("Cadence:%i\n\r",cadence); + cadenceTimer.reset(); + cadenceTimer.start(); + } + stateP_old = stateP; + stateQ_old = stateQ; +} void init(){ - toKeikiSerial.baud(9600); -// sendDatasTicker.attach(SendDatas,SEND_DATAS_TIME); - inputControlValuesTicker.attach(InputControlValues,READ_INPUT_TIME); + cadenceTimer.start(); + cadenceTicker.attach(calcCadence, CALC_CADENCE_TIME); + sendDatasTicker.attach(SendDatas,SEND_DATAS_TIME); for(int i = 0; i < IMPUT_DATAS_NUM; i++){ inputDatas_R[i] = 0; inputDatas_L[i] = 0; @@ -127,16 +139,11 @@ int main(){ init(); while(1){ -// for(int i=0; i<IMPUT_DATAS_NUM; i++){ -// test.putc(inputDatas_R[i]); -// wait(0.1); -// } + InputControlValues(); wait_us(10); receiveDatas(); - SendDatas(); //toString_R(); // toString_L(); - wait(WAIT_LOOP_TIME); } } \ No newline at end of file