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

Dependencies:   mbed-rtos mbed

Fork of ControlMain2017 by albatross

Committer:
YusukeWakuta
Date:
Sun Mar 19 14:22:39 2017 +0000
Revision:
20:d4951f491642
Parent:
19:6387e3f02b37
Child:
21:9b1f5123f4a8
R??????????

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 19:6387e3f02b37 13 #define PITCH_INPUT_NEUTRAL 0.468 //1って書いた方
YusukeWakuta 18:31722545ecf1 14 #define PITCH_INPUT_MAX 0.884
YusukeWakuta 18:31722545ecf1 15 #define PITCH_INPUT_MIN 0.110
YusukeWakuta 18:31722545ecf1 16
YusukeWakuta 19:6387e3f02b37 17 #define OLD_ROLL_NEUTRAL 0.739
YusukeWakuta 19:6387e3f02b37 18 #define ROLL_INPUT_NEUTRAL 0.468 //2て書いた方
YusukeWakuta 19:6387e3f02b37 19 #define ROLL_INPUT_MAX 0.963 - (OLD_ROLL_NEUTRAL - PITCH_INPUT_NEUTRAL)
YusukeWakuta 19:6387e3f02b37 20 #define ROLL_INPUT_MIN 0.555 - (OLD_ROLL_NEUTRAL - PITCH_INPUT_NEUTRAL)
YusukeWakuta 18:31722545ecf1 21
YusukeWakuta 19:6387e3f02b37 22 #define SUMED_INPUT_NEUTRAL 0.457
YusukeWakuta 19:6387e3f02b37 23 #define SUMED_INPUT_MAX (PITCH_INPUT_MAX +ROLL_INPUT_MAX ) / 2.0 //0.7825
YusukeWakuta 19:6387e3f02b37 24 #define SUMED_INPUT_MIN (PITCH_INPUT_MIN +ROLL_INPUT_MIN ) / 2.0
YusukeWakuta 18:31722545ecf1 25
YusukeWakuta 19:6387e3f02b37 26 #define DEC_INPUT_NEUTRAL 0
YusukeWakuta 19:6387e3f02b37 27 #define DEC_INPUT_MAX (PITCH_INPUT_MAX -ROLL_INPUT_MIN ) / 2.0
YusukeWakuta 19:6387e3f02b37 28 #define DEC_INPUT_MIN (PITCH_INPUT_MIN -ROLL_INPUT_MAX ) / 2.0
YusukeWakuta 20:d4951f491642 29 #define PHASE_NUM 6 //偶数にしてください
YusukeWakuta 19:6387e3f02b37 30 /*
YusukeWakuta 19:6387e3f02b37 31 roll入力とピッチ入力だとピッチの方が1.5倍効くように
YusukeWakuta 19:6387e3f02b37 32 */
YusukeWakuta 18:31722545ecf1 33
tsumagari 9:c32999b4d2f9 34 //-----------------------------------(resetInterrupt def)
tsumagari 9:c32999b4d2f9 35 extern "C" void mbed_reset();
YusukeWakuta 13:79eb74eb86c4 36 InterruptIn resetPin(p22);
tsumagari 9:c32999b4d2f9 37 Timer resetTimeCount;
YusukeWakuta 15:c5ade23e5de4 38 void resetInterrupt()
YusukeWakuta 15:c5ade23e5de4 39 {
YusukeWakuta 15:c5ade23e5de4 40 while(resetPin) {
tsumagari 9:c32999b4d2f9 41 resetTimeCount.start();
tsumagari 9:c32999b4d2f9 42 if(resetTimeCount.read()>3) mbed_reset();
tsumagari 9:c32999b4d2f9 43 }
tsumagari 9:c32999b4d2f9 44 resetTimeCount.reset();
tsumagari 9:c32999b4d2f9 45 }
tsumagari 9:c32999b4d2f9 46 //-------------------------------------------------------
tsumagari 9:c32999b4d2f9 47
taurin 6:7484315ba88a 48 CAN can_R(p30,p29);
taurin 6:7484315ba88a 49 CAN can_L(p9,p10);
YusukeWakuta 14:ffe9460922cb 50 Serial toKeikiSerial(p28,p27);
tsumagari 7:59ddbe239835 51 Serial pc(USBTX,USBRX);
tsumagari 10:b7159feb11fd 52 AnalogIn rollPin(p15);
YusukeWakuta 18:31722545ecf1 53 AnalogIn pitchPin(p20);
YusukeWakuta 13:79eb74eb86c4 54 DigitalIn drug_R(p14);
taurin 6:7484315ba88a 55 DigitalIn drug_L(p19);
YusukeWakuta 0:b1290ca6c4a2 56 DigitalOut myled1(LED1);
YusukeWakuta 0:b1290ca6c4a2 57 DigitalOut myled2(LED2);
YusukeWakuta 15:c5ade23e5de4 58 DigitalOut led4(LED4);
YusukeWakuta 15:c5ade23e5de4 59 DigitalOut led3(LED3);
tsumagari 9:c32999b4d2f9 60 //Ticker sendDatasTicker;
YusukeWakuta 0:b1290ca6c4a2 61
taurin 4:4a13dd263a7b 62 char yokutanDatas_R[YOKUTAN_DATAS_NUM];
taurin 4:4a13dd263a7b 63 char yokutanDatas_L[YOKUTAN_DATAS_NUM];
tsumagari 10:b7159feb11fd 64 char inputDatas_R[INPUT_DATAS_NUM];
tsumagari 10:b7159feb11fd 65 char inputDatas_L[INPUT_DATAS_NUM];
taurin 4:4a13dd263a7b 66 bool stateP = true;
taurin 4:4a13dd263a7b 67 bool stateQ = true;
taurin 4:4a13dd263a7b 68 bool stateP_old = true;
taurin 4:4a13dd263a7b 69 bool stateQ_old = true;
YusukeWakuta 20:d4951f491642 70 float changedRollMax;
YusukeWakuta 20:d4951f491642 71 float changedRollMin;
YusukeWakuta 20:d4951f491642 72 float changedPitchMax;
YusukeWakuta 20:d4951f491642 73 float changedPitchMin;
YusukeWakuta 0:b1290ca6c4a2 74
YusukeWakuta 3:0e66ce2ab2fb 75 CANMessage recmsg_R;
YusukeWakuta 3:0e66ce2ab2fb 76 CANMessage recmsg_L;
YusukeWakuta 0:b1290ca6c4a2 77
YusukeWakuta 20:d4951f491642 78
YusukeWakuta 20:d4951f491642 79 int SampleFloat(float f)
YusukeWakuta 20:d4951f491642 80 {
YusukeWakuta 20:d4951f491642 81 int temp = ((f + 0.025) * 100.0) / 5;
YusukeWakuta 20:d4951f491642 82 float result = temp / 20.0;
YusukeWakuta 20:d4951f491642 83 return result;
YusukeWakuta 20:d4951f491642 84 }
YusukeWakuta 20:d4951f491642 85
YusukeWakuta 15:c5ade23e5de4 86 float get_analogin_ave(AnalogIn pin)
YusukeWakuta 15:c5ade23e5de4 87 {
tsumagari 10:b7159feb11fd 88 float val = 0;
YusukeWakuta 15:c5ade23e5de4 89 for(int i = 0; i<SUM_UP_NUM; i++) {
tsumagari 10:b7159feb11fd 90 val += pin.read();
YusukeWakuta 15:c5ade23e5de4 91 }
YusukeWakuta 15:c5ade23e5de4 92 return val/SUM_UP_NUM;
tsumagari 10:b7159feb11fd 93 }
tsumagari 10:b7159feb11fd 94
YusukeWakuta 20:d4951f491642 95 //ジョイスティックの中間値から上と下の幅を合わせます。値を取得するたびに呼び出してください。範囲は広い方に合わせる物とします
YusukeWakuta 20:d4951f491642 96 float MatchRollUpperAndLower(float max,float min,float neutral,float value)
YusukeWakuta 18:31722545ecf1 97 {
YusukeWakuta 20:d4951f491642 98 float Upper = max- neutral;
YusukeWakuta 20:d4951f491642 99 float Lower = neutral - min;
YusukeWakuta 20:d4951f491642 100 if(Upper > Lower) {
YusukeWakuta 20:d4951f491642 101 if(value < neutral) {
YusukeWakuta 20:d4951f491642 102 value = neutral - ((neutral - value) * (Upper / Lower));
YusukeWakuta 20:d4951f491642 103 changedRollMin = ROLL_INPUT_NEUTRAL - (ROLL_INPUT_NEUTRAL - ROLL_INPUT_MIN)* (Upper / Lower);
YusukeWakuta 20:d4951f491642 104 changedRollMax = ROLL_INPUT_MAX;
YusukeWakuta 20:d4951f491642 105 }
YusukeWakuta 20:d4951f491642 106 } else {
YusukeWakuta 20:d4951f491642 107 if(value > neutral) {
YusukeWakuta 20:d4951f491642 108 value = neutral + ((value - neutral) * (Lower / Upper));
YusukeWakuta 20:d4951f491642 109 changedRollMax = ROLL_INPUT_NEUTRAL + (ROLL_INPUT_MAX - ROLL_INPUT_NEUTRAL)* (Upper / Lower);
YusukeWakuta 20:d4951f491642 110 changedRollMin = ROLL_INPUT_MIN;
YusukeWakuta 20:d4951f491642 111 }
YusukeWakuta 20:d4951f491642 112 }
YusukeWakuta 20:d4951f491642 113 return value;
YusukeWakuta 20:d4951f491642 114 }
YusukeWakuta 20:d4951f491642 115
YusukeWakuta 20:d4951f491642 116 //ジョイスティックの中間値から上と下の幅を合わせます。値を取得するたびに呼び出してください。範囲は広い方に合わせる物とします
YusukeWakuta 20:d4951f491642 117 float MatchPitchUpperAndLower(float max,float min,float neutral,float value)
YusukeWakuta 20:d4951f491642 118 {
YusukeWakuta 20:d4951f491642 119 float Upper = max- neutral;
YusukeWakuta 20:d4951f491642 120 float Lower = neutral - min;
YusukeWakuta 20:d4951f491642 121 if(Upper > Lower) {
YusukeWakuta 20:d4951f491642 122 if(value < neutral) {
YusukeWakuta 20:d4951f491642 123 value = neutral - ((neutral - value) * (Upper / Lower));
YusukeWakuta 20:d4951f491642 124 changedPitchMin = PITCH_INPUT_NEUTRAL - (PITCH_INPUT_NEUTRAL - PITCH_INPUT_MIN)* (Upper / Lower);
YusukeWakuta 20:d4951f491642 125 changedPitchMax = PITCH_INPUT_MAX;
YusukeWakuta 20:d4951f491642 126 }
YusukeWakuta 20:d4951f491642 127 } else {
YusukeWakuta 20:d4951f491642 128 if(value > neutral) {
YusukeWakuta 20:d4951f491642 129 value = neutral + ((value - neutral) * (Lower / Upper));
YusukeWakuta 20:d4951f491642 130 changedPitchMax = PITCH_INPUT_NEUTRAL + (PITCH_INPUT_MAX - PITCH_INPUT_NEUTRAL)* (Upper / Lower);
YusukeWakuta 20:d4951f491642 131 changedPitchMin = PITCH_INPUT_MIN;
YusukeWakuta 20:d4951f491642 132 }
YusukeWakuta 20:d4951f491642 133 }
YusukeWakuta 20:d4951f491642 134 return value;
YusukeWakuta 18:31722545ecf1 135 }
YusukeWakuta 18:31722545ecf1 136
YusukeWakuta 18:31722545ecf1 137 float FormatEach2Range(float value,float max,float min)
YusukeWakuta 18:31722545ecf1 138 {
YusukeWakuta 18:31722545ecf1 139 float result;
YusukeWakuta 18:31722545ecf1 140 if(value > max)
YusukeWakuta 18:31722545ecf1 141 result= max;
YusukeWakuta 18:31722545ecf1 142 else if(value < min)
YusukeWakuta 18:31722545ecf1 143 result = min;
YusukeWakuta 18:31722545ecf1 144 else
YusukeWakuta 18:31722545ecf1 145 result = value;
YusukeWakuta 18:31722545ecf1 146 return result;
YusukeWakuta 18:31722545ecf1 147 }
YusukeWakuta 18:31722545ecf1 148
YusukeWakuta 20:d4951f491642 149 //値を0から1の範囲に収めます
YusukeWakuta 20:d4951f491642 150 float FormatSumed2Range(float value)
YusukeWakuta 18:31722545ecf1 151 {
YusukeWakuta 20:d4951f491642 152 float result;
YusukeWakuta 20:d4951f491642 153 if(value > 1)
YusukeWakuta 20:d4951f491642 154 result = 1;
YusukeWakuta 20:d4951f491642 155 else if(value < 0)
YusukeWakuta 20:d4951f491642 156 result = 0;
YusukeWakuta 20:d4951f491642 157 else
YusukeWakuta 20:d4951f491642 158 result = value;
YusukeWakuta 18:31722545ecf1 159 return result;
YusukeWakuta 18:31722545ecf1 160 }
YusukeWakuta 18:31722545ecf1 161
YusukeWakuta 18:31722545ecf1 162 int PhaseFloat(float value,float max,float min)
YusukeWakuta 18:31722545ecf1 163 {
YusukeWakuta 18:31722545ecf1 164 float PhaseWidth = (max - min) / PHASE_NUM;
YusukeWakuta 18:31722545ecf1 165 if(value< max&& value > min) {
YusukeWakuta 18:31722545ecf1 166 for(int i = 1; i <= PHASE_NUM; i++) {
YusukeWakuta 18:31722545ecf1 167 if(value < min + PhaseWidth * i&& value > min + PhaseWidth * (i - 1) )
YusukeWakuta 18:31722545ecf1 168 return i;
YusukeWakuta 18:31722545ecf1 169 }
YusukeWakuta 18:31722545ecf1 170 } else if(value <= min)
YusukeWakuta 18:31722545ecf1 171 return 0;
YusukeWakuta 18:31722545ecf1 172 else if(value>=max)
YusukeWakuta 18:31722545ecf1 173 return PHASE_NUM;
YusukeWakuta 18:31722545ecf1 174
YusukeWakuta 18:31722545ecf1 175 }
YusukeWakuta 18:31722545ecf1 176
YusukeWakuta 18:31722545ecf1 177
YusukeWakuta 15:c5ade23e5de4 178 void InputControlValues()
YusukeWakuta 15:c5ade23e5de4 179 {
YusukeWakuta 19:6387e3f02b37 180 pc.printf("Roll:%f Pitch:%f ",rollPin.read() - (OLD_ROLL_NEUTRAL - PITCH_INPUT_NEUTRAL),pitchPin.read());
YusukeWakuta 20:d4951f491642 181 float MatchedRoll = MatchRollUpperAndLower(ROLL_INPUT_MAX,ROLL_INPUT_MIN,ROLL_INPUT_NEUTRAL,rollPin.read() - (OLD_ROLL_NEUTRAL - PITCH_INPUT_NEUTRAL));
YusukeWakuta 20:d4951f491642 182 float MatchedPitch = MatchPitchUpperAndLower(PITCH_INPUT_MAX,ROLL_INPUT_MIN,PITCH_INPUT_NEUTRAL,pitchPin.read());
YusukeWakuta 20:d4951f491642 183 float FormatedEachRollR = FormatEach2Range((MatchedPitch +MatchedRoll ) / 2.0,(changedRollMax + changedPitchMax) / 2.0,(changedRollMin + changedPitchMin) / 2.0);
YusukeWakuta 18:31722545ecf1 184 float FormatSumedR = FormatSumed2Range(FormatedEachRollR);
YusukeWakuta 20:d4951f491642 185 *(int *)inputDatas_R =PhaseFloat(FormatSumedR,(changedRollMax + changedPitchMax) / 2.0,(changedRollMin + changedPitchMin) / 2.0);
YusukeWakuta 19:6387e3f02b37 186 pc.printf("FormatR:%f ",FormatSumedR);
YusukeWakuta 20:d4951f491642 187 float FormatedEachRollL = FormatEach2Range((MatchedPitch - MatchedRoll) / 2.0,(changedPitchMax - changedRollMin) /2.0,(changedPitchMin - changedRollMax) / 2.0);
YusukeWakuta 20:d4951f491642 188 pc.printf("FormatL:%f ",FormatedEachRollL);
YusukeWakuta 18:31722545ecf1 189 float FormatSumedL = FormatSumed2Range(FormatedEachRollL);
YusukeWakuta 19:6387e3f02b37 190 pc.printf("FormatL:%f ",FormatSumedL);
YusukeWakuta 20:d4951f491642 191 *(int *)inputDatas_L = PhaseFloat(FormatSumedR,changedPitchMax - changedRollMin,changedPitchMin - changedRollMax);
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 }
tsumagari 8:dbc8c87dac78 243 // toKeikiSerial.putc(cadence);
YusukeWakuta 15:c5ade23e5de4 244 // pc.printf("test\n\r");
YusukeWakuta 0:b1290ca6c4a2 245 }
tsumagari 8:dbc8c87dac78 246
YusukeWakuta 15:c5ade23e5de4 247 void init()
YusukeWakuta 15:c5ade23e5de4 248 {
tsumagari 9:c32999b4d2f9 249 //--------------------------------------(resetInterrupt init)
tsumagari 9:c32999b4d2f9 250 resetPin.rise(resetInterrupt);
tsumagari 9:c32999b4d2f9 251 resetPin.mode(PullDown);
tsumagari 9:c32999b4d2f9 252 //-----------------------------------------------------------
tsumagari 9:c32999b4d2f9 253 // sendDatasTicker.attach(SendDatas,SEND_DATAS_TIME);
YusukeWakuta 15:c5ade23e5de4 254 for(int i = 0; i < INPUT_DATAS_NUM; i++) {
taurin 2:9dc7d5f1e910 255 inputDatas_R[i] = 0;
taurin 2:9dc7d5f1e910 256 inputDatas_L[i] = 0;
taurin 2:9dc7d5f1e910 257 }
YusukeWakuta 0:b1290ca6c4a2 258 }
YusukeWakuta 0:b1290ca6c4a2 259
YusukeWakuta 15:c5ade23e5de4 260 void receiveDatas()
YusukeWakuta 15:c5ade23e5de4 261 {
YusukeWakuta 15:c5ade23e5de4 262 if(can_R.read(recmsg_R)) {
YusukeWakuta 15:c5ade23e5de4 263 for(int i = 0; i < recmsg_R.len; i++) {
YusukeWakuta 0:b1290ca6c4a2 264 yokutanDatas_R[i] = recmsg_R.data[i];
YusukeWakuta 15:c5ade23e5de4 265 // pc.printf("%c",yokutanDatas_R[i]);
YusukeWakuta 0:b1290ca6c4a2 266 }
taurin 4:4a13dd263a7b 267 myled1 = !myled1;
YusukeWakuta 0:b1290ca6c4a2 268 }
YusukeWakuta 15:c5ade23e5de4 269 if(can_L.read(recmsg_L)) {
YusukeWakuta 15:c5ade23e5de4 270 for(int i = 0; i < recmsg_L.len; i++) {
YusukeWakuta 0:b1290ca6c4a2 271 yokutanDatas_L[i] = recmsg_L.data[i];
YusukeWakuta 15:c5ade23e5de4 272 led3 = !led3;
YusukeWakuta 15:c5ade23e5de4 273 // pc.printf("%c",yokutanDatas_L[i]);
YusukeWakuta 0:b1290ca6c4a2 274 }
taurin 4:4a13dd263a7b 275 myled2 = !myled2;
YusukeWakuta 0:b1290ca6c4a2 276 }
YusukeWakuta 0:b1290ca6c4a2 277 }
YusukeWakuta 0:b1290ca6c4a2 278
YusukeWakuta 15:c5ade23e5de4 279 int main()
YusukeWakuta 15:c5ade23e5de4 280 {
YusukeWakuta 0:b1290ca6c4a2 281 init();
YusukeWakuta 15:c5ade23e5de4 282 while(1) {
tsumagari 8:dbc8c87dac78 283 InputControlValues();
tsumagari 10:b7159feb11fd 284 wait_us(5);
YusukeWakuta 0:b1290ca6c4a2 285 receiveDatas();
tsumagari 9:c32999b4d2f9 286 SendDatas();
YusukeWakuta 15:c5ade23e5de4 287 // pc.printf("%d",drug_R.read());
tsumagari 10:b7159feb11fd 288 // toString_R();
taurin 4:4a13dd263a7b 289 // toString_L();
YusukeWakuta 0:b1290ca6c4a2 290 wait(WAIT_LOOP_TIME);
YusukeWakuta 0:b1290ca6c4a2 291 }
YusukeWakuta 0:b1290ca6c4a2 292 }