Rui Kato
/
Nucleo_SS2_No2
2号機
Fork of Nucleo_SS2 by
main.cpp@0:7e3b7c017977, 2017-11-07 (annotated)
- Committer:
- Morimoto448
- Date:
- Tue Nov 07 01:46:41 2017 +0000
- Revision:
- 0:7e3b7c017977
- Child:
- 1:aabe6887447c
test2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Morimoto448 | 0:7e3b7c017977 | 1 | #include "mbed.h" |
Morimoto448 | 0:7e3b7c017977 | 2 | |
Morimoto448 | 0:7e3b7c017977 | 3 | PwmOut mypwm4(D4); |
Morimoto448 | 0:7e3b7c017977 | 4 | PwmOut mypwm5(D6); |
Morimoto448 | 0:7e3b7c017977 | 5 | PwmOut mypwm2(D2); |
Morimoto448 | 0:7e3b7c017977 | 6 | PwmOut mypwm3(D3); |
Morimoto448 | 0:7e3b7c017977 | 7 | |
Morimoto448 | 0:7e3b7c017977 | 8 | Ticker flag; |
Morimoto448 | 0:7e3b7c017977 | 9 | |
Morimoto448 | 0:7e3b7c017977 | 10 | DigitalOut myled(LED1); |
Morimoto448 | 0:7e3b7c017977 | 11 | |
Morimoto448 | 0:7e3b7c017977 | 12 | |
Morimoto448 | 0:7e3b7c017977 | 13 | #define STATE_A (0) |
Morimoto448 | 0:7e3b7c017977 | 14 | #define STATE_B (1) |
Morimoto448 | 0:7e3b7c017977 | 15 | #define STATE_C (2) |
Morimoto448 | 0:7e3b7c017977 | 16 | #define STATE_D (3) |
Morimoto448 | 0:7e3b7c017977 | 17 | #define STATE_E (4) |
Morimoto448 | 0:7e3b7c017977 | 18 | |
Morimoto448 | 0:7e3b7c017977 | 19 | char mode; |
Morimoto448 | 0:7e3b7c017977 | 20 | int wait_flag; |
Morimoto448 | 0:7e3b7c017977 | 21 | |
Morimoto448 | 0:7e3b7c017977 | 22 | void flg(){ |
Morimoto448 | 0:7e3b7c017977 | 23 | wait_flag = 1; |
Morimoto448 | 0:7e3b7c017977 | 24 | switch(mode){ |
Morimoto448 | 0:7e3b7c017977 | 25 | case STATE_A: |
Morimoto448 | 0:7e3b7c017977 | 26 | mode = STATE_B; |
Morimoto448 | 0:7e3b7c017977 | 27 | break; |
Morimoto448 | 0:7e3b7c017977 | 28 | case STATE_B: |
Morimoto448 | 0:7e3b7c017977 | 29 | mode = STATE_C; |
Morimoto448 | 0:7e3b7c017977 | 30 | break; |
Morimoto448 | 0:7e3b7c017977 | 31 | case STATE_C: |
Morimoto448 | 0:7e3b7c017977 | 32 | mode = STATE_D; |
Morimoto448 | 0:7e3b7c017977 | 33 | break; |
Morimoto448 | 0:7e3b7c017977 | 34 | case STATE_D: |
Morimoto448 | 0:7e3b7c017977 | 35 | mode = STATE_E; |
Morimoto448 | 0:7e3b7c017977 | 36 | break; |
Morimoto448 | 0:7e3b7c017977 | 37 | case STATE_E: |
Morimoto448 | 0:7e3b7c017977 | 38 | mode = STATE_A; |
Morimoto448 | 0:7e3b7c017977 | 39 | break; |
Morimoto448 | 0:7e3b7c017977 | 40 | } |
Morimoto448 | 0:7e3b7c017977 | 41 | } |
Morimoto448 | 0:7e3b7c017977 | 42 | |
Morimoto448 | 0:7e3b7c017977 | 43 | int main() { |
Morimoto448 | 0:7e3b7c017977 | 44 | |
Morimoto448 | 0:7e3b7c017977 | 45 | mode = STATE_E; |
Morimoto448 | 0:7e3b7c017977 | 46 | wait_flag = 0; |
Morimoto448 | 0:7e3b7c017977 | 47 | |
Morimoto448 | 0:7e3b7c017977 | 48 | mypwm4.period_ms(100); |
Morimoto448 | 0:7e3b7c017977 | 49 | mypwm5.period_ms(100); |
Morimoto448 | 0:7e3b7c017977 | 50 | mypwm2.period_ms(100); |
Morimoto448 | 0:7e3b7c017977 | 51 | mypwm3.period_ms(100); |
Morimoto448 | 0:7e3b7c017977 | 52 | |
Morimoto448 | 0:7e3b7c017977 | 53 | flag.attach(&flg, 2.0); |
Morimoto448 | 0:7e3b7c017977 | 54 | |
Morimoto448 | 0:7e3b7c017977 | 55 | |
Morimoto448 | 0:7e3b7c017977 | 56 | // 状態が切り替わるときは一時停止 |
Morimoto448 | 0:7e3b7c017977 | 57 | if(wait_flag==1) |
Morimoto448 | 0:7e3b7c017977 | 58 | { |
Morimoto448 | 0:7e3b7c017977 | 59 | // フラグの初期化 |
Morimoto448 | 0:7e3b7c017977 | 60 | wait_flag = 0; |
Morimoto448 | 0:7e3b7c017977 | 61 | myled = 0; // LED消灯 |
Morimoto448 | 0:7e3b7c017977 | 62 | // 左モータの制御 |
Morimoto448 | 0:7e3b7c017977 | 63 | mypwm4.pulsewidth_ms(80); |
Morimoto448 | 0:7e3b7c017977 | 64 | mypwm5.pulsewidth_ms(80); |
Morimoto448 | 0:7e3b7c017977 | 65 | // 右モータの制御 |
Morimoto448 | 0:7e3b7c017977 | 66 | mypwm2.pulsewidth_ms(80); |
Morimoto448 | 0:7e3b7c017977 | 67 | mypwm3.pulsewidth_ms(80); |
Morimoto448 | 0:7e3b7c017977 | 68 | // 500ms待機する |
Morimoto448 | 0:7e3b7c017977 | 69 | wait(800); |
Morimoto448 | 0:7e3b7c017977 | 70 | } |
Morimoto448 | 0:7e3b7c017977 | 71 | |
Morimoto448 | 0:7e3b7c017977 | 72 | while(1){ |
Morimoto448 | 0:7e3b7c017977 | 73 | |
Morimoto448 | 0:7e3b7c017977 | 74 | switch (mode) |
Morimoto448 | 0:7e3b7c017977 | 75 | { |
Morimoto448 | 0:7e3b7c017977 | 76 | // STATE_A : 前進(左:正転 右:正転) |
Morimoto448 | 0:7e3b7c017977 | 77 | case STATE_A: |
Morimoto448 | 0:7e3b7c017977 | 78 | myled = 1; // LED点灯 |
Morimoto448 | 0:7e3b7c017977 | 79 | // 左モータの制御 |
Morimoto448 | 0:7e3b7c017977 | 80 | mypwm4.pulsewidth_ms(30); |
Morimoto448 | 0:7e3b7c017977 | 81 | mypwm5.pulsewidth_ms(0); |
Morimoto448 | 0:7e3b7c017977 | 82 | // 右モータの制御 |
Morimoto448 | 0:7e3b7c017977 | 83 | mypwm2.pulsewidth_ms(30); |
Morimoto448 | 0:7e3b7c017977 | 84 | mypwm3.pulsewidth_ms(0); |
Morimoto448 | 0:7e3b7c017977 | 85 | break; |
Morimoto448 | 0:7e3b7c017977 | 86 | |
Morimoto448 | 0:7e3b7c017977 | 87 | // STATE_B : 右旋回(左:正転 右:逆転) |
Morimoto448 | 0:7e3b7c017977 | 88 | case STATE_B: |
Morimoto448 | 0:7e3b7c017977 | 89 | myled = 1; // LED点灯 |
Morimoto448 | 0:7e3b7c017977 | 90 | // 左モータの制御 |
Morimoto448 | 0:7e3b7c017977 | 91 | mypwm4.pulsewidth_ms(30); |
Morimoto448 | 0:7e3b7c017977 | 92 | mypwm5.pulsewidth_ms(0); |
Morimoto448 | 0:7e3b7c017977 | 93 | // 右モータの制御 |
Morimoto448 | 0:7e3b7c017977 | 94 | mypwm2.pulsewidth_ms(0); |
Morimoto448 | 0:7e3b7c017977 | 95 | mypwm3.pulsewidth_ms(30); |
Morimoto448 | 0:7e3b7c017977 | 96 | break; |
Morimoto448 | 0:7e3b7c017977 | 97 | |
Morimoto448 | 0:7e3b7c017977 | 98 | // STATE_C : 左旋回(左:逆転 右:正転) |
Morimoto448 | 0:7e3b7c017977 | 99 | case STATE_C: |
Morimoto448 | 0:7e3b7c017977 | 100 | myled = 1; // LED点灯 |
Morimoto448 | 0:7e3b7c017977 | 101 | // 左モータの制御 |
Morimoto448 | 0:7e3b7c017977 | 102 | mypwm4.pulsewidth_ms(0); |
Morimoto448 | 0:7e3b7c017977 | 103 | mypwm5.pulsewidth_ms(30); |
Morimoto448 | 0:7e3b7c017977 | 104 | // 右モータの制御 |
Morimoto448 | 0:7e3b7c017977 | 105 | mypwm2.pulsewidth_ms(30); |
Morimoto448 | 0:7e3b7c017977 | 106 | mypwm3.pulsewidth_ms(0); |
Morimoto448 | 0:7e3b7c017977 | 107 | break; |
Morimoto448 | 0:7e3b7c017977 | 108 | |
Morimoto448 | 0:7e3b7c017977 | 109 | // STATE_D : 後退(左:逆転 右:逆転) |
Morimoto448 | 0:7e3b7c017977 | 110 | case STATE_D: |
Morimoto448 | 0:7e3b7c017977 | 111 | myled = 1; // LED点灯 |
Morimoto448 | 0:7e3b7c017977 | 112 | // 左モータの制御 |
Morimoto448 | 0:7e3b7c017977 | 113 | mypwm4.pulsewidth_ms(0); |
Morimoto448 | 0:7e3b7c017977 | 114 | mypwm5.pulsewidth_ms(30); |
Morimoto448 | 0:7e3b7c017977 | 115 | // 右モータの制御 |
Morimoto448 | 0:7e3b7c017977 | 116 | mypwm2.pulsewidth_ms(0); |
Morimoto448 | 0:7e3b7c017977 | 117 | mypwm3.pulsewidth_ms(30); |
Morimoto448 | 0:7e3b7c017977 | 118 | break; |
Morimoto448 | 0:7e3b7c017977 | 119 | |
Morimoto448 | 0:7e3b7c017977 | 120 | // STATE_E : ブレーキ(左:ブレーキ 右:ブレーキ) |
Morimoto448 | 0:7e3b7c017977 | 121 | case STATE_E: |
Morimoto448 | 0:7e3b7c017977 | 122 | myled = 0; // LED消灯 |
Morimoto448 | 0:7e3b7c017977 | 123 | // 左モータの制御 |
Morimoto448 | 0:7e3b7c017977 | 124 | mypwm4.pulsewidth_ms(60); |
Morimoto448 | 0:7e3b7c017977 | 125 | mypwm5.pulsewidth_ms(60); |
Morimoto448 | 0:7e3b7c017977 | 126 | // 右モータの制御 |
Morimoto448 | 0:7e3b7c017977 | 127 | mypwm2.pulsewidth_ms(60); |
Morimoto448 | 0:7e3b7c017977 | 128 | mypwm3.pulsewidth_ms(60); |
Morimoto448 | 0:7e3b7c017977 | 129 | break; |
Morimoto448 | 0:7e3b7c017977 | 130 | } |
Morimoto448 | 0:7e3b7c017977 | 131 | } |
Morimoto448 | 0:7e3b7c017977 | 132 | |
Morimoto448 | 0:7e3b7c017977 | 133 | } |