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

Dependencies:   mbed-rtos mbed

Fork of ControlMain2017 by albatross

Committer:
YusukeWakuta
Date:
Mon Mar 20 16:10:41 2017 +0000
Revision:
24:72f9cb6e9440
Parent:
21:9b1f5123f4a8
Child:
25:12408563540d
???????????????????????

Who changed what in which revision?

UserRevisionLine numberNew 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 0:b1290ca6c4a2 41 DigitalOut myled1(LED1);
YusukeWakuta 0:b1290ca6c4a2 42 DigitalOut myled2(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];
taurin 4:4a13dd263a7b 51 bool stateP = true;
taurin 4:4a13dd263a7b 52 bool stateQ = true;
taurin 4:4a13dd263a7b 53 bool stateP_old = true;
taurin 4:4a13dd263a7b 54 bool stateQ_old = true;
YusukeWakuta 24:72f9cb6e9440 55
YusukeWakuta 24:72f9cb6e9440 56 float changedRollneutral = 0.739;
YusukeWakuta 24:72f9cb6e9440 57 float rollUpperDiff = 0.224;
YusukeWakuta 24:72f9cb6e9440 58 float rollLowerDiff = -0.184;
YusukeWakuta 24:72f9cb6e9440 59
YusukeWakuta 24:72f9cb6e9440 60 float changedPitchNeutral = 0.468 ;//1って書いた方
YusukeWakuta 24:72f9cb6e9440 61 float pitchUpperDiff = 0.416;
YusukeWakuta 24:72f9cb6e9440 62 float pitchLowerDiff = -0.358;
YusukeWakuta 24:72f9cb6e9440 63 float neutralDiff;
YusukeWakuta 0:b1290ca6c4a2 64
YusukeWakuta 3:0e66ce2ab2fb 65 CANMessage recmsg_R;
YusukeWakuta 3:0e66ce2ab2fb 66 CANMessage recmsg_L;
YusukeWakuta 0:b1290ca6c4a2 67
YusukeWakuta 24:72f9cb6e9440 68 void setNeutral()
YusukeWakuta 24:72f9cb6e9440 69 {
YusukeWakuta 24:72f9cb6e9440 70 float rollSum;
YusukeWakuta 24:72f9cb6e9440 71 float pitchSum;
YusukeWakuta 24:72f9cb6e9440 72
YusukeWakuta 24:72f9cb6e9440 73 for(int i = 0; i < SUM_UP_NUM; i++) {
YusukeWakuta 24:72f9cb6e9440 74 rollSum += rollPin.read();
YusukeWakuta 24:72f9cb6e9440 75 pitchSum += pitchPin.read();
YusukeWakuta 24:72f9cb6e9440 76 }
YusukeWakuta 24:72f9cb6e9440 77 changedRollneutral = rollSum / SUM_UP_NUM;
YusukeWakuta 24:72f9cb6e9440 78 changedPitchNeutral = pitchSum / SUM_UP_NUM;
YusukeWakuta 24:72f9cb6e9440 79 }
YusukeWakuta 24:72f9cb6e9440 80
YusukeWakuta 24:72f9cb6e9440 81
YusukeWakuta 24:72f9cb6e9440 82 void setRollMaxAndMin(float value)
YusukeWakuta 24:72f9cb6e9440 83 {
YusukeWakuta 24:72f9cb6e9440 84 if(value >changedRollneutral + rollUpperDiff)
YusukeWakuta 24:72f9cb6e9440 85 rollUpperDiff = value - changedRollneutral;
YusukeWakuta 24:72f9cb6e9440 86 else if(value < changedRollneutral - rollLowerDiff)
YusukeWakuta 24:72f9cb6e9440 87 rollLowerDiff = changedRollneutral - value;
YusukeWakuta 24:72f9cb6e9440 88 }
YusukeWakuta 24:72f9cb6e9440 89
YusukeWakuta 24:72f9cb6e9440 90 void setPitchMaxAndMin(float value)
YusukeWakuta 24:72f9cb6e9440 91 {
YusukeWakuta 24:72f9cb6e9440 92 if(value >changedPitchNeutral + pitchUpperDiff)
YusukeWakuta 24:72f9cb6e9440 93 pitchUpperDiff = value - changedPitchNeutral;
YusukeWakuta 24:72f9cb6e9440 94 else if(value < changedRollneutral - pitchLowerDiff)
YusukeWakuta 24:72f9cb6e9440 95 pitchLowerDiff = changedPitchNeutral - value;
YusukeWakuta 24:72f9cb6e9440 96 }
YusukeWakuta 24:72f9cb6e9440 97
YusukeWakuta 24:72f9cb6e9440 98
YusukeWakuta 24:72f9cb6e9440 99 void calibrateNeutral()
YusukeWakuta 24:72f9cb6e9440 100 {
YusukeWakuta 24:72f9cb6e9440 101 neutralDiff = changedPitchNeutral - changedRollneutral; //ピッチの初期値の方がい小さいと仮定
YusukeWakuta 24:72f9cb6e9440 102 changedRollneutral = changedRollneutral + neutralDiff;
YusukeWakuta 24:72f9cb6e9440 103 changedRollneutral = rollUpperDiff + neutralDiff;
YusukeWakuta 24:72f9cb6e9440 104 changedRollneutral = rollLowerDiff + neutralDiff;
YusukeWakuta 24:72f9cb6e9440 105 }
YusukeWakuta 24:72f9cb6e9440 106
YusukeWakuta 20:d4951f491642 107 //ジョイスティックの中間値から上と下の幅を合わせます。値を取得するたびに呼び出してください。範囲は広い方に合わせる物とします
YusukeWakuta 20:d4951f491642 108 float MatchRollUpperAndLower(float max,float min,float neutral,float value)
YusukeWakuta 18:31722545ecf1 109 {
YusukeWakuta 20:d4951f491642 110 float Upper = max- neutral;
YusukeWakuta 20:d4951f491642 111 float Lower = neutral - min;
YusukeWakuta 20:d4951f491642 112 if(Upper > Lower) {
YusukeWakuta 20:d4951f491642 113 if(value < neutral) {
YusukeWakuta 20:d4951f491642 114 value = neutral - ((neutral - value) * (Upper / Lower));
YusukeWakuta 24:72f9cb6e9440 115 rollLowerDiff = (rollLowerDiff)* (Upper / Lower);
YusukeWakuta 20:d4951f491642 116 }
YusukeWakuta 20:d4951f491642 117 } else {
YusukeWakuta 20:d4951f491642 118 if(value > neutral) {
YusukeWakuta 20:d4951f491642 119 value = neutral + ((value - neutral) * (Lower / Upper));
YusukeWakuta 24:72f9cb6e9440 120 rollUpperDiff = rollUpperDiff* (Upper / Lower);
YusukeWakuta 20:d4951f491642 121 }
YusukeWakuta 20:d4951f491642 122 }
YusukeWakuta 20:d4951f491642 123 return value;
YusukeWakuta 20:d4951f491642 124 }
YusukeWakuta 20:d4951f491642 125
YusukeWakuta 20:d4951f491642 126 //ジョイスティックの中間値から上と下の幅を合わせます。値を取得するたびに呼び出してください。範囲は広い方に合わせる物とします
YusukeWakuta 20:d4951f491642 127 float MatchPitchUpperAndLower(float max,float min,float neutral,float value)
YusukeWakuta 20:d4951f491642 128 {
YusukeWakuta 20:d4951f491642 129 float Upper = max- neutral;
YusukeWakuta 20:d4951f491642 130 float Lower = neutral - min;
YusukeWakuta 20:d4951f491642 131 if(Upper > Lower) {
YusukeWakuta 20:d4951f491642 132 if(value < neutral) {
YusukeWakuta 20:d4951f491642 133 value = neutral - ((neutral - value) * (Upper / Lower));
YusukeWakuta 24:72f9cb6e9440 134 pitchLowerDiff = (pitchLowerDiff)* (Upper / Lower);
YusukeWakuta 20:d4951f491642 135 }
YusukeWakuta 20:d4951f491642 136 } else {
YusukeWakuta 20:d4951f491642 137 if(value > neutral) {
YusukeWakuta 20:d4951f491642 138 value = neutral + ((value - neutral) * (Lower / Upper));
YusukeWakuta 24:72f9cb6e9440 139 pitchUpperDiff= (pitchUpperDiff)* (Upper / Lower);
YusukeWakuta 20:d4951f491642 140 }
YusukeWakuta 20:d4951f491642 141 }
YusukeWakuta 20:d4951f491642 142 return value;
YusukeWakuta 18:31722545ecf1 143 }
YusukeWakuta 18:31722545ecf1 144
YusukeWakuta 21:9b1f5123f4a8 145 //範囲外に値がない場合にエラーが発生するので範囲内に収める
YusukeWakuta 21:9b1f5123f4a8 146 float Format2Range(float value,float max,float min)
YusukeWakuta 18:31722545ecf1 147 {
YusukeWakuta 18:31722545ecf1 148 float result;
YusukeWakuta 21:9b1f5123f4a8 149
YusukeWakuta 18:31722545ecf1 150 if(value > max)
YusukeWakuta 18:31722545ecf1 151 result= max;
YusukeWakuta 18:31722545ecf1 152 else if(value < min)
YusukeWakuta 18:31722545ecf1 153 result = min;
YusukeWakuta 21:9b1f5123f4a8 154 else if(value > 1)
YusukeWakuta 21:9b1f5123f4a8 155 result = 1;
YusukeWakuta 21:9b1f5123f4a8 156 else if(value < 0)
YusukeWakuta 21:9b1f5123f4a8 157 result = 0;
YusukeWakuta 18:31722545ecf1 158 else
YusukeWakuta 18:31722545ecf1 159 result = value;
YusukeWakuta 18:31722545ecf1 160 return result;
YusukeWakuta 18:31722545ecf1 161 }
YusukeWakuta 18:31722545ecf1 162
YusukeWakuta 21:9b1f5123f4a8 163 //値をint型の段階に分ける
YusukeWakuta 18:31722545ecf1 164 int PhaseFloat(float value,float max,float min)
YusukeWakuta 18:31722545ecf1 165 {
YusukeWakuta 18:31722545ecf1 166 float PhaseWidth = (max - min) / PHASE_NUM;
YusukeWakuta 18:31722545ecf1 167 if(value< max&& value > min) {
YusukeWakuta 18:31722545ecf1 168 for(int i = 1; i <= PHASE_NUM; i++) {
YusukeWakuta 18:31722545ecf1 169 if(value < min + PhaseWidth * i&& value > min + PhaseWidth * (i - 1) )
YusukeWakuta 18:31722545ecf1 170 return i;
YusukeWakuta 18:31722545ecf1 171 }
YusukeWakuta 18:31722545ecf1 172 } else if(value <= min)
YusukeWakuta 18:31722545ecf1 173 return 0;
YusukeWakuta 18:31722545ecf1 174 else if(value>=max)
YusukeWakuta 18:31722545ecf1 175 return PHASE_NUM;
YusukeWakuta 18:31722545ecf1 176
YusukeWakuta 18:31722545ecf1 177 }
YusukeWakuta 18:31722545ecf1 178
YusukeWakuta 15:c5ade23e5de4 179 void InputControlValues()
YusukeWakuta 15:c5ade23e5de4 180 {
YusukeWakuta 24:72f9cb6e9440 181 setRollMaxAndMin(rollPin.read());
YusukeWakuta 24:72f9cb6e9440 182 setPitchMaxAndMin(pitchPin.read());
YusukeWakuta 24:72f9cb6e9440 183 calibrateNeutral();
YusukeWakuta 24:72f9cb6e9440 184 float MatchedRoll = MatchRollUpperAndLower(changedRollneutral + rollUpperDiff,rollLowerDiff + rollLowerDiff,changedRollneutral,rollPin.read() - neutralDiff);
YusukeWakuta 24:72f9cb6e9440 185 float MatchedPitch = MatchPitchUpperAndLower(changedPitchNeutral + pitchUpperDiff,changedPitchNeutral + pitchLowerDiff,changedPitchNeutral,pitchPin.read());
YusukeWakuta 24:72f9cb6e9440 186
YusukeWakuta 24:72f9cb6e9440 187 float FormatedRollR = Format2Range((MatchedPitch +MatchedRoll ) / 2.0,(changedRollneutral + rollUpperDiff+ changedPitchNeutral + pitchUpperDiff) / 2.0,(changedRollneutral + rollLowerDiff+ changedPitchNeutral + pitchLowerDiff) / 2.0);
YusukeWakuta 24:72f9cb6e9440 188 *(int *)inputDatas_R =PhaseFloat(FormatedRollR,(changedRollneutral + rollUpperDiff+ changedPitchNeutral + pitchUpperDiff) / 2.0,(changedRollneutral + rollLowerDiff+ changedPitchNeutral + pitchLowerDiff) / 2.0);
YusukeWakuta 24:72f9cb6e9440 189
YusukeWakuta 24:72f9cb6e9440 190 float FormatedRollL = Format2Range((MatchedPitch - MatchedRoll) / 2.0,(changedRollneutral + rollUpperDiff- changedPitchNeutral -pitchLowerDiff) / 2.0,(changedRollneutral + rollLowerDiff- changedPitchNeutral - pitchUpperDiff) / 2.0);
YusukeWakuta 24:72f9cb6e9440 191 *(int *)inputDatas_L = PhaseFloat(FormatedRollR,(changedRollneutral + rollUpperDiff- changedPitchNeutral - pitchLowerDiff) / 2.0,(changedRollneutral + rollLowerDiff- changedPitchNeutral + pitchUpperDiff) / 2.0);
YusukeWakuta 16:336e8b102555 192
YusukeWakuta 19:6387e3f02b37 193 if(*(int *)inputDatas_R < 0)
YusukeWakuta 19:6387e3f02b37 194 *(int *)inputDatas_R = 0;
YusukeWakuta 18:31722545ecf1 195 else if(*(int *)inputDatas_R > PHASE_NUM)
YusukeWakuta 18:31722545ecf1 196 *(int *)inputDatas_R = PHASE_NUM;
YusukeWakuta 19:6387e3f02b37 197 if(*(int *)inputDatas_L < 0)
YusukeWakuta 19:6387e3f02b37 198 *(int *)inputDatas_L = 0 ;
YusukeWakuta 18:31722545ecf1 199 else if(*(int *)inputDatas_L > PHASE_NUM)
YusukeWakuta 18:31722545ecf1 200 *(int *)inputDatas_L =PHASE_NUM;
YusukeWakuta 16:336e8b102555 201
YusukeWakuta 19:6387e3f02b37 202 pc.printf("input_R:%d input_L:%d\n\r",*(int *)inputDatas_R,*(int *)inputDatas_L);
tsumagari 10:b7159feb11fd 203 inputDatas_R[4] = (char)drug_R;
YusukeWakuta 15:c5ade23e5de4 204 led4 =! led4;
YusukeWakuta 15:c5ade23e5de4 205 pc.printf("%c",*(char *)inputDatas_R[4]);
YusukeWakuta 15:c5ade23e5de4 206 //pc.printf("%c",(char)drug_R);
tsumagari 10:b7159feb11fd 207 inputDatas_L[4] = (char)drug_L;
YusukeWakuta 15:c5ade23e5de4 208 // pc.printf("");
YusukeWakuta 0:b1290ca6c4a2 209 }
YusukeWakuta 0:b1290ca6c4a2 210
YusukeWakuta 18:31722545ecf1 211
YusukeWakuta 18:31722545ecf1 212
YusukeWakuta 15:c5ade23e5de4 213 void toString_R()
YusukeWakuta 15:c5ade23e5de4 214 {
taurin 4:4a13dd263a7b 215 pc.printf("R:");
YusukeWakuta 15:c5ade23e5de4 216 for(int i = 0; i < INPUT_DATAS_NUM; i++) {
taurin 4:4a13dd263a7b 217 pc.printf("%d:%i ",i,inputDatas_R[i]);
taurin 4:4a13dd263a7b 218 }
YusukeWakuta 0:b1290ca6c4a2 219 }
YusukeWakuta 0:b1290ca6c4a2 220
YusukeWakuta 15:c5ade23e5de4 221 void toString_L()
YusukeWakuta 15:c5ade23e5de4 222 {
taurin 4:4a13dd263a7b 223 pc.printf("L:");
YusukeWakuta 15:c5ade23e5de4 224 for(int i = 0; i < INPUT_DATAS_NUM; i++) {
taurin 4:4a13dd263a7b 225 pc.printf("%d:%i ",i,inputDatas_L[i]);
taurin 4:4a13dd263a7b 226 }
taurin 4:4a13dd263a7b 227 pc.printf("\n\r");
YusukeWakuta 0:b1290ca6c4a2 228 }
YusukeWakuta 0:b1290ca6c4a2 229
YusukeWakuta 15:c5ade23e5de4 230 void SendDatas()
YusukeWakuta 15:c5ade23e5de4 231 {
tsumagari 10:b7159feb11fd 232 can_R.write(CANMessage(SEND_DATAS_CAN_ID, inputDatas_R, INPUT_DATAS_NUM));
tsumagari 10:b7159feb11fd 233 can_L.write(CANMessage(SEND_DATAS_CAN_ID, inputDatas_L, INPUT_DATAS_NUM));
tsumagari 8:dbc8c87dac78 234 toKeikiSerial.putc(';');
YusukeWakuta 15:c5ade23e5de4 235 for(int i = 0; i < YOKUTAN_DATAS_NUM; i++) {
YusukeWakuta 0:b1290ca6c4a2 236 toKeikiSerial.putc(yokutanDatas_R[i]);
YusukeWakuta 0:b1290ca6c4a2 237 toKeikiSerial.putc(yokutanDatas_L[i]);
YusukeWakuta 0:b1290ca6c4a2 238 }
YusukeWakuta 15:c5ade23e5de4 239 for(int i = 0; i < INPUT_DATAS_NUM; i++) {
taurin 4:4a13dd263a7b 240 toKeikiSerial.putc(inputDatas_R[i]);
taurin 4:4a13dd263a7b 241 toKeikiSerial.putc(inputDatas_L[i]);
taurin 4:4a13dd263a7b 242 }
YusukeWakuta 0:b1290ca6c4a2 243 }
tsumagari 8:dbc8c87dac78 244
YusukeWakuta 15:c5ade23e5de4 245 void init()
YusukeWakuta 15:c5ade23e5de4 246 {
tsumagari 9:c32999b4d2f9 247 //--------------------------------------(resetInterrupt init)
tsumagari 9:c32999b4d2f9 248 resetPin.rise(resetInterrupt);
tsumagari 9:c32999b4d2f9 249 resetPin.mode(PullDown);
tsumagari 9:c32999b4d2f9 250 //-----------------------------------------------------------
tsumagari 9:c32999b4d2f9 251 // sendDatasTicker.attach(SendDatas,SEND_DATAS_TIME);
YusukeWakuta 15:c5ade23e5de4 252 for(int i = 0; i < INPUT_DATAS_NUM; i++) {
taurin 2:9dc7d5f1e910 253 inputDatas_R[i] = 0;
taurin 2:9dc7d5f1e910 254 inputDatas_L[i] = 0;
taurin 2:9dc7d5f1e910 255 }
YusukeWakuta 0:b1290ca6c4a2 256 }
YusukeWakuta 0:b1290ca6c4a2 257
YusukeWakuta 15:c5ade23e5de4 258 void receiveDatas()
YusukeWakuta 15:c5ade23e5de4 259 {
YusukeWakuta 15:c5ade23e5de4 260 if(can_R.read(recmsg_R)) {
YusukeWakuta 15:c5ade23e5de4 261 for(int i = 0; i < recmsg_R.len; i++) {
YusukeWakuta 0:b1290ca6c4a2 262 yokutanDatas_R[i] = recmsg_R.data[i];
YusukeWakuta 15:c5ade23e5de4 263 // pc.printf("%c",yokutanDatas_R[i]);
YusukeWakuta 0:b1290ca6c4a2 264 }
taurin 4:4a13dd263a7b 265 myled1 = !myled1;
YusukeWakuta 0:b1290ca6c4a2 266 }
YusukeWakuta 15:c5ade23e5de4 267 if(can_L.read(recmsg_L)) {
YusukeWakuta 15:c5ade23e5de4 268 for(int i = 0; i < recmsg_L.len; i++) {
YusukeWakuta 0:b1290ca6c4a2 269 yokutanDatas_L[i] = recmsg_L.data[i];
YusukeWakuta 15:c5ade23e5de4 270 led3 = !led3;
YusukeWakuta 15:c5ade23e5de4 271 // pc.printf("%c",yokutanDatas_L[i]);
YusukeWakuta 0:b1290ca6c4a2 272 }
taurin 4:4a13dd263a7b 273 myled2 = !myled2;
YusukeWakuta 0:b1290ca6c4a2 274 }
YusukeWakuta 0:b1290ca6c4a2 275 }
YusukeWakuta 0:b1290ca6c4a2 276
YusukeWakuta 15:c5ade23e5de4 277 int main()
YusukeWakuta 15:c5ade23e5de4 278 {
YusukeWakuta 0:b1290ca6c4a2 279 init();
YusukeWakuta 24:72f9cb6e9440 280 setNeutral();
YusukeWakuta 15:c5ade23e5de4 281 while(1) {
tsumagari 8:dbc8c87dac78 282 InputControlValues();
tsumagari 10:b7159feb11fd 283 wait_us(5);
YusukeWakuta 0:b1290ca6c4a2 284 receiveDatas();
tsumagari 9:c32999b4d2f9 285 SendDatas();
YusukeWakuta 0:b1290ca6c4a2 286 wait(WAIT_LOOP_TIME);
YusukeWakuta 0:b1290ca6c4a2 287 }
YusukeWakuta 0:b1290ca6c4a2 288 }