mech / Mbed 2 deprecated Line_Trace_Pro_NEW11

Dependencies:   mbed

Committer:
isshikiyuya
Date:
Thu Dec 20 04:11:51 2018 +0000
Revision:
4:282471928d78
Parent:
3:55588b59ab29
Child:
5:8a0721428fa7
NEW

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