Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of Control_Main_Full_20160608 by
main.cpp@26:745735b0479d, 2017-03-21 (annotated)
- Committer:
- YusukeWakuta
- Date:
- Tue Mar 21 10:34:08 2017 +0000
- Revision:
- 26:745735b0479d
- Parent:
- 25:12408563540d
- Child:
- 27:1af92a603532
R?????????????????
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| YusukeWakuta | 13:79eb74eb86c4 | 1 | //中央 |
| YusukeWakuta | 0:b1290ca6c4a2 | 2 | |
| YusukeWakuta | 0:b1290ca6c4a2 | 3 | #include "mbed.h" |
| tsumagari | 10:b7159feb11fd | 4 | #define WAIT_LOOP_TIME 0.001 |
| tsumagari | 9:c32999b4d2f9 | 5 | #define YOKUTAN_DATAS_NUM 7 |
| tsumagari | 10:b7159feb11fd | 6 | #define INPUT_DATAS_NUM 5 |
| YusukeWakuta | 0:b1290ca6c4a2 | 7 | #define SEND_DATAS_CAN_ID 100 |
| tsumagari | 8:dbc8c87dac78 | 8 | #define SEND_DATAS_TIME 0.5 |
| tsumagari | 8:dbc8c87dac78 | 9 | #define THRESHOLD_OH_VALUE 0.14 |
| YusukeWakuta | 16:336e8b102555 | 10 | #define SUM_UP_NUM 20 |
| YusukeWakuta | 15:c5ade23e5de4 | 11 | #define SAMPLE_INTERVAL 0.05 |
| YusukeWakuta | 0:b1290ca6c4a2 | 12 | |
| YusukeWakuta | 20:d4951f491642 | 13 | #define PHASE_NUM 6 //偶数にしてください |
| YusukeWakuta | 24:72f9cb6e9440 | 14 | #define SUM_UP_NUM 10.0 |
| YusukeWakuta | 19:6387e3f02b37 | 15 | /* |
| YusukeWakuta | 19:6387e3f02b37 | 16 | roll入力とピッチ入力だとピッチの方が1.5倍効くように |
| YusukeWakuta | 19:6387e3f02b37 | 17 | */ |
| YusukeWakuta | 18:31722545ecf1 | 18 | |
| tsumagari | 9:c32999b4d2f9 | 19 | //-----------------------------------(resetInterrupt def) |
| tsumagari | 9:c32999b4d2f9 | 20 | extern "C" void mbed_reset(); |
| YusukeWakuta | 13:79eb74eb86c4 | 21 | InterruptIn resetPin(p22); |
| tsumagari | 9:c32999b4d2f9 | 22 | Timer resetTimeCount; |
| YusukeWakuta | 15:c5ade23e5de4 | 23 | void resetInterrupt() |
| YusukeWakuta | 15:c5ade23e5de4 | 24 | { |
| YusukeWakuta | 15:c5ade23e5de4 | 25 | while(resetPin) { |
| tsumagari | 9:c32999b4d2f9 | 26 | resetTimeCount.start(); |
| tsumagari | 9:c32999b4d2f9 | 27 | if(resetTimeCount.read()>3) mbed_reset(); |
| tsumagari | 9:c32999b4d2f9 | 28 | } |
| tsumagari | 9:c32999b4d2f9 | 29 | resetTimeCount.reset(); |
| tsumagari | 9:c32999b4d2f9 | 30 | } |
| tsumagari | 9:c32999b4d2f9 | 31 | //------------------------------------------------------- |
| tsumagari | 9:c32999b4d2f9 | 32 | |
| taurin | 6:7484315ba88a | 33 | CAN can_R(p30,p29); |
| taurin | 6:7484315ba88a | 34 | CAN can_L(p9,p10); |
| YusukeWakuta | 14:ffe9460922cb | 35 | Serial toKeikiSerial(p28,p27); |
| tsumagari | 7:59ddbe239835 | 36 | Serial pc(USBTX,USBRX); |
| tsumagari | 10:b7159feb11fd | 37 | AnalogIn rollPin(p15); |
| YusukeWakuta | 18:31722545ecf1 | 38 | AnalogIn pitchPin(p20); |
| YusukeWakuta | 13:79eb74eb86c4 | 39 | DigitalIn drug_R(p14); |
| taurin | 6:7484315ba88a | 40 | DigitalIn drug_L(p19); |
| YusukeWakuta | 25:12408563540d | 41 | DigitalOut led1(LED1); |
| YusukeWakuta | 25:12408563540d | 42 | DigitalOut led2(LED2); |
| YusukeWakuta | 15:c5ade23e5de4 | 43 | DigitalOut led4(LED4); |
| YusukeWakuta | 15:c5ade23e5de4 | 44 | DigitalOut led3(LED3); |
| tsumagari | 9:c32999b4d2f9 | 45 | //Ticker sendDatasTicker; |
| YusukeWakuta | 0:b1290ca6c4a2 | 46 | |
| taurin | 4:4a13dd263a7b | 47 | char yokutanDatas_R[YOKUTAN_DATAS_NUM]; |
| taurin | 4:4a13dd263a7b | 48 | char yokutanDatas_L[YOKUTAN_DATAS_NUM]; |
| tsumagari | 10:b7159feb11fd | 49 | char inputDatas_R[INPUT_DATAS_NUM]; |
| tsumagari | 10:b7159feb11fd | 50 | char inputDatas_L[INPUT_DATAS_NUM]; |
| YusukeWakuta | 24:72f9cb6e9440 | 51 | |
| YusukeWakuta | 25:12408563540d | 52 | float rollNeutral = 0.739; |
| YusukeWakuta | 25:12408563540d | 53 | float rollUpperDiff = 0; |
| YusukeWakuta | 25:12408563540d | 54 | float rollLowerDiff = 0; |
| YusukeWakuta | 24:72f9cb6e9440 | 55 | |
| YusukeWakuta | 25:12408563540d | 56 | float pitchNeutral = 0.468 ;//1って書いた方 |
| YusukeWakuta | 25:12408563540d | 57 | float pitchUpperDiff = 0; |
| YusukeWakuta | 25:12408563540d | 58 | float pitchLowerDiff = 0; |
| YusukeWakuta | 24:72f9cb6e9440 | 59 | float neutralDiff; |
| YusukeWakuta | 0:b1290ca6c4a2 | 60 | |
| YusukeWakuta | 3:0e66ce2ab2fb | 61 | CANMessage recmsg_R; |
| YusukeWakuta | 3:0e66ce2ab2fb | 62 | CANMessage recmsg_L; |
| YusukeWakuta | 0:b1290ca6c4a2 | 63 | |
| YusukeWakuta | 25:12408563540d | 64 | enum InputType { |
| YusukeWakuta | 26:745735b0479d | 65 | enumRoll, |
| YusukeWakuta | 26:745735b0479d | 66 | enumPitch |
| YusukeWakuta | 25:12408563540d | 67 | }; |
| YusukeWakuta | 25:12408563540d | 68 | |
| YusukeWakuta | 24:72f9cb6e9440 | 69 | void setNeutral() |
| YusukeWakuta | 24:72f9cb6e9440 | 70 | { |
| YusukeWakuta | 24:72f9cb6e9440 | 71 | float rollSum; |
| YusukeWakuta | 24:72f9cb6e9440 | 72 | float pitchSum; |
| YusukeWakuta | 25:12408563540d | 73 | |
| YusukeWakuta | 24:72f9cb6e9440 | 74 | for(int i = 0; i < SUM_UP_NUM; i++) { |
| YusukeWakuta | 24:72f9cb6e9440 | 75 | rollSum += rollPin.read(); |
| YusukeWakuta | 24:72f9cb6e9440 | 76 | pitchSum += pitchPin.read(); |
| YusukeWakuta | 24:72f9cb6e9440 | 77 | } |
| YusukeWakuta | 25:12408563540d | 78 | rollNeutral = rollSum / SUM_UP_NUM; |
| YusukeWakuta | 25:12408563540d | 79 | pitchNeutral = pitchSum / SUM_UP_NUM; |
| YusukeWakuta | 26:745735b0479d | 80 | |
| YusukeWakuta | 26:745735b0479d | 81 | neutralDiff = pitchNeutral - rollNeutral; //ピッチの初期値の方がい小さいと仮定 |
| YusukeWakuta | 26:745735b0479d | 82 | rollNeutral += neutralDiff; |
| YusukeWakuta | 25:12408563540d | 83 | } |
| YusukeWakuta | 25:12408563540d | 84 | |
| YusukeWakuta | 25:12408563540d | 85 | void setMaxAndMin(InputType it,float value) |
| YusukeWakuta | 25:12408563540d | 86 | { |
| YusukeWakuta | 26:745735b0479d | 87 | if(it == enumPitch) { |
| YusukeWakuta | 25:12408563540d | 88 | if(value >pitchNeutral + pitchUpperDiff) |
| YusukeWakuta | 25:12408563540d | 89 | pitchUpperDiff = value - pitchNeutral; |
| YusukeWakuta | 26:745735b0479d | 90 | else if(value < rollNeutral + pitchLowerDiff) |
| YusukeWakuta | 26:745735b0479d | 91 | pitchLowerDiff = value - pitchNeutral; |
| YusukeWakuta | 26:745735b0479d | 92 | led1 =!led1; |
| YusukeWakuta | 26:745735b0479d | 93 | return; |
| YusukeWakuta | 26:745735b0479d | 94 | } else if(it == enumRoll) { |
| YusukeWakuta | 25:12408563540d | 95 | if(value >rollNeutral + rollUpperDiff) |
| YusukeWakuta | 25:12408563540d | 96 | rollUpperDiff = value - rollNeutral; |
| YusukeWakuta | 26:745735b0479d | 97 | else if(value < rollNeutral + rollLowerDiff) |
| YusukeWakuta | 26:745735b0479d | 98 | rollLowerDiff = value -rollNeutral ; |
| YusukeWakuta | 26:745735b0479d | 99 | led2 =! led2; |
| YusukeWakuta | 26:745735b0479d | 100 | return; |
| YusukeWakuta | 25:12408563540d | 101 | } |
| YusukeWakuta | 24:72f9cb6e9440 | 102 | } |
| YusukeWakuta | 24:72f9cb6e9440 | 103 | |
| YusukeWakuta | 20:d4951f491642 | 104 | //ジョイスティックの中間値から上と下の幅を合わせます。値を取得するたびに呼び出してください。範囲は広い方に合わせる物とします |
| YusukeWakuta | 26:745735b0479d | 105 | float MatchUpperAndLower(InputType it, float max,float min,float neutral,float value) |
| YusukeWakuta | 18:31722545ecf1 | 106 | { |
| YusukeWakuta | 20:d4951f491642 | 107 | float Upper = max- neutral; |
| YusukeWakuta | 20:d4951f491642 | 108 | float Lower = neutral - min; |
| YusukeWakuta | 25:12408563540d | 109 | |
| YusukeWakuta | 26:745735b0479d | 110 | if(it == enumRoll) { |
| YusukeWakuta | 25:12408563540d | 111 | if(Upper > Lower) { |
| YusukeWakuta | 25:12408563540d | 112 | if(value < neutral) { |
| YusukeWakuta | 25:12408563540d | 113 | value = neutral - ((neutral - value) * (Upper / Lower)); |
| YusukeWakuta | 26:745735b0479d | 114 | // rollLowerDiff = (rollLowerDiff)* (Upper / Lower); //現状範囲値を変えれてないから、ここは要対応。0で割ってしまってnanが出るようになったからコメントアウトした。 |
| YusukeWakuta | 25:12408563540d | 115 | } |
| YusukeWakuta | 25:12408563540d | 116 | } else { |
| YusukeWakuta | 25:12408563540d | 117 | if(value > neutral) { |
| YusukeWakuta | 25:12408563540d | 118 | value = neutral + ((value - neutral) * (Lower / Upper)); |
| YusukeWakuta | 26:745735b0479d | 119 | // rollUpperDiff = rollUpperDiff* (Upper / Lower); |
| YusukeWakuta | 25:12408563540d | 120 | } |
| YusukeWakuta | 20:d4951f491642 | 121 | } |
| YusukeWakuta | 25:12408563540d | 122 | return value; |
| YusukeWakuta | 26:745735b0479d | 123 | } else if(it == enumPitch) { |
| YusukeWakuta | 25:12408563540d | 124 | if(Upper > Lower) { |
| YusukeWakuta | 25:12408563540d | 125 | if(value < neutral) { |
| YusukeWakuta | 25:12408563540d | 126 | value = neutral - ((neutral - value) * (Upper / Lower)); |
| YusukeWakuta | 26:745735b0479d | 127 | // pitchLowerDiff = (pitchLowerDiff)* (Upper / Lower); |
| YusukeWakuta | 25:12408563540d | 128 | } |
| YusukeWakuta | 25:12408563540d | 129 | } else { |
| YusukeWakuta | 25:12408563540d | 130 | if(value > neutral) { |
| YusukeWakuta | 25:12408563540d | 131 | value = neutral + ((value - neutral) * (Lower / Upper)); |
| YusukeWakuta | 26:745735b0479d | 132 | // pitchUpperDiff= (pitchUpperDiff)* (Upper / Lower); |
| YusukeWakuta | 25:12408563540d | 133 | } |
| YusukeWakuta | 20:d4951f491642 | 134 | } |
| YusukeWakuta | 25:12408563540d | 135 | return value; |
| YusukeWakuta | 20:d4951f491642 | 136 | } |
| YusukeWakuta | 18:31722545ecf1 | 137 | } |
| YusukeWakuta | 18:31722545ecf1 | 138 | |
| YusukeWakuta | 21:9b1f5123f4a8 | 139 | //範囲外に値がない場合にエラーが発生するので範囲内に収める |
| YusukeWakuta | 21:9b1f5123f4a8 | 140 | float Format2Range(float value,float max,float min) |
| YusukeWakuta | 18:31722545ecf1 | 141 | { |
| YusukeWakuta | 18:31722545ecf1 | 142 | float result; |
| YusukeWakuta | 21:9b1f5123f4a8 | 143 | |
| YusukeWakuta | 18:31722545ecf1 | 144 | if(value > max) |
| YusukeWakuta | 18:31722545ecf1 | 145 | result= max; |
| YusukeWakuta | 18:31722545ecf1 | 146 | else if(value < min) |
| YusukeWakuta | 18:31722545ecf1 | 147 | result = min; |
| YusukeWakuta | 21:9b1f5123f4a8 | 148 | else if(value > 1) |
| YusukeWakuta | 21:9b1f5123f4a8 | 149 | result = 1; |
| YusukeWakuta | 21:9b1f5123f4a8 | 150 | else if(value < 0) |
| YusukeWakuta | 21:9b1f5123f4a8 | 151 | result = 0; |
| YusukeWakuta | 18:31722545ecf1 | 152 | else |
| YusukeWakuta | 18:31722545ecf1 | 153 | result = value; |
| YusukeWakuta | 18:31722545ecf1 | 154 | return result; |
| YusukeWakuta | 18:31722545ecf1 | 155 | } |
| YusukeWakuta | 18:31722545ecf1 | 156 | |
| YusukeWakuta | 21:9b1f5123f4a8 | 157 | //値をint型の段階に分ける |
| YusukeWakuta | 18:31722545ecf1 | 158 | int PhaseFloat(float value,float max,float min) |
| YusukeWakuta | 18:31722545ecf1 | 159 | { |
| YusukeWakuta | 18:31722545ecf1 | 160 | float PhaseWidth = (max - min) / PHASE_NUM; |
| YusukeWakuta | 18:31722545ecf1 | 161 | if(value< max&& value > min) { |
| YusukeWakuta | 18:31722545ecf1 | 162 | for(int i = 1; i <= PHASE_NUM; i++) { |
| YusukeWakuta | 18:31722545ecf1 | 163 | if(value < min + PhaseWidth * i&& value > min + PhaseWidth * (i - 1) ) |
| YusukeWakuta | 18:31722545ecf1 | 164 | return i; |
| YusukeWakuta | 18:31722545ecf1 | 165 | } |
| YusukeWakuta | 18:31722545ecf1 | 166 | } else if(value <= min) |
| YusukeWakuta | 18:31722545ecf1 | 167 | return 0; |
| YusukeWakuta | 18:31722545ecf1 | 168 | else if(value>=max) |
| YusukeWakuta | 18:31722545ecf1 | 169 | return PHASE_NUM; |
| YusukeWakuta | 18:31722545ecf1 | 170 | } |
| YusukeWakuta | 18:31722545ecf1 | 171 | |
| YusukeWakuta | 15:c5ade23e5de4 | 172 | void InputControlValues() |
| YusukeWakuta | 15:c5ade23e5de4 | 173 | { |
| YusukeWakuta | 26:745735b0479d | 174 | setMaxAndMin(enumRoll, rollPin.read()); |
| YusukeWakuta | 26:745735b0479d | 175 | setMaxAndMin(enumPitch, pitchPin.read()); |
| YusukeWakuta | 26:745735b0479d | 176 | |
| YusukeWakuta | 26:745735b0479d | 177 | // pc.printf("rollN:%f rollMax:%f rollMin:%f pitchN:%f pitchMax:%f pitchUpper:%f pitchMin:%f pitchLo:%f raw:%f\r\n",rollNeutral,rollNeutral+rollUpperDiff,rollNeutral+rollLowerDiff,pitchNeutral,pitchNeutral+pitchUpperDiff,pitchUpperDiff,pitchNeutral+pitchLowerDiff,pitchLowerDiff,pitchPin.read()); |
| YusukeWakuta | 26:745735b0479d | 178 | float MatchedRoll = MatchUpperAndLower(enumRoll, rollNeutral + rollUpperDiff,rollLowerDiff + rollLowerDiff,rollNeutral,rollPin.read() + neutralDiff); |
| YusukeWakuta | 26:745735b0479d | 179 | float MatchedPitch = MatchUpperAndLower(enumPitch, pitchNeutral + pitchUpperDiff,pitchNeutral + pitchLowerDiff,pitchNeutral,pitchPin.read()); |
| YusukeWakuta | 24:72f9cb6e9440 | 180 | |
| YusukeWakuta | 25:12408563540d | 181 | float FormatedRoll_R = Format2Range((MatchedPitch +MatchedRoll ) / 2.0,(rollNeutral + rollUpperDiff+ pitchNeutral + pitchUpperDiff) / 2.0,(rollNeutral + rollLowerDiff+ pitchNeutral + pitchLowerDiff) / 2.0); |
| YusukeWakuta | 25:12408563540d | 182 | *(int *)inputDatas_R =PhaseFloat(FormatedRoll_R,(rollNeutral + rollUpperDiff+ pitchNeutral + pitchUpperDiff) / 2.0,(rollNeutral + rollLowerDiff+ pitchNeutral + pitchLowerDiff) / 2.0); |
| YusukeWakuta | 24:72f9cb6e9440 | 183 | |
| YusukeWakuta | 26:745735b0479d | 184 | float FormatedRoll_L = Format2Range((MatchedPitch - MatchedRoll) / 2.0,(pitchNeutral +pitchLowerDiff - rollNeutral - rollUpperDiff) / 2.0,(pitchNeutral + pitchUpperDiff-rollNeutral - rollLowerDiff) / 2.0); |
| YusukeWakuta | 26:745735b0479d | 185 | *(int *)inputDatas_L = PhaseFloat(FormatedRoll_L,(pitchNeutral + pitchLowerDiff - rollNeutral - rollUpperDiff) / 2.0,(pitchNeutral + pitchUpperDiff - rollNeutral - rollLowerDiff) / 2.0); |
| YusukeWakuta | 26:745735b0479d | 186 | pc.printf("Format:%f max:%f min:%f\n\r",FormatedRoll_L,(pitchNeutral + pitchUpperDiff - rollNeutral - rollLowerDiff) / 2.0,(pitchNeutral + pitchLowerDiff - rollNeutral - rollUpperDiff) / 2.0); |
| YusukeWakuta | 26:745735b0479d | 187 | if(*(int *)inputDatas_R < 0) |
| YusukeWakuta | 26:745735b0479d | 188 | *(int *)inputDatas_R = 0; |
| YusukeWakuta | 26:745735b0479d | 189 | else if(*(int *)inputDatas_R > PHASE_NUM * 2) |
| YusukeWakuta | 26:745735b0479d | 190 | *(int *)inputDatas_R = PHASE_NUM *2; |
| YusukeWakuta | 26:745735b0479d | 191 | if(*(int *)inputDatas_L < 0) |
| YusukeWakuta | 26:745735b0479d | 192 | *(int *)inputDatas_L = 0 ; |
| YusukeWakuta | 26:745735b0479d | 193 | else if(*(int *)inputDatas_L > PHASE_NUM*2) |
| YusukeWakuta | 26:745735b0479d | 194 | *(int *)inputDatas_L =PHASE_NUM * 2; |
| YusukeWakuta | 16:336e8b102555 | 195 | |
| YusukeWakuta | 26:745735b0479d | 196 | // pc.printf("input_R:%d input_L:%d\n\r",*(int *)inputDatas_R,*(int *)inputDatas_L); |
| tsumagari | 10:b7159feb11fd | 197 | inputDatas_R[4] = (char)drug_R; |
| YusukeWakuta | 15:c5ade23e5de4 | 198 | led4 =! led4; |
| YusukeWakuta | 26:745735b0479d | 199 | // pc.printf("%c",*(char *)inputDatas_R[4]); |
| YusukeWakuta | 15:c5ade23e5de4 | 200 | //pc.printf("%c",(char)drug_R); |
| tsumagari | 10:b7159feb11fd | 201 | inputDatas_L[4] = (char)drug_L; |
| YusukeWakuta | 15:c5ade23e5de4 | 202 | // pc.printf(""); |
| YusukeWakuta | 0:b1290ca6c4a2 | 203 | } |
| YusukeWakuta | 0:b1290ca6c4a2 | 204 | |
| YusukeWakuta | 15:c5ade23e5de4 | 205 | void SendDatas() |
| YusukeWakuta | 15:c5ade23e5de4 | 206 | { |
| tsumagari | 10:b7159feb11fd | 207 | can_R.write(CANMessage(SEND_DATAS_CAN_ID, inputDatas_R, INPUT_DATAS_NUM)); |
| tsumagari | 10:b7159feb11fd | 208 | can_L.write(CANMessage(SEND_DATAS_CAN_ID, inputDatas_L, INPUT_DATAS_NUM)); |
| tsumagari | 8:dbc8c87dac78 | 209 | toKeikiSerial.putc(';'); |
| YusukeWakuta | 15:c5ade23e5de4 | 210 | for(int i = 0; i < YOKUTAN_DATAS_NUM; i++) { |
| YusukeWakuta | 0:b1290ca6c4a2 | 211 | toKeikiSerial.putc(yokutanDatas_R[i]); |
| YusukeWakuta | 0:b1290ca6c4a2 | 212 | toKeikiSerial.putc(yokutanDatas_L[i]); |
| YusukeWakuta | 0:b1290ca6c4a2 | 213 | } |
| YusukeWakuta | 15:c5ade23e5de4 | 214 | for(int i = 0; i < INPUT_DATAS_NUM; i++) { |
| taurin | 4:4a13dd263a7b | 215 | toKeikiSerial.putc(inputDatas_R[i]); |
| taurin | 4:4a13dd263a7b | 216 | toKeikiSerial.putc(inputDatas_L[i]); |
| taurin | 4:4a13dd263a7b | 217 | } |
| YusukeWakuta | 0:b1290ca6c4a2 | 218 | } |
| tsumagari | 8:dbc8c87dac78 | 219 | |
| YusukeWakuta | 15:c5ade23e5de4 | 220 | void init() |
| YusukeWakuta | 15:c5ade23e5de4 | 221 | { |
| tsumagari | 9:c32999b4d2f9 | 222 | //--------------------------------------(resetInterrupt init) |
| tsumagari | 9:c32999b4d2f9 | 223 | resetPin.rise(resetInterrupt); |
| tsumagari | 9:c32999b4d2f9 | 224 | resetPin.mode(PullDown); |
| tsumagari | 9:c32999b4d2f9 | 225 | //----------------------------------------------------------- |
| tsumagari | 9:c32999b4d2f9 | 226 | // sendDatasTicker.attach(SendDatas,SEND_DATAS_TIME); |
| YusukeWakuta | 15:c5ade23e5de4 | 227 | for(int i = 0; i < INPUT_DATAS_NUM; i++) { |
| taurin | 2:9dc7d5f1e910 | 228 | inputDatas_R[i] = 0; |
| taurin | 2:9dc7d5f1e910 | 229 | inputDatas_L[i] = 0; |
| taurin | 2:9dc7d5f1e910 | 230 | } |
| YusukeWakuta | 0:b1290ca6c4a2 | 231 | } |
| YusukeWakuta | 0:b1290ca6c4a2 | 232 | |
| YusukeWakuta | 15:c5ade23e5de4 | 233 | void receiveDatas() |
| YusukeWakuta | 15:c5ade23e5de4 | 234 | { |
| YusukeWakuta | 15:c5ade23e5de4 | 235 | if(can_R.read(recmsg_R)) { |
| YusukeWakuta | 15:c5ade23e5de4 | 236 | for(int i = 0; i < recmsg_R.len; i++) { |
| YusukeWakuta | 0:b1290ca6c4a2 | 237 | yokutanDatas_R[i] = recmsg_R.data[i]; |
| YusukeWakuta | 15:c5ade23e5de4 | 238 | // pc.printf("%c",yokutanDatas_R[i]); |
| YusukeWakuta | 0:b1290ca6c4a2 | 239 | } |
| YusukeWakuta | 25:12408563540d | 240 | led1 = !led1; |
| YusukeWakuta | 0:b1290ca6c4a2 | 241 | } |
| YusukeWakuta | 15:c5ade23e5de4 | 242 | if(can_L.read(recmsg_L)) { |
| YusukeWakuta | 15:c5ade23e5de4 | 243 | for(int i = 0; i < recmsg_L.len; i++) { |
| YusukeWakuta | 0:b1290ca6c4a2 | 244 | yokutanDatas_L[i] = recmsg_L.data[i]; |
| YusukeWakuta | 15:c5ade23e5de4 | 245 | led3 = !led3; |
| YusukeWakuta | 15:c5ade23e5de4 | 246 | // pc.printf("%c",yokutanDatas_L[i]); |
| YusukeWakuta | 0:b1290ca6c4a2 | 247 | } |
| YusukeWakuta | 25:12408563540d | 248 | led2 = !led2; |
| YusukeWakuta | 0:b1290ca6c4a2 | 249 | } |
| YusukeWakuta | 0:b1290ca6c4a2 | 250 | } |
| YusukeWakuta | 0:b1290ca6c4a2 | 251 | |
| YusukeWakuta | 15:c5ade23e5de4 | 252 | int main() |
| YusukeWakuta | 15:c5ade23e5de4 | 253 | { |
| YusukeWakuta | 0:b1290ca6c4a2 | 254 | init(); |
| YusukeWakuta | 24:72f9cb6e9440 | 255 | setNeutral(); |
| YusukeWakuta | 15:c5ade23e5de4 | 256 | while(1) { |
| tsumagari | 8:dbc8c87dac78 | 257 | InputControlValues(); |
| tsumagari | 10:b7159feb11fd | 258 | wait_us(5); |
| YusukeWakuta | 0:b1290ca6c4a2 | 259 | receiveDatas(); |
| tsumagari | 9:c32999b4d2f9 | 260 | SendDatas(); |
| YusukeWakuta | 0:b1290ca6c4a2 | 261 | wait(WAIT_LOOP_TIME); |
| YusukeWakuta | 0:b1290ca6c4a2 | 262 | } |
| YusukeWakuta | 0:b1290ca6c4a2 | 263 | } |
