![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
今までのジョイスティックの入力を段階分けしていた方式から、アナログ値をできる限りそのまま使用する方式に変更しました。
Fork of ControlMain2017 by
Diff: main.cpp
- Revision:
- 0:b1290ca6c4a2
- Child:
- 1:65a3a2a4f535
diff -r 000000000000 -r b1290ca6c4a2 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sat Feb 13 07:17:50 2016 +0000 @@ -0,0 +1,114 @@ +//中央can program + +#include "mbed.h" +#define WAIT_LOOP_TIME 0.1 +#define YOKUTAN_DATAS_NUM 5 +#define IMPUT_DATAS_NUM 2 +#define SEND_DATAS_CAN_ID 100 + +CAN can_R(p9,p10); +CAN can_L(p30,p29); +Serial toKeikiSerial(p28,p27); +Serial pc(USBTX,USBRX); +DigitalIn eruron_R(p7); +DigitalIn eruron_L(p7); +DigitalIn drug_R(p8); +DigitalIn drug_L(p8); +DigitalOut myled1(LED1); +DigitalOut myled2(LED2); + +signed char yokutanDatas_R[YOKUTAN_DATAS_NUM]; +signed char yokutanDatas_L[YOKUTAN_DATAS_NUM]; +char inputDatas_R[IMPUT_DATAS_NUM]; +char inputDatas_L[IMPUT_DATAS_NUM]; + +CANMessage recmsg_R(SEND_DATAS_CAN_ID, inputDatas_R, IMPUT_DATAS_NUM); +CANMessage recmsg_L(SEND_DATAS_CAN_ID, inputDatas_R, IMPUT_DATAS_NUM); + +void InputAndSentControlValues_R(){ + inputDatas_R[0] = eruron_R; + inputDatas_R[1] = drug_R; + for(int i = 0; i < IMPUT_DATAS_NUM; i++){ + if(can_R.write(recmsg_R)){ + pc.printf("Right successed!\n\r"); + } + } +} + +void ledcheck_R() { + myled1 = 1; + wait(0.2); + myled1 = 0; + wait(0.2); +} + +void ledcheck_L() { + myled2 = 1; + wait(0.2); + myled2 = 0; + wait(0.2); +} + +void InputAndSentControlValues_L(){ + inputDatas_L[0] = eruron_L; + inputDatas_L[1] = drug_L; + for(int i = 0; i < IMPUT_DATAS_NUM; i++){ + if(can_L.write(recmsg_L)){ + pc.printf("Left successed!\n\r"); + } + } +} + +void SendDarasToKeiki(){ + for(int i = 0; i < YOKUTAN_DATAS_NUM; i++){ + toKeikiSerial.putc(yokutanDatas_R[i]); + toKeikiSerial.putc(yokutanDatas_L[i]); + } +} + +void toString_R(){ + for(int i = 0; i < YOKUTAN_DATAS_NUM; i++){ + pc.printf("R : %i:",yokutanDatas_R[i]); + } + pc.printf("\t"); +} + +void toString_L(){ + for(int i = 0; i < YOKUTAN_DATAS_NUM; i++){ + pc.printf("L : %i:",yokutanDatas_L[i]); + } + pc.printf("\n\r"); +} + +void init(){ +} + + +void receiveDatas(){ + if(can_R.read(recmsg_R)){ + ledcheck_R(); + for(int i = 0; i < recmsg_R.len; i++){ + yokutanDatas_R[i] = recmsg_R.data[i]; + } + } + if(can_L.read(recmsg_L)){ + ledcheck_L(); + for(int i = 0; i < recmsg_L.len; i++){ + yokutanDatas_L[i] = recmsg_L.data[i]; + } + } +} + + +int main(){ + init(); + while(1){ + InputAndSentControlValues_R(); + InputAndSentControlValues_L(); + wait_us(10); + receiveDatas(); + toString_R(); + toString_L(); + wait(WAIT_LOOP_TIME); + } +} \ No newline at end of file