今までのジョイスティックの入力を段階分けしていた方式から、アナログ値をできる限りそのまま使用する方式に変更しました。
Fork of ControlMain2017 by
Diff: main.cpp
- Revision:
- 7:59ddbe239835
- Parent:
- 6:7484315ba88a
- Child:
- 8:dbc8c87dac78
--- a/main.cpp Fri Mar 18 06:16:21 2016 +0000 +++ b/main.cpp Fri Nov 25 09:42:13 2016 +0000 @@ -1,27 +1,28 @@ //中央can program #include "mbed.h" +#include "BufferedSoftSerial.h" #define WAIT_LOOP_TIME 0.1 #define YOKUTAN_DATAS_NUM 4 #define IMPUT_DATAS_NUM 2 #define SEND_DATAS_CAN_ID 100 -#define SEND_DATAS_TIME 0.1 -#define THRESHOLD_OH_VALUE 0.14 -#define CALC_CADENCE_TIME 0.05 +#define SEND_DATAS_TIME 0.15 //0.1 +#define READ_INPUT_TIME 0.2 CAN can_R(p30,p29); CAN can_L(p9,p10); +Serial pc(USBTX,USBRX); +//BufferedSoftSerial toKeikiSerial(p26,p25); Serial toKeikiSerial(p13,p14); -Serial pc(USBTX,USBRX); 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 cadenceTicker; -Timer cadenceTimer; +//Ticker sendDatasTicker; +Ticker inputControlValuesTicker; +//Ticker testSSTicker; AnalogIn p(p15); AnalogIn q(p16); @@ -75,38 +76,32 @@ can_L.write(CANMessage(SEND_DATAS_CAN_ID, inputDatas_L, IMPUT_DATAS_NUM)); for(int i = 0; i < YOKUTAN_DATAS_NUM; 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(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); pc.printf("test\n\r"); } - -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 testSS(){ +// test.putc(50); +// wait_ms(10); +//} + void init(){ - cadenceTimer.start(); - cadenceTicker.attach(calcCadence, CALC_CADENCE_TIME); - sendDatasTicker.attach(SendDatas,SEND_DATAS_TIME); + toKeikiSerial.baud(9600); +// sendDatasTicker.attach(SendDatas,SEND_DATAS_TIME); + inputControlValuesTicker.attach(InputControlValues,READ_INPUT_TIME); for(int i = 0; i < IMPUT_DATAS_NUM; i++){ inputDatas_R[i] = 0; inputDatas_L[i] = 0; @@ -132,11 +127,16 @@ int main(){ init(); while(1){ - InputControlValues(); +// for(int i=0; i<IMPUT_DATAS_NUM; i++){ +// test.putc(inputDatas_R[i]); +// wait(0.1); +// } wait_us(10); receiveDatas(); + SendDatas(); //toString_R(); // toString_L(); + wait(WAIT_LOOP_TIME); } } \ No newline at end of file