ライントレース(テスト)

Dependencies:   mbed

Fork of linetrace_test by Rui Kato

Committer:
kato8
Date:
Mon Dec 04 05:57:40 2017 +0000
Revision:
2:7b84f6d2cf63
Parent:
1:3af3d6834515
??????????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kato8 0:3a6873f917b6 1 #include "mbed.h"
kato8 0:3a6873f917b6 2
kato8 0:3a6873f917b6 3 AnalogIn photoref_L(A1); // フォトリフレクタ左
kato8 0:3a6873f917b6 4 AnalogIn photoref_M(A2); // フォトリフレクタ中央
kato8 0:3a6873f917b6 5 AnalogIn photoref_R(A3); // フォトリフレクタ右
kato8 0:3a6873f917b6 6
kato8 0:3a6873f917b6 7 PwmOut mypwm4(D4);
kato8 0:3a6873f917b6 8 PwmOut mypwm5(D6);
kato8 0:3a6873f917b6 9 PwmOut mypwm2(D2);
kato8 0:3a6873f917b6 10 PwmOut mypwm3(D3);
kato8 0:3a6873f917b6 11
kato8 1:3af3d6834515 12 #define STATE_A (0) // 前進
kato8 1:3af3d6834515 13 #define STATE_B (1) // 右旋回
kato8 1:3af3d6834515 14 #define STATE_C (2) // 左旋回
kato8 1:3af3d6834515 15 #define STATE_D (3) // 後退
kato8 1:3af3d6834515 16 #define STATE_E (4) // 左前進
kato8 1:3af3d6834515 17 #define STATE_F (5) // 右前進
kato8 1:3af3d6834515 18 #define STATE_G (6) // ブレーキ
kato8 0:3a6873f917b6 19
kato8 0:3a6873f917b6 20 void Motor(char);
kato8 2:7b84f6d2cf63 21 void LineTrace(void);
kato8 0:3a6873f917b6 22
kato8 0:3a6873f917b6 23 int main() {
kato8 0:3a6873f917b6 24 while(1) {
kato8 2:7b84f6d2cf63 25 LineTrace();
kato8 0:3a6873f917b6 26 }
kato8 0:3a6873f917b6 27 }
kato8 0:3a6873f917b6 28
kato8 2:7b84f6d2cf63 29 void LineTrace(void) { // ラインの右側でライントレース
kato8 2:7b84f6d2cf63 30 if(photoref_M > 0.5) { // センサ中央:白
kato8 2:7b84f6d2cf63 31 Motor(STATE_E); // 左前進
kato8 2:7b84f6d2cf63 32 } else { // センサ中央:黒
kato8 2:7b84f6d2cf63 33 Motor(STATE_F); // 右前進
kato8 2:7b84f6d2cf63 34 }
kato8 2:7b84f6d2cf63 35 wait_ms(50);
kato8 2:7b84f6d2cf63 36 }
kato8 2:7b84f6d2cf63 37
kato8 0:3a6873f917b6 38 void Motor(char mode) {
kato8 0:3a6873f917b6 39 switch(mode) {
kato8 2:7b84f6d2cf63 40 case STATE_A: // 前進
kato8 0:3a6873f917b6 41 // 左モータの制御
kato8 0:3a6873f917b6 42 mypwm4.pulsewidth_ms(8);
kato8 0:3a6873f917b6 43 mypwm5.pulsewidth_ms(0);
kato8 0:3a6873f917b6 44 // 右モータの制御
kato8 0:3a6873f917b6 45 mypwm2.pulsewidth_ms(8);
kato8 0:3a6873f917b6 46 mypwm3.pulsewidth_ms(0);
kato8 0:3a6873f917b6 47 break;
kato8 2:7b84f6d2cf63 48 case STATE_B: // 右旋回
kato8 2:7b84f6d2cf63 49 // 左モータの制御
kato8 2:7b84f6d2cf63 50 mypwm4.pulsewidth_ms(5);
kato8 2:7b84f6d2cf63 51 mypwm5.pulsewidth_ms(0);
kato8 2:7b84f6d2cf63 52 // 右モータの制御
kato8 2:7b84f6d2cf63 53 mypwm2.pulsewidth_ms(0);
kato8 2:7b84f6d2cf63 54 mypwm3.pulsewidth_ms(5);
kato8 2:7b84f6d2cf63 55 break;
kato8 2:7b84f6d2cf63 56 case STATE_C: // 左旋回
kato8 2:7b84f6d2cf63 57 // 左モータの制御
kato8 2:7b84f6d2cf63 58 mypwm4.pulsewidth_ms(0);
kato8 2:7b84f6d2cf63 59 mypwm5.pulsewidth_ms(5);
kato8 2:7b84f6d2cf63 60 // 右モータの制御
kato8 2:7b84f6d2cf63 61 mypwm2.pulsewidth_ms(5);
kato8 2:7b84f6d2cf63 62 mypwm3.pulsewidth_ms(0);
kato8 2:7b84f6d2cf63 63 break;
kato8 2:7b84f6d2cf63 64 case STATE_D: // 後退
kato8 2:7b84f6d2cf63 65 // 左モータの制御
kato8 2:7b84f6d2cf63 66 mypwm4.pulsewidth_ms(0);
kato8 2:7b84f6d2cf63 67 mypwm5.pulsewidth_ms(5);
kato8 2:7b84f6d2cf63 68 // 右モータの制御
kato8 2:7b84f6d2cf63 69 mypwm2.pulsewidth_ms(0);
kato8 2:7b84f6d2cf63 70 mypwm3.pulsewidth_ms(5);
kato8 2:7b84f6d2cf63 71 break;
kato8 2:7b84f6d2cf63 72 case STATE_E: // 左前進
kato8 2:7b84f6d2cf63 73 // 左モータの制御
kato8 2:7b84f6d2cf63 74 mypwm4.pulsewidth_ms(5);
kato8 2:7b84f6d2cf63 75 mypwm5.pulsewidth_ms(5);
kato8 2:7b84f6d2cf63 76 // 右モータの制御
kato8 2:7b84f6d2cf63 77 mypwm2.pulsewidth_ms(5);
kato8 2:7b84f6d2cf63 78 mypwm3.pulsewidth_ms(0);
kato8 2:7b84f6d2cf63 79 break;
kato8 2:7b84f6d2cf63 80 case STATE_F: // 右前進
kato8 2:7b84f6d2cf63 81 // 左モータの制御
kato8 2:7b84f6d2cf63 82 mypwm4.pulsewidth_ms(5);
kato8 2:7b84f6d2cf63 83 mypwm5.pulsewidth_ms(0);
kato8 2:7b84f6d2cf63 84 // 右モータの制御
kato8 2:7b84f6d2cf63 85 mypwm2.pulsewidth_ms(5);
kato8 2:7b84f6d2cf63 86 mypwm3.pulsewidth_ms(5);
kato8 2:7b84f6d2cf63 87 break;
kato8 2:7b84f6d2cf63 88 case STATE_G: // ブレーキ
kato8 2:7b84f6d2cf63 89 // 左モータの制御
kato8 2:7b84f6d2cf63 90 mypwm4.pulsewidth_ms(5);
kato8 2:7b84f6d2cf63 91 mypwm5.pulsewidth_ms(5);
kato8 2:7b84f6d2cf63 92 // 右モータの制御
kato8 2:7b84f6d2cf63 93 mypwm2.pulsewidth_ms(5);
kato8 2:7b84f6d2cf63 94 mypwm3.pulsewidth_ms(5);
kato8 2:7b84f6d2cf63 95 break;
kato8 0:3a6873f917b6 96 }
kato8 0:3a6873f917b6 97 }