mech / Mbed 2 deprecated Line_Trace_Pro_NEW11

Dependencies:   mbed

Committer:
isshikiyuya
Date:
Thu Jan 10 03:17:28 2019 +0000
Revision:
5:8a0721428fa7
Parent:
4:282471928d78
aa

Who changed what in which revision?

UserRevisionLine numberNew contents of line
isshikiyuya 0:7a6b6c687fa3 1 #include "function.h"
isshikiyuya 0:7a6b6c687fa3 2
isshikiyuya 0:7a6b6c687fa3 3 PwmOut pwm11(D5); //左正転
isshikiyuya 0:7a6b6c687fa3 4 PwmOut pwm12(D1); //左逆転
isshikiyuya 0:7a6b6c687fa3 5 PwmOut pwm21(D6); //右正転
isshikiyuya 0:7a6b6c687fa3 6 PwmOut pwm22(D9); //右逆転
isshikiyuya 0:7a6b6c687fa3 7 DigitalOut LED(D2);
isshikiyuya 0:7a6b6c687fa3 8 InterruptIn button1(A2); //フォトインタラプタ左
isshikiyuya 0:7a6b6c687fa3 9 InterruptIn button2(A1); //フォトインタラプタ右
isshikiyuya 0:7a6b6c687fa3 10 AnalogIn in1(A6); //フォトリフレクタ左
isshikiyuya 0:7a6b6c687fa3 11 AnalogIn in2(A4); //フォトリフレクタ真ん中
isshikiyuya 0:7a6b6c687fa3 12 AnalogIn in3(A3); //フォトリフレクタ右
isshikiyuya 0:7a6b6c687fa3 13
isshikiyuya 0:7a6b6c687fa3 14 float g = 0.0f;
isshikiyuya 0:7a6b6c687fa3 15 float gain1 = 0.0f;
isshikiyuya 0:7a6b6c687fa3 16 float gain2 = 0.0f;
isshikiyuya 0:7a6b6c687fa3 17 float dif1 = 0.0f;
isshikiyuya 0:7a6b6c687fa3 18 float dif2 = 0.0f;
isshikiyuya 0:7a6b6c687fa3 19 float thr1 = 0.40f;
isshikiyuya 0:7a6b6c687fa3 20 float thr2 = 0.40f;
isshikiyuya 0:7a6b6c687fa3 21 float thr3 = 0.40f;
isshikiyuya 0:7a6b6c687fa3 22 int judge1 = 0;
isshikiyuya 0:7a6b6c687fa3 23 int judge2 = 0;
isshikiyuya 0:7a6b6c687fa3 24 int judge3 = 0;
isshikiyuya 0:7a6b6c687fa3 25
isshikiyuya 0:7a6b6c687fa3 26 int main() {
isshikiyuya 0:7a6b6c687fa3 27 pwm11.period(0.01f); //100Hz
isshikiyuya 0:7a6b6c687fa3 28 pwm12.period(0.01f); //100Hz
isshikiyuya 0:7a6b6c687fa3 29 pwm21.period(0.01f); //100Hz
isshikiyuya 0:7a6b6c687fa3 30 pwm22.period(0.01f); //100Hz
isshikiyuya 0:7a6b6c687fa3 31 button1.rise(&flip1);
isshikiyuya 0:7a6b6c687fa3 32 button2.rise(&flip2);
isshikiyuya 0:7a6b6c687fa3 33 int n;//3biteで状態を表現
isshikiyuya 0:7a6b6c687fa3 34
isshikiyuya 0:7a6b6c687fa3 35 flipper.attach(&flip3,0.05);//0.1秒ごとに回転数cを更新
isshikiyuya 0:7a6b6c687fa3 36
isshikiyuya 0:7a6b6c687fa3 37 while(1) {
isshikiyuya 5:8a0721428fa7 38 if( led_count1 + led_count2 > 1000){ //200mm毎にLEDを点滅
isshikiyuya 0:7a6b6c687fa3 39 LED = 1.0f;
isshikiyuya 5:8a0721428fa7 40 wait(0.01f);
isshikiyuya 0:7a6b6c687fa3 41 LED = 0;
isshikiyuya 0:7a6b6c687fa3 42 led_count1 = 0;
isshikiyuya 0:7a6b6c687fa3 43 led_count2 = 0;
isshikiyuya 0:7a6b6c687fa3 44 }
isshikiyuya 4:282471928d78 45
isshikiyuya 0:7a6b6c687fa3 46 //////////////////floatのinをintのjudgeに変換
isshikiyuya 0:7a6b6c687fa3 47 if(in1 > thr1){
isshikiyuya 0:7a6b6c687fa3 48 judge1 = 1;
isshikiyuya 0:7a6b6c687fa3 49 }
isshikiyuya 0:7a6b6c687fa3 50 else{
isshikiyuya 0:7a6b6c687fa3 51 judge1 = 0;
isshikiyuya 0:7a6b6c687fa3 52 }
isshikiyuya 0:7a6b6c687fa3 53 if(in2 > thr2){
isshikiyuya 0:7a6b6c687fa3 54 judge2 = 1;
isshikiyuya 0:7a6b6c687fa3 55 }
isshikiyuya 0:7a6b6c687fa3 56 else{
isshikiyuya 0:7a6b6c687fa3 57 judge2 = 0;
isshikiyuya 0:7a6b6c687fa3 58 }
isshikiyuya 0:7a6b6c687fa3 59 if(in3 > thr3){
isshikiyuya 0:7a6b6c687fa3 60 judge3 = 1;
isshikiyuya 0:7a6b6c687fa3 61 }
isshikiyuya 0:7a6b6c687fa3 62 else{
isshikiyuya 0:7a6b6c687fa3 63 judge3 = 0;
isshikiyuya 0:7a6b6c687fa3 64 }
isshikiyuya 0:7a6b6c687fa3 65 /////////////////
isshikiyuya 0:7a6b6c687fa3 66 n = judge1 + judge2*2 + judge3*4;
isshikiyuya 4:282471928d78 67 distance = (distance1 + distance2) / 2;
isshikiyuya 5:8a0721428fa7 68
isshikiyuya 5:8a0721428fa7 69 if(distance < 43*12*10 ){//直線
isshikiyuya 4:282471928d78 70
isshikiyuya 4:282471928d78 71 switch(n){
isshikiyuya 4:282471928d78 72 case(2)://白黒白ゆっくり進む
isshikiyuya 4:282471928d78 73 g = 500.0f;
isshikiyuya 4:282471928d78 74 dif1 = g - c1;
isshikiyuya 4:282471928d78 75 dif2 = g - c2;
isshikiyuya 4:282471928d78 76 gain1 = 0.0006f;
isshikiyuya 4:282471928d78 77 gain2 = 0.0006f;
isshikiyuya 5:8a0721428fa7 78 pwm11.write(0.70f + dif1*gain1);
isshikiyuya 4:282471928d78 79 pwm12.write(0.30f);
isshikiyuya 5:8a0721428fa7 80 pwm21.write(0.70f + dif2*gain2);
isshikiyuya 4:282471928d78 81 pwm22.write(0.30f);
isshikiyuya 4:282471928d78 82 break;
isshikiyuya 4:282471928d78 83
isshikiyuya 4:282471928d78 84 case(0)://白白白バック
isshikiyuya 4:282471928d78 85 g = 500.0f;
isshikiyuya 4:282471928d78 86 dif1 = g - c1;
isshikiyuya 4:282471928d78 87 dif2 = g - c2;
isshikiyuya 4:282471928d78 88 gain1 = 0.0018f;
isshikiyuya 4:282471928d78 89 gain2 = 0.0018f;
isshikiyuya 4:282471928d78 90
isshikiyuya 4:282471928d78 91 pwm11.write(0.10f);
isshikiyuya 4:282471928d78 92 pwm12.write(0.30f +dif1*gain1);
isshikiyuya 4:282471928d78 93 pwm21.write(0.10f);
isshikiyuya 4:282471928d78 94 pwm22.write(0.30f +dif2*gain2);
isshikiyuya 4:282471928d78 95 break;
isshikiyuya 4:282471928d78 96
isshikiyuya 4:282471928d78 97
isshikiyuya 4:282471928d78 98
isshikiyuya 4:282471928d78 99 case(1)://黒白白左回転かなり強
isshikiyuya 4:282471928d78 100 g = 500.0f;
isshikiyuya 4:282471928d78 101 dif1 = g - c1;
isshikiyuya 4:282471928d78 102 dif2 = g - c2;
isshikiyuya 4:282471928d78 103 gain1 = 0.0007f;
isshikiyuya 4:282471928d78 104 gain2 = 0.0007f;
isshikiyuya 4:282471928d78 105
isshikiyuya 4:282471928d78 106 pwm11.write(0.20f + dif1*gain1);
isshikiyuya 4:282471928d78 107 pwm12.write(0.20f);
isshikiyuya 4:282471928d78 108 pwm21.write(0.70f + dif2*gain2);
isshikiyuya 4:282471928d78 109 pwm22.write(0.20f);
isshikiyuya 4:282471928d78 110 break;
isshikiyuya 4:282471928d78 111
isshikiyuya 4:282471928d78 112 case(4)://白白黒右回転かなり強
isshikiyuya 4:282471928d78 113 g = 500.0f;
isshikiyuya 4:282471928d78 114 dif1 = g - c1;
isshikiyuya 4:282471928d78 115 dif2 = g - c2;
isshikiyuya 4:282471928d78 116 gain1 = 0.0007f;
isshikiyuya 4:282471928d78 117 gain2 = 0.0007f;
isshikiyuya 4:282471928d78 118
isshikiyuya 4:282471928d78 119 pwm11.write(0.70f + dif1*gain1);
isshikiyuya 4:282471928d78 120 pwm12.write(0.20f);
isshikiyuya 4:282471928d78 121 pwm21.write(0.20f);
isshikiyuya 4:282471928d78 122 pwm22.write(0.20f + dif2*gain2);
isshikiyuya 4:282471928d78 123 break;
isshikiyuya 4:282471928d78 124
isshikiyuya 4:282471928d78 125 case(3)://黒黒白左回転強
isshikiyuya 4:282471928d78 126 g = 500.0f;
isshikiyuya 4:282471928d78 127 dif1 = g - c1;
isshikiyuya 4:282471928d78 128 dif2 = g - c2;
isshikiyuya 4:282471928d78 129 gain1 = 0.0007f;
isshikiyuya 4:282471928d78 130 gain2 = 0.0007f;
isshikiyuya 4:282471928d78 131
isshikiyuya 4:282471928d78 132 pwm11.write(0.20f);
isshikiyuya 4:282471928d78 133 pwm12.write(0.20f);
isshikiyuya 4:282471928d78 134 pwm21.write(0.70f + dif2*gain2);
isshikiyuya 4:282471928d78 135 pwm22.write(0.20f);
isshikiyuya 4:282471928d78 136 break;
isshikiyuya 4:282471928d78 137
isshikiyuya 4:282471928d78 138 case(6)://白黒黒右回転強
isshikiyuya 4:282471928d78 139 g = 500.0f;
isshikiyuya 4:282471928d78 140 dif1 = g - c1;
isshikiyuya 4:282471928d78 141 dif2 = g - c2;
isshikiyuya 4:282471928d78 142 gain1 = 0.0007f;
isshikiyuya 4:282471928d78 143 gain2 = 0.0007f;
isshikiyuya 4:282471928d78 144
isshikiyuya 4:282471928d78 145 pwm11.write(0.70f + dif1*gain1);
isshikiyuya 4:282471928d78 146 pwm12.write(0.20f);
isshikiyuya 4:282471928d78 147 pwm21.write(0.20f);
isshikiyuya 4:282471928d78 148 pwm22.write(0.20f);
isshikiyuya 4:282471928d78 149 break;
isshikiyuya 4:282471928d78 150
isshikiyuya 4:282471928d78 151 case(7)://黒黒黒ゆっくり
isshikiyuya 4:282471928d78 152 dif1 = g - c1;
isshikiyuya 4:282471928d78 153 dif2 = g - c2;
isshikiyuya 4:282471928d78 154 gain1 = 0.0002f;
isshikiyuya 4:282471928d78 155 gain2 = 0.0002f;
isshikiyuya 4:282471928d78 156
isshikiyuya 5:8a0721428fa7 157 pwm11.write(0.70f + dif1*gain1);
isshikiyuya 4:282471928d78 158 pwm12.write(0.30f);
isshikiyuya 5:8a0721428fa7 159 pwm21.write(0.70f + dif2*gain2);
isshikiyuya 4:282471928d78 160 pwm22.write(0.30f);
isshikiyuya 4:282471928d78 161 break;
isshikiyuya 4:282471928d78 162
isshikiyuya 4:282471928d78 163 default://それ以外(多分ないけど)
isshikiyuya 4:282471928d78 164 pwm11.write(0.10f);
isshikiyuya 4:282471928d78 165 pwm12.write(0.50f);
isshikiyuya 4:282471928d78 166 pwm21.write(0.10f);
isshikiyuya 4:282471928d78 167 pwm22.write(0.50f);
isshikiyuya 4:282471928d78 168 break;
isshikiyuya 4:282471928d78 169
isshikiyuya 4:282471928d78 170 }
isshikiyuya 4:282471928d78 171 }
isshikiyuya 4:282471928d78 172
isshikiyuya 5:8a0721428fa7 173 /* else if(43*12*10< distance && distance< 43*12*13 ){
isshikiyuya 4:282471928d78 174
isshikiyuya 0:7a6b6c687fa3 175 switch(n){
isshikiyuya 0:7a6b6c687fa3 176 case(2)://白黒白ゆっくり進む
isshikiyuya 0:7a6b6c687fa3 177 g = 500.0f;
isshikiyuya 1:f6b396987546 178 dif1 = g - c1;
isshikiyuya 1:f6b396987546 179 dif2 = g - c2;
isshikiyuya 0:7a6b6c687fa3 180 gain1 = 0.0006f;
isshikiyuya 0:7a6b6c687fa3 181 gain2 = 0.0006f;
isshikiyuya 1:f6b396987546 182 pwm11.write(0.50f + dif1*gain1);
isshikiyuya 0:7a6b6c687fa3 183 pwm12.write(0.30f);
isshikiyuya 1:f6b396987546 184 pwm21.write(0.50f + dif2*gain2);
isshikiyuya 0:7a6b6c687fa3 185 pwm22.write(0.30f);
isshikiyuya 0:7a6b6c687fa3 186 break;
isshikiyuya 0:7a6b6c687fa3 187
isshikiyuya 0:7a6b6c687fa3 188 case(0)://白白白バック
isshikiyuya 0:7a6b6c687fa3 189 g = 500.0f;
isshikiyuya 0:7a6b6c687fa3 190 dif1 = g - c1;
isshikiyuya 0:7a6b6c687fa3 191 dif2 = g - c2;
isshikiyuya 4:282471928d78 192 gain1 = 0.0018f;
isshikiyuya 4:282471928d78 193 gain2 = 0.0018f;
isshikiyuya 0:7a6b6c687fa3 194
isshikiyuya 0:7a6b6c687fa3 195 pwm11.write(0.10f);
isshikiyuya 2:fef6e8a45d71 196 pwm12.write(0.30f +dif1*gain1);
isshikiyuya 0:7a6b6c687fa3 197 pwm21.write(0.10f);
isshikiyuya 2:fef6e8a45d71 198 pwm22.write(0.30f +dif2*gain2);
isshikiyuya 0:7a6b6c687fa3 199 break;
isshikiyuya 0:7a6b6c687fa3 200
isshikiyuya 0:7a6b6c687fa3 201
isshikiyuya 0:7a6b6c687fa3 202
isshikiyuya 0:7a6b6c687fa3 203 case(1)://黒白白左回転かなり強
isshikiyuya 0:7a6b6c687fa3 204 g = 500.0f;
isshikiyuya 0:7a6b6c687fa3 205 dif1 = g - c1;
isshikiyuya 0:7a6b6c687fa3 206 dif2 = g - c2;
isshikiyuya 3:55588b59ab29 207 gain1 = 0.0007f;
isshikiyuya 3:55588b59ab29 208 gain2 = 0.0007f;
isshikiyuya 0:7a6b6c687fa3 209
isshikiyuya 3:55588b59ab29 210 pwm11.write(0.20f + dif1*gain1);
isshikiyuya 3:55588b59ab29 211 pwm12.write(0.20f);
isshikiyuya 3:55588b59ab29 212 pwm21.write(0.70f + dif2*gain2);
isshikiyuya 3:55588b59ab29 213 pwm22.write(0.20f);
isshikiyuya 0:7a6b6c687fa3 214 break;
isshikiyuya 0:7a6b6c687fa3 215
isshikiyuya 0:7a6b6c687fa3 216 case(4)://白白黒右回転かなり強
isshikiyuya 0:7a6b6c687fa3 217 g = 500.0f;
isshikiyuya 0:7a6b6c687fa3 218 dif1 = g - c1;
isshikiyuya 0:7a6b6c687fa3 219 dif2 = g - c2;
isshikiyuya 3:55588b59ab29 220 gain1 = 0.0007f;
isshikiyuya 3:55588b59ab29 221 gain2 = 0.0007f;
isshikiyuya 0:7a6b6c687fa3 222
isshikiyuya 3:55588b59ab29 223 pwm11.write(0.70f + dif1*gain1);
isshikiyuya 3:55588b59ab29 224 pwm12.write(0.20f);
isshikiyuya 3:55588b59ab29 225 pwm21.write(0.20f);
isshikiyuya 3:55588b59ab29 226 pwm22.write(0.20f + dif2*gain2);
isshikiyuya 0:7a6b6c687fa3 227 break;
isshikiyuya 0:7a6b6c687fa3 228
isshikiyuya 0:7a6b6c687fa3 229 case(3)://黒黒白左回転強
isshikiyuya 0:7a6b6c687fa3 230 g = 500.0f;
isshikiyuya 0:7a6b6c687fa3 231 dif1 = g - c1;
isshikiyuya 0:7a6b6c687fa3 232 dif2 = g - c2;
isshikiyuya 3:55588b59ab29 233 gain1 = 0.0007f;
isshikiyuya 3:55588b59ab29 234 gain2 = 0.0007f;
isshikiyuya 0:7a6b6c687fa3 235
isshikiyuya 3:55588b59ab29 236 pwm11.write(0.20f);
isshikiyuya 3:55588b59ab29 237 pwm12.write(0.20f);
isshikiyuya 2:fef6e8a45d71 238 pwm21.write(0.70f + dif2*gain2);
isshikiyuya 0:7a6b6c687fa3 239 pwm22.write(0.20f);
isshikiyuya 0:7a6b6c687fa3 240 break;
isshikiyuya 0:7a6b6c687fa3 241
isshikiyuya 0:7a6b6c687fa3 242 case(6)://白黒黒右回転強
isshikiyuya 0:7a6b6c687fa3 243 g = 500.0f;
isshikiyuya 0:7a6b6c687fa3 244 dif1 = g - c1;
isshikiyuya 0:7a6b6c687fa3 245 dif2 = g - c2;
isshikiyuya 3:55588b59ab29 246 gain1 = 0.0007f;
isshikiyuya 3:55588b59ab29 247 gain2 = 0.0007f;
isshikiyuya 0:7a6b6c687fa3 248
isshikiyuya 2:fef6e8a45d71 249 pwm11.write(0.70f + dif1*gain1);
isshikiyuya 0:7a6b6c687fa3 250 pwm12.write(0.20f);
isshikiyuya 3:55588b59ab29 251 pwm21.write(0.20f);
isshikiyuya 3:55588b59ab29 252 pwm22.write(0.20f);
isshikiyuya 0:7a6b6c687fa3 253 break;
isshikiyuya 0:7a6b6c687fa3 254
isshikiyuya 0:7a6b6c687fa3 255 case(7)://黒黒黒ゆっくり
isshikiyuya 0:7a6b6c687fa3 256 dif1 = g - c1;
isshikiyuya 0:7a6b6c687fa3 257 dif2 = g - c2;
isshikiyuya 1:f6b396987546 258 gain1 = 0.0002f;
isshikiyuya 1:f6b396987546 259 gain2 = 0.0002f;
isshikiyuya 0:7a6b6c687fa3 260
isshikiyuya 1:f6b396987546 261 pwm11.write(0.50f + dif1*gain1);
isshikiyuya 0:7a6b6c687fa3 262 pwm12.write(0.30f);
isshikiyuya 1:f6b396987546 263 pwm21.write(0.50f + dif2*gain2);
isshikiyuya 0:7a6b6c687fa3 264 pwm22.write(0.30f);
isshikiyuya 0:7a6b6c687fa3 265 break;
isshikiyuya 0:7a6b6c687fa3 266
isshikiyuya 0:7a6b6c687fa3 267 default://それ以外(多分ないけど)
isshikiyuya 0:7a6b6c687fa3 268 pwm11.write(0.10f);
isshikiyuya 3:55588b59ab29 269 pwm12.write(0.50f);
isshikiyuya 0:7a6b6c687fa3 270 pwm21.write(0.10f);
isshikiyuya 3:55588b59ab29 271 pwm22.write(0.50f);
isshikiyuya 0:7a6b6c687fa3 272 break;
isshikiyuya 0:7a6b6c687fa3 273
isshikiyuya 0:7a6b6c687fa3 274 }
isshikiyuya 0:7a6b6c687fa3 275 }
isshikiyuya 5:8a0721428fa7 276 */
isshikiyuya 5:8a0721428fa7 277 else if(43*12*10 < distance && distance < 43*12*18){
isshikiyuya 4:282471928d78 278 switch(n){
isshikiyuya 4:282471928d78 279 case(2)://白黒白ゆっくり進む
isshikiyuya 4:282471928d78 280 g = 500.0f;
isshikiyuya 4:282471928d78 281 dif1 = g - c1;
isshikiyuya 4:282471928d78 282 dif2 = g - c2;
isshikiyuya 5:8a0721428fa7 283 gain1 = 0.0013f;
isshikiyuya 5:8a0721428fa7 284 gain2 = 0.0013f;
isshikiyuya 5:8a0721428fa7 285 pwm11.write(0.45f + dif1*gain1);
isshikiyuya 5:8a0721428fa7 286 pwm12.write(0.30f);
isshikiyuya 5:8a0721428fa7 287 pwm21.write(0.45f + dif2*gain2);
isshikiyuya 5:8a0721428fa7 288 pwm22.write(0.30f);
isshikiyuya 5:8a0721428fa7 289 break;
isshikiyuya 5:8a0721428fa7 290
isshikiyuya 5:8a0721428fa7 291 case(0)://白白白バック
isshikiyuya 5:8a0721428fa7 292 g = 500.0f;
isshikiyuya 5:8a0721428fa7 293 dif1 = g - c1;
isshikiyuya 5:8a0721428fa7 294 dif2 = g - c2;
isshikiyuya 5:8a0721428fa7 295 gain1 = 0.002f;
isshikiyuya 5:8a0721428fa7 296 gain2 = 0.002f;
isshikiyuya 5:8a0721428fa7 297
isshikiyuya 5:8a0721428fa7 298 pwm11.write(0.10f);
isshikiyuya 5:8a0721428fa7 299 pwm12.write(0.30f +dif1*gain1);
isshikiyuya 5:8a0721428fa7 300 pwm21.write(0.10f);
isshikiyuya 5:8a0721428fa7 301 pwm22.write(0.30f +dif2*gain2);
isshikiyuya 5:8a0721428fa7 302 break;
isshikiyuya 5:8a0721428fa7 303
isshikiyuya 5:8a0721428fa7 304
isshikiyuya 5:8a0721428fa7 305
isshikiyuya 5:8a0721428fa7 306 case(1)://黒白白左回転かなり強
isshikiyuya 5:8a0721428fa7 307 g = 500.0f;
isshikiyuya 5:8a0721428fa7 308 dif1 = g - c1;
isshikiyuya 5:8a0721428fa7 309 dif2 = g - c2;
isshikiyuya 5:8a0721428fa7 310 gain1 = 0.001f;
isshikiyuya 5:8a0721428fa7 311 gain2 = 0.001f;
isshikiyuya 5:8a0721428fa7 312
isshikiyuya 5:8a0721428fa7 313 pwm11.write(0.20f + dif1*gain1);
isshikiyuya 5:8a0721428fa7 314 pwm12.write(0.20f);
isshikiyuya 5:8a0721428fa7 315 pwm21.write(0.55f + dif2*gain2);
isshikiyuya 5:8a0721428fa7 316 pwm22.write(0.20f);
isshikiyuya 5:8a0721428fa7 317 break;
isshikiyuya 5:8a0721428fa7 318
isshikiyuya 5:8a0721428fa7 319 case(4)://白白黒右回転かなり強
isshikiyuya 5:8a0721428fa7 320 g = 500.0f;
isshikiyuya 5:8a0721428fa7 321 dif1 = g - c1;
isshikiyuya 5:8a0721428fa7 322 dif2 = g - c2;
isshikiyuya 4:282471928d78 323 gain1 = 0.001f;
isshikiyuya 4:282471928d78 324 gain2 = 0.001f;
isshikiyuya 5:8a0721428fa7 325
isshikiyuya 5:8a0721428fa7 326 pwm11.write(0.55f + dif1*gain1);
isshikiyuya 5:8a0721428fa7 327 pwm12.write(0.20f);
isshikiyuya 5:8a0721428fa7 328 pwm21.write(0.20f);
isshikiyuya 5:8a0721428fa7 329 pwm22.write(0.20f + dif2*gain2);
isshikiyuya 5:8a0721428fa7 330 break;
isshikiyuya 5:8a0721428fa7 331
isshikiyuya 5:8a0721428fa7 332 case(3)://黒黒白左回転強
isshikiyuya 5:8a0721428fa7 333 g = 500.0f;
isshikiyuya 5:8a0721428fa7 334 dif1 = g - c1;
isshikiyuya 5:8a0721428fa7 335 dif2 = g - c2;
isshikiyuya 5:8a0721428fa7 336 gain1 = 0.001f;
isshikiyuya 5:8a0721428fa7 337 gain2 = 0.001f;
isshikiyuya 5:8a0721428fa7 338
isshikiyuya 5:8a0721428fa7 339 pwm11.write(0.20f);
isshikiyuya 5:8a0721428fa7 340 pwm12.write(0.20f);
isshikiyuya 5:8a0721428fa7 341 pwm21.write(0.55f + dif2*gain2);
isshikiyuya 5:8a0721428fa7 342 pwm22.write(0.20f);
isshikiyuya 5:8a0721428fa7 343 break;
isshikiyuya 5:8a0721428fa7 344
isshikiyuya 5:8a0721428fa7 345 case(6)://白黒黒右回転強
isshikiyuya 5:8a0721428fa7 346 g = 500.0f;
isshikiyuya 5:8a0721428fa7 347 dif1 = g - c1;
isshikiyuya 5:8a0721428fa7 348 dif2 = g - c2;
isshikiyuya 5:8a0721428fa7 349 gain1 = 0.001f;
isshikiyuya 5:8a0721428fa7 350 gain2 = 0.001f;
isshikiyuya 5:8a0721428fa7 351
isshikiyuya 5:8a0721428fa7 352 pwm11.write(0.55f + dif1*gain1);
isshikiyuya 5:8a0721428fa7 353 pwm12.write(0.20f);
isshikiyuya 5:8a0721428fa7 354 pwm21.write(0.20f);
isshikiyuya 5:8a0721428fa7 355 pwm22.write(0.20f);
isshikiyuya 5:8a0721428fa7 356 break;
isshikiyuya 5:8a0721428fa7 357
isshikiyuya 5:8a0721428fa7 358 case(7)://黒黒黒ゆっくり
isshikiyuya 5:8a0721428fa7 359 dif1 = g - c1;
isshikiyuya 5:8a0721428fa7 360 dif2 = g - c2;
isshikiyuya 5:8a0721428fa7 361 gain1 = 0.0013f;
isshikiyuya 5:8a0721428fa7 362 gain2 = 0.0013f;
isshikiyuya 5:8a0721428fa7 363
isshikiyuya 5:8a0721428fa7 364 pwm11.write(0.45f + dif1*gain1);
isshikiyuya 4:282471928d78 365 pwm12.write(0.30f);
isshikiyuya 5:8a0721428fa7 366 pwm21.write(0.45f + dif2*gain2);
isshikiyuya 5:8a0721428fa7 367 pwm22.write(0.30f);
isshikiyuya 5:8a0721428fa7 368 break;
isshikiyuya 5:8a0721428fa7 369
isshikiyuya 5:8a0721428fa7 370 default://それ以外(多分ないけど)
isshikiyuya 5:8a0721428fa7 371 pwm11.write(0.10f);
isshikiyuya 5:8a0721428fa7 372 pwm12.write(0.50f);
isshikiyuya 5:8a0721428fa7 373 pwm21.write(0.10f);
isshikiyuya 5:8a0721428fa7 374 pwm22.write(0.50f);
isshikiyuya 5:8a0721428fa7 375 break;
isshikiyuya 5:8a0721428fa7 376 }
isshikiyuya 5:8a0721428fa7 377 }
isshikiyuya 5:8a0721428fa7 378
isshikiyuya 5:8a0721428fa7 379
isshikiyuya 5:8a0721428fa7 380 else if(43*12*18 < distance && distance < 43*12*24){//第二直線
isshikiyuya 5:8a0721428fa7 381 switch(n){
isshikiyuya 5:8a0721428fa7 382 case(2)://白黒白ゆっくり進む
isshikiyuya 5:8a0721428fa7 383 g = 500.0f;
isshikiyuya 5:8a0721428fa7 384 dif1 = g - c1;
isshikiyuya 5:8a0721428fa7 385 dif2 = g - c2;
isshikiyuya 5:8a0721428fa7 386 gain1 = 0.0007f;
isshikiyuya 5:8a0721428fa7 387 gain2 = 0.0007f;
isshikiyuya 5:8a0721428fa7 388 pwm11.write(0.70f + dif1*gain1);
isshikiyuya 5:8a0721428fa7 389 pwm12.write(0.30f);
isshikiyuya 5:8a0721428fa7 390 pwm21.write(0.70f + dif2*gain2);
isshikiyuya 4:282471928d78 391 pwm22.write(0.30f);
isshikiyuya 4:282471928d78 392 break;
isshikiyuya 4:282471928d78 393
isshikiyuya 4:282471928d78 394 case(0)://白白白バック
isshikiyuya 4:282471928d78 395 g = 500.0f;
isshikiyuya 4:282471928d78 396 dif1 = g - c1;
isshikiyuya 4:282471928d78 397 dif2 = g - c2;
isshikiyuya 4:282471928d78 398 gain1 = 0.0018f;
isshikiyuya 4:282471928d78 399 gain2 = 0.0018f;
isshikiyuya 4:282471928d78 400
isshikiyuya 4:282471928d78 401 pwm11.write(0.10f);
isshikiyuya 4:282471928d78 402 pwm12.write(0.30f +dif1*gain1);
isshikiyuya 4:282471928d78 403 pwm21.write(0.10f);
isshikiyuya 4:282471928d78 404 pwm22.write(0.30f +dif2*gain2);
isshikiyuya 4:282471928d78 405 break;
isshikiyuya 4:282471928d78 406
isshikiyuya 4:282471928d78 407
isshikiyuya 4:282471928d78 408
isshikiyuya 4:282471928d78 409 case(1)://黒白白左回転かなり強
isshikiyuya 4:282471928d78 410 g = 500.0f;
isshikiyuya 4:282471928d78 411 dif1 = g - c1;
isshikiyuya 4:282471928d78 412 dif2 = g - c2;
isshikiyuya 4:282471928d78 413 gain1 = 0.0007f;
isshikiyuya 4:282471928d78 414 gain2 = 0.0007f;
isshikiyuya 4:282471928d78 415
isshikiyuya 4:282471928d78 416 pwm11.write(0.20f + dif1*gain1);
isshikiyuya 4:282471928d78 417 pwm12.write(0.20f);
isshikiyuya 4:282471928d78 418 pwm21.write(0.50f + dif2*gain2);
isshikiyuya 4:282471928d78 419 pwm22.write(0.20f);
isshikiyuya 4:282471928d78 420 break;
isshikiyuya 4:282471928d78 421
isshikiyuya 4:282471928d78 422 case(4)://白白黒右回転かなり強
isshikiyuya 4:282471928d78 423 g = 500.0f;
isshikiyuya 4:282471928d78 424 dif1 = g - c1;
isshikiyuya 4:282471928d78 425 dif2 = g - c2;
isshikiyuya 4:282471928d78 426 gain1 = 0.0007f;
isshikiyuya 4:282471928d78 427 gain2 = 0.0007f;
isshikiyuya 4:282471928d78 428
isshikiyuya 4:282471928d78 429 pwm11.write(0.50f + dif1*gain1);
isshikiyuya 4:282471928d78 430 pwm12.write(0.20f);
isshikiyuya 4:282471928d78 431 pwm21.write(0.20f);
isshikiyuya 4:282471928d78 432 pwm22.write(0.20f + dif2*gain2);
isshikiyuya 4:282471928d78 433 break;
isshikiyuya 4:282471928d78 434
isshikiyuya 4:282471928d78 435 case(3)://黒黒白左回転強
isshikiyuya 4:282471928d78 436 g = 500.0f;
isshikiyuya 4:282471928d78 437 dif1 = g - c1;
isshikiyuya 4:282471928d78 438 dif2 = g - c2;
isshikiyuya 4:282471928d78 439 gain1 = 0.0007f;
isshikiyuya 4:282471928d78 440 gain2 = 0.0007f;
isshikiyuya 4:282471928d78 441
isshikiyuya 4:282471928d78 442 pwm11.write(0.20f);
isshikiyuya 4:282471928d78 443 pwm12.write(0.20f);
isshikiyuya 4:282471928d78 444 pwm21.write(0.50f + dif2*gain2);
isshikiyuya 4:282471928d78 445 pwm22.write(0.20f);
isshikiyuya 4:282471928d78 446 break;
isshikiyuya 4:282471928d78 447
isshikiyuya 4:282471928d78 448 case(6)://白黒黒右回転強
isshikiyuya 4:282471928d78 449 g = 500.0f;
isshikiyuya 4:282471928d78 450 dif1 = g - c1;
isshikiyuya 4:282471928d78 451 dif2 = g - c2;
isshikiyuya 4:282471928d78 452 gain1 = 0.0007f;
isshikiyuya 4:282471928d78 453 gain2 = 0.0007f;
isshikiyuya 4:282471928d78 454
isshikiyuya 4:282471928d78 455 pwm11.write(0.50f + dif1*gain1);
isshikiyuya 4:282471928d78 456 pwm12.write(0.20f);
isshikiyuya 4:282471928d78 457 pwm21.write(0.20f);
isshikiyuya 4:282471928d78 458 pwm22.write(0.20f);
isshikiyuya 4:282471928d78 459 break;
isshikiyuya 4:282471928d78 460
isshikiyuya 4:282471928d78 461 case(7)://黒黒黒ゆっくり
isshikiyuya 4:282471928d78 462 dif1 = g - c1;
isshikiyuya 4:282471928d78 463 dif2 = g - c2;
isshikiyuya 4:282471928d78 464 gain1 = 0.001f;
isshikiyuya 4:282471928d78 465 gain2 = 0.001f;
isshikiyuya 4:282471928d78 466
isshikiyuya 5:8a0721428fa7 467 pwm11.write(0.60f + dif1*gain1);
isshikiyuya 4:282471928d78 468 pwm12.write(0.30f);
isshikiyuya 5:8a0721428fa7 469 pwm21.write(0.60f + dif2*gain2);
isshikiyuya 4:282471928d78 470 pwm22.write(0.30f);
isshikiyuya 4:282471928d78 471 break;
isshikiyuya 4:282471928d78 472
isshikiyuya 4:282471928d78 473 default://それ以外(多分ないけど)
isshikiyuya 4:282471928d78 474 pwm11.write(0.10f);
isshikiyuya 4:282471928d78 475 pwm12.write(0.50f);
isshikiyuya 4:282471928d78 476 pwm21.write(0.10f);
isshikiyuya 4:282471928d78 477 pwm22.write(0.50f);
isshikiyuya 4:282471928d78 478 break;
isshikiyuya 4:282471928d78 479 }
isshikiyuya 4:282471928d78 480 }
isshikiyuya 4:282471928d78 481
isshikiyuya 4:282471928d78 482
isshikiyuya 4:282471928d78 483
isshikiyuya 4:282471928d78 484 else if(distance>43*12*24){
isshikiyuya 4:282471928d78 485
isshikiyuya 4:282471928d78 486 switch(n){
isshikiyuya 4:282471928d78 487 case(2)://白黒白ゆっくり進む
isshikiyuya 4:282471928d78 488 g = 500.0f;
isshikiyuya 4:282471928d78 489 dif1 = g - c1;
isshikiyuya 4:282471928d78 490 dif2 = g - c2;
isshikiyuya 5:8a0721428fa7 491 gain1 = 0.0013f;
isshikiyuya 5:8a0721428fa7 492 gain2 = 0.0013f;
isshikiyuya 5:8a0721428fa7 493 pwm11.write(0.45f + dif1*gain1);
isshikiyuya 4:282471928d78 494 pwm12.write(0.30f);
isshikiyuya 5:8a0721428fa7 495 pwm21.write(0.45f + dif2*gain2);
isshikiyuya 4:282471928d78 496 pwm22.write(0.30f);
isshikiyuya 4:282471928d78 497 break;
isshikiyuya 4:282471928d78 498
isshikiyuya 4:282471928d78 499 case(0)://白白白バック
isshikiyuya 4:282471928d78 500 g = 500.0f;
isshikiyuya 4:282471928d78 501 dif1 = g - c1;
isshikiyuya 4:282471928d78 502 dif2 = g - c2;
isshikiyuya 5:8a0721428fa7 503 gain1 = 0.002f;
isshikiyuya 5:8a0721428fa7 504 gain2 = 0.002f;
isshikiyuya 4:282471928d78 505
isshikiyuya 4:282471928d78 506 pwm11.write(0.10f);
isshikiyuya 4:282471928d78 507 pwm12.write(0.30f +dif1*gain1);
isshikiyuya 4:282471928d78 508 pwm21.write(0.10f);
isshikiyuya 4:282471928d78 509 pwm22.write(0.30f +dif2*gain2);
isshikiyuya 4:282471928d78 510 break;
isshikiyuya 4:282471928d78 511
isshikiyuya 4:282471928d78 512
isshikiyuya 4:282471928d78 513
isshikiyuya 4:282471928d78 514 case(1)://黒白白左回転かなり強
isshikiyuya 4:282471928d78 515 g = 500.0f;
isshikiyuya 4:282471928d78 516 dif1 = g - c1;
isshikiyuya 4:282471928d78 517 dif2 = g - c2;
isshikiyuya 5:8a0721428fa7 518 gain1 = 0.0011f;
isshikiyuya 5:8a0721428fa7 519 gain2 = 0.0011f;
isshikiyuya 4:282471928d78 520
isshikiyuya 4:282471928d78 521 pwm11.write(0.20f + dif1*gain1);
isshikiyuya 4:282471928d78 522 pwm12.write(0.20f);
isshikiyuya 5:8a0721428fa7 523 pwm21.write(0.60f + dif2*gain2);
isshikiyuya 4:282471928d78 524 pwm22.write(0.20f);
isshikiyuya 4:282471928d78 525 break;
isshikiyuya 4:282471928d78 526
isshikiyuya 4:282471928d78 527 case(4)://白白黒右回転かなり強
isshikiyuya 4:282471928d78 528 g = 500.0f;
isshikiyuya 4:282471928d78 529 dif1 = g - c1;
isshikiyuya 4:282471928d78 530 dif2 = g - c2;
isshikiyuya 5:8a0721428fa7 531 gain1 = 0.0011f;
isshikiyuya 5:8a0721428fa7 532 gain2 = 0.0011f;
isshikiyuya 4:282471928d78 533
isshikiyuya 5:8a0721428fa7 534 pwm11.write(0.60f + dif1*gain1);
isshikiyuya 4:282471928d78 535 pwm12.write(0.20f);
isshikiyuya 4:282471928d78 536 pwm21.write(0.20f);
isshikiyuya 4:282471928d78 537 pwm22.write(0.20f + dif2*gain2);
isshikiyuya 4:282471928d78 538 break;
isshikiyuya 4:282471928d78 539
isshikiyuya 4:282471928d78 540 case(3)://黒黒白左回転強
isshikiyuya 4:282471928d78 541 g = 500.0f;
isshikiyuya 4:282471928d78 542 dif1 = g - c1;
isshikiyuya 4:282471928d78 543 dif2 = g - c2;
isshikiyuya 5:8a0721428fa7 544 gain1 = 0.0011f;
isshikiyuya 5:8a0721428fa7 545 gain2 = 0.0011f;
isshikiyuya 4:282471928d78 546
isshikiyuya 4:282471928d78 547 pwm11.write(0.20f);
isshikiyuya 4:282471928d78 548 pwm12.write(0.20f);
isshikiyuya 5:8a0721428fa7 549 pwm21.write(0.60f + dif2*gain2);
isshikiyuya 4:282471928d78 550 pwm22.write(0.20f);
isshikiyuya 4:282471928d78 551 break;
isshikiyuya 4:282471928d78 552
isshikiyuya 4:282471928d78 553 case(6)://白黒黒右回転強
isshikiyuya 4:282471928d78 554 g = 500.0f;
isshikiyuya 4:282471928d78 555 dif1 = g - c1;
isshikiyuya 4:282471928d78 556 dif2 = g - c2;
isshikiyuya 5:8a0721428fa7 557 gain1 = 0.0011f;
isshikiyuya 5:8a0721428fa7 558 gain2 = 0.0011f;
isshikiyuya 4:282471928d78 559
isshikiyuya 5:8a0721428fa7 560 pwm11.write(0.60f + dif1*gain1);
isshikiyuya 4:282471928d78 561 pwm12.write(0.20f);
isshikiyuya 4:282471928d78 562 pwm21.write(0.20f);
isshikiyuya 4:282471928d78 563 pwm22.write(0.20f);
isshikiyuya 4:282471928d78 564 break;
isshikiyuya 4:282471928d78 565
isshikiyuya 4:282471928d78 566 case(7)://黒黒黒ゆっくり
isshikiyuya 4:282471928d78 567 dif1 = g - c1;
isshikiyuya 4:282471928d78 568 dif2 = g - c2;
isshikiyuya 5:8a0721428fa7 569 gain1 = 0.0013f;
isshikiyuya 5:8a0721428fa7 570 gain2 = 0.0013f;
isshikiyuya 4:282471928d78 571
isshikiyuya 5:8a0721428fa7 572 pwm11.write(0.45f + dif1*gain1);
isshikiyuya 4:282471928d78 573 pwm12.write(0.30f);
isshikiyuya 5:8a0721428fa7 574 pwm21.write(0.45f + dif2*gain2);
isshikiyuya 4:282471928d78 575 pwm22.write(0.30f);
isshikiyuya 4:282471928d78 576 break;
isshikiyuya 4:282471928d78 577
isshikiyuya 4:282471928d78 578 default://それ以外(多分ないけど)
isshikiyuya 4:282471928d78 579 pwm11.write(0.10f);
isshikiyuya 4:282471928d78 580 pwm12.write(0.50f);
isshikiyuya 4:282471928d78 581 pwm21.write(0.10f);
isshikiyuya 4:282471928d78 582 pwm22.write(0.50f);
isshikiyuya 4:282471928d78 583 break;
isshikiyuya 4:282471928d78 584 }
isshikiyuya 4:282471928d78 585 }
isshikiyuya 4:282471928d78 586
isshikiyuya 4:282471928d78 587
isshikiyuya 4:282471928d78 588 }
isshikiyuya 4:282471928d78 589 }