ライントレース(テスト)
Dependencies: mbed
Fork of linetrace_test by
main.cpp@2:7b84f6d2cf63, 2017-12-04 (annotated)
- Committer:
- kato8
- Date:
- Mon Dec 04 05:57:40 2017 +0000
- Revision:
- 2:7b84f6d2cf63
- Parent:
- 1:3af3d6834515
??????????????????
Who changed what in which revision?
User | Revision | Line number | New 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 | } |