今までのジョイスティックの入力を段階分けしていた方式から、アナログ値をできる限りそのまま使用する方式に変更しました。

Dependencies:   mbed-rtos mbed

Fork of ControlMain2017 by albatross

Committer:
tsumagari
Date:
Fri Nov 25 09:42:13 2016 +0000
Revision:
7:59ddbe239835
Parent:
6:7484315ba88a
Child:
8:dbc8c87dac78
aaa

Who changed what in which revision?

UserRevisionLine numberNew contents of line
YusukeWakuta 0:b1290ca6c4a2 1 //中央can program
YusukeWakuta 0:b1290ca6c4a2 2
YusukeWakuta 0:b1290ca6c4a2 3 #include "mbed.h"
tsumagari 7:59ddbe239835 4 #include "BufferedSoftSerial.h"
taurin 4:4a13dd263a7b 5 #define WAIT_LOOP_TIME 0.1
taurin 4:4a13dd263a7b 6 #define YOKUTAN_DATAS_NUM 4
YusukeWakuta 0:b1290ca6c4a2 7 #define IMPUT_DATAS_NUM 2
YusukeWakuta 0:b1290ca6c4a2 8 #define SEND_DATAS_CAN_ID 100
tsumagari 7:59ddbe239835 9 #define SEND_DATAS_TIME 0.15 //0.1
tsumagari 7:59ddbe239835 10 #define READ_INPUT_TIME 0.2
YusukeWakuta 0:b1290ca6c4a2 11
taurin 6:7484315ba88a 12 CAN can_R(p30,p29);
taurin 6:7484315ba88a 13 CAN can_L(p9,p10);
tsumagari 7:59ddbe239835 14 Serial pc(USBTX,USBRX);
tsumagari 7:59ddbe239835 15 //BufferedSoftSerial toKeikiSerial(p26,p25);
taurin 4:4a13dd263a7b 16 Serial toKeikiSerial(p13,p14);
taurin 6:7484315ba88a 17 DigitalIn eruron_R(p22);
taurin 6:7484315ba88a 18 DigitalIn eruron_L(p20);
taurin 6:7484315ba88a 19 DigitalIn drug_R(p23);
taurin 6:7484315ba88a 20 DigitalIn drug_L(p19);
YusukeWakuta 0:b1290ca6c4a2 21 DigitalOut myled1(LED1);
YusukeWakuta 0:b1290ca6c4a2 22 DigitalOut myled2(LED2);
tsumagari 7:59ddbe239835 23 //Ticker sendDatasTicker;
tsumagari 7:59ddbe239835 24 Ticker inputControlValuesTicker;
tsumagari 7:59ddbe239835 25 //Ticker testSSTicker;
taurin 4:4a13dd263a7b 26 AnalogIn p(p15);
taurin 4:4a13dd263a7b 27 AnalogIn q(p16);
YusukeWakuta 0:b1290ca6c4a2 28
taurin 4:4a13dd263a7b 29 char yokutanDatas_R[YOKUTAN_DATAS_NUM];
taurin 4:4a13dd263a7b 30 char yokutanDatas_L[YOKUTAN_DATAS_NUM];
YusukeWakuta 0:b1290ca6c4a2 31 char inputDatas_R[IMPUT_DATAS_NUM];
YusukeWakuta 0:b1290ca6c4a2 32 char inputDatas_L[IMPUT_DATAS_NUM];
taurin 4:4a13dd263a7b 33 char cadence = 0;
taurin 4:4a13dd263a7b 34 bool stateP = true;
taurin 4:4a13dd263a7b 35 bool stateQ = true;
taurin 4:4a13dd263a7b 36 bool stateP_old = true;
taurin 4:4a13dd263a7b 37 bool stateQ_old = true;
YusukeWakuta 0:b1290ca6c4a2 38
YusukeWakuta 3:0e66ce2ab2fb 39 CANMessage recmsg_R;
YusukeWakuta 3:0e66ce2ab2fb 40 CANMessage recmsg_L;
YusukeWakuta 0:b1290ca6c4a2 41
taurin 4:4a13dd263a7b 42 void InputControlValues(){
taurin 4:4a13dd263a7b 43 inputDatas_R[1] = (char)drug_R;
taurin 4:4a13dd263a7b 44 inputDatas_L[1] = (char)drug_L;
taurin 4:4a13dd263a7b 45 if(eruron_R){
taurin 4:4a13dd263a7b 46 inputDatas_R[0] = 0;
taurin 4:4a13dd263a7b 47 inputDatas_L[0] = 2;
taurin 4:4a13dd263a7b 48 }
taurin 4:4a13dd263a7b 49 else if(eruron_L){
taurin 4:4a13dd263a7b 50 inputDatas_R[0] = 2;
taurin 4:4a13dd263a7b 51 inputDatas_L[0] = 0;
taurin 4:4a13dd263a7b 52 }
taurin 4:4a13dd263a7b 53 else{
taurin 4:4a13dd263a7b 54 inputDatas_R[0] = 1;
taurin 4:4a13dd263a7b 55 inputDatas_L[0] = 1;
taurin 4:4a13dd263a7b 56 }
YusukeWakuta 0:b1290ca6c4a2 57 }
YusukeWakuta 0:b1290ca6c4a2 58
taurin 4:4a13dd263a7b 59 void toString_R(){
taurin 4:4a13dd263a7b 60 pc.printf("R:");
taurin 4:4a13dd263a7b 61 for(int i = 0; i < IMPUT_DATAS_NUM; i++){
taurin 4:4a13dd263a7b 62 pc.printf("%d:%i ",i,inputDatas_R[i]);
taurin 4:4a13dd263a7b 63 }
YusukeWakuta 0:b1290ca6c4a2 64 }
YusukeWakuta 0:b1290ca6c4a2 65
taurin 4:4a13dd263a7b 66 void toString_L(){
taurin 4:4a13dd263a7b 67 pc.printf("L:");
taurin 4:4a13dd263a7b 68 for(int i = 0; i < IMPUT_DATAS_NUM; i++){
taurin 4:4a13dd263a7b 69 pc.printf("%d:%i ",i,inputDatas_L[i]);
taurin 4:4a13dd263a7b 70 }
taurin 4:4a13dd263a7b 71 pc.printf("\n\r");
YusukeWakuta 0:b1290ca6c4a2 72 }
YusukeWakuta 0:b1290ca6c4a2 73
taurin 4:4a13dd263a7b 74 void SendDatas(){
taurin 4:4a13dd263a7b 75 can_R.write(CANMessage(SEND_DATAS_CAN_ID, inputDatas_R, IMPUT_DATAS_NUM));
taurin 4:4a13dd263a7b 76 can_L.write(CANMessage(SEND_DATAS_CAN_ID, inputDatas_L, IMPUT_DATAS_NUM));
YusukeWakuta 0:b1290ca6c4a2 77 for(int i = 0; i < YOKUTAN_DATAS_NUM; i++){
YusukeWakuta 0:b1290ca6c4a2 78 toKeikiSerial.putc(yokutanDatas_R[i]);
tsumagari 7:59ddbe239835 79 wait_ms(10);
YusukeWakuta 0:b1290ca6c4a2 80 toKeikiSerial.putc(yokutanDatas_L[i]);
tsumagari 7:59ddbe239835 81 wait_ms(10);
YusukeWakuta 0:b1290ca6c4a2 82 }
taurin 4:4a13dd263a7b 83 for(int i = 0; i < IMPUT_DATAS_NUM; i++){
taurin 4:4a13dd263a7b 84 toKeikiSerial.putc(inputDatas_R[i]);
tsumagari 7:59ddbe239835 85 wait_ms(10);
tsumagari 7:59ddbe239835 86 pc.printf("%d\n\r",inputDatas_R[i]);//%cで出力すると見えない系の文字が出る
taurin 4:4a13dd263a7b 87 toKeikiSerial.putc(inputDatas_L[i]);
tsumagari 7:59ddbe239835 88 wait_ms(10);
tsumagari 7:59ddbe239835 89 pc.printf("%d\n\r",inputDatas_L[i]);
taurin 4:4a13dd263a7b 90 }
taurin 4:4a13dd263a7b 91 toKeikiSerial.putc(cadence);
tsumagari 7:59ddbe239835 92 wait_ms(10);
taurin 4:4a13dd263a7b 93 pc.printf("test\n\r");
YusukeWakuta 0:b1290ca6c4a2 94 }
tsumagari 7:59ddbe239835 95 //void testSS(){
tsumagari 7:59ddbe239835 96 // test.putc(50);
tsumagari 7:59ddbe239835 97 // wait_ms(10);
tsumagari 7:59ddbe239835 98 //}
tsumagari 7:59ddbe239835 99
YusukeWakuta 0:b1290ca6c4a2 100
YusukeWakuta 0:b1290ca6c4a2 101 void init(){
tsumagari 7:59ddbe239835 102 toKeikiSerial.baud(9600);
tsumagari 7:59ddbe239835 103 // sendDatasTicker.attach(SendDatas,SEND_DATAS_TIME);
tsumagari 7:59ddbe239835 104 inputControlValuesTicker.attach(InputControlValues,READ_INPUT_TIME);
taurin 2:9dc7d5f1e910 105 for(int i = 0; i < IMPUT_DATAS_NUM; i++){
taurin 2:9dc7d5f1e910 106 inputDatas_R[i] = 0;
taurin 2:9dc7d5f1e910 107 inputDatas_L[i] = 0;
taurin 2:9dc7d5f1e910 108 }
YusukeWakuta 0:b1290ca6c4a2 109 }
YusukeWakuta 0:b1290ca6c4a2 110
YusukeWakuta 0:b1290ca6c4a2 111
YusukeWakuta 0:b1290ca6c4a2 112 void receiveDatas(){
YusukeWakuta 0:b1290ca6c4a2 113 if(can_R.read(recmsg_R)){
YusukeWakuta 0:b1290ca6c4a2 114 for(int i = 0; i < recmsg_R.len; i++){
YusukeWakuta 0:b1290ca6c4a2 115 yokutanDatas_R[i] = recmsg_R.data[i];
YusukeWakuta 0:b1290ca6c4a2 116 }
taurin 4:4a13dd263a7b 117 myled1 = !myled1;
YusukeWakuta 0:b1290ca6c4a2 118 }
YusukeWakuta 0:b1290ca6c4a2 119 if(can_L.read(recmsg_L)){
YusukeWakuta 0:b1290ca6c4a2 120 for(int i = 0; i < recmsg_L.len; i++){
YusukeWakuta 0:b1290ca6c4a2 121 yokutanDatas_L[i] = recmsg_L.data[i];
YusukeWakuta 0:b1290ca6c4a2 122 }
taurin 4:4a13dd263a7b 123 myled2 = !myled2;
YusukeWakuta 0:b1290ca6c4a2 124 }
YusukeWakuta 0:b1290ca6c4a2 125 }
YusukeWakuta 0:b1290ca6c4a2 126
YusukeWakuta 0:b1290ca6c4a2 127 int main(){
YusukeWakuta 0:b1290ca6c4a2 128 init();
YusukeWakuta 0:b1290ca6c4a2 129 while(1){
tsumagari 7:59ddbe239835 130 // for(int i=0; i<IMPUT_DATAS_NUM; i++){
tsumagari 7:59ddbe239835 131 // test.putc(inputDatas_R[i]);
tsumagari 7:59ddbe239835 132 // wait(0.1);
tsumagari 7:59ddbe239835 133 // }
YusukeWakuta 0:b1290ca6c4a2 134 wait_us(10);
YusukeWakuta 0:b1290ca6c4a2 135 receiveDatas();
tsumagari 7:59ddbe239835 136 SendDatas();
taurin 4:4a13dd263a7b 137 //toString_R();
taurin 4:4a13dd263a7b 138 // toString_L();
tsumagari 7:59ddbe239835 139
YusukeWakuta 0:b1290ca6c4a2 140 wait(WAIT_LOOP_TIME);
YusukeWakuta 0:b1290ca6c4a2 141 }
YusukeWakuta 0:b1290ca6c4a2 142 }