SS2
/
Nucleo_SS2_No2
2号機
Fork of Nucleo_SS2_No2 by
main.cpp@2:f568ec2e6955, 2017-12-04 (annotated)
- Committer:
- ishi777
- Date:
- Mon Dec 04 05:11:53 2017 +0000
- Revision:
- 2:f568ec2e6955
- Parent:
- 1:aabe6887447c
- Child:
- 3:dd3b7c3c327b
??????????????.
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 | 1:aabe6887447c | 4 | PwmOut mypwm6(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 | 1:aabe6887447c | 9 | Timer t; |
Morimoto448 | 0:7e3b7c017977 | 10 | |
Morimoto448 | 0:7e3b7c017977 | 11 | DigitalOut myled(LED1); |
Morimoto448 | 0:7e3b7c017977 | 12 | |
Morimoto448 | 0:7e3b7c017977 | 13 | |
Morimoto448 | 0:7e3b7c017977 | 14 | #define STATE_A (0) |
Morimoto448 | 0:7e3b7c017977 | 15 | #define STATE_B (1) |
Morimoto448 | 0:7e3b7c017977 | 16 | #define STATE_C (2) |
Morimoto448 | 0:7e3b7c017977 | 17 | #define STATE_D (3) |
Morimoto448 | 0:7e3b7c017977 | 18 | #define STATE_E (4) |
ishi777 | 2:f568ec2e6955 | 19 | #define STATE_A2 (5) |
Morimoto448 | 0:7e3b7c017977 | 20 | |
Morimoto448 | 0:7e3b7c017977 | 21 | char mode; |
Morimoto448 | 0:7e3b7c017977 | 22 | int wait_flag; |
Morimoto448 | 1:aabe6887447c | 23 | int timer; |
Morimoto448 | 0:7e3b7c017977 | 24 | |
Morimoto448 | 0:7e3b7c017977 | 25 | void flg(){ |
Morimoto448 | 1:aabe6887447c | 26 | timer = t.read(); |
Morimoto448 | 0:7e3b7c017977 | 27 | } |
Morimoto448 | 0:7e3b7c017977 | 28 | |
Morimoto448 | 0:7e3b7c017977 | 29 | int main() { |
Morimoto448 | 0:7e3b7c017977 | 30 | |
Morimoto448 | 1:aabe6887447c | 31 | t.start(); |
Morimoto448 | 0:7e3b7c017977 | 32 | mode = STATE_E; |
Morimoto448 | 0:7e3b7c017977 | 33 | wait_flag = 0; |
Morimoto448 | 0:7e3b7c017977 | 34 | |
Morimoto448 | 0:7e3b7c017977 | 35 | mypwm4.period_ms(100); |
Morimoto448 | 1:aabe6887447c | 36 | mypwm6.period_ms(100); |
Morimoto448 | 0:7e3b7c017977 | 37 | mypwm2.period_ms(100); |
Morimoto448 | 0:7e3b7c017977 | 38 | mypwm3.period_ms(100); |
Morimoto448 | 0:7e3b7c017977 | 39 | |
Morimoto448 | 1:aabe6887447c | 40 | flag.attach(&flg, 1.0); |
Morimoto448 | 0:7e3b7c017977 | 41 | |
Morimoto448 | 0:7e3b7c017977 | 42 | |
Morimoto448 | 1:aabe6887447c | 43 | |
Morimoto448 | 1:aabe6887447c | 44 | while(1){ |
Morimoto448 | 1:aabe6887447c | 45 | |
Morimoto448 | 1:aabe6887447c | 46 | switch(timer) |
Morimoto448 | 1:aabe6887447c | 47 | { |
Morimoto448 | 1:aabe6887447c | 48 | case 8.0: |
Morimoto448 | 1:aabe6887447c | 49 | wait_flag = 1; |
Morimoto448 | 1:aabe6887447c | 50 | mode = STATE_A; |
Morimoto448 | 1:aabe6887447c | 51 | break; |
Morimoto448 | 1:aabe6887447c | 52 | case 13.0: |
Morimoto448 | 1:aabe6887447c | 53 | wait_flag = 1; |
Morimoto448 | 1:aabe6887447c | 54 | mode = STATE_B; |
Morimoto448 | 1:aabe6887447c | 55 | break; |
Morimoto448 | 1:aabe6887447c | 56 | case 17.0: |
Morimoto448 | 1:aabe6887447c | 57 | wait_flag = 1; |
ishi777 | 2:f568ec2e6955 | 58 | mode = STATE_A2; |
Morimoto448 | 1:aabe6887447c | 59 | break; |
ishi777 | 2:f568ec2e6955 | 60 | case 22.0: |
Morimoto448 | 1:aabe6887447c | 61 | wait_flag = 1; |
Morimoto448 | 1:aabe6887447c | 62 | mode = STATE_D; |
Morimoto448 | 1:aabe6887447c | 63 | break; |
ishi777 | 2:f568ec2e6955 | 64 | case 30.0: |
Morimoto448 | 1:aabe6887447c | 65 | wait_flag = 1; |
Morimoto448 | 1:aabe6887447c | 66 | mode = STATE_A; |
Morimoto448 | 1:aabe6887447c | 67 | break; |
ishi777 | 2:f568ec2e6955 | 68 | case 37.0: |
Morimoto448 | 1:aabe6887447c | 69 | wait_flag = 1; |
Morimoto448 | 1:aabe6887447c | 70 | mode = STATE_C; |
Morimoto448 | 1:aabe6887447c | 71 | break; |
ishi777 | 2:f568ec2e6955 | 72 | case 42.0: |
Morimoto448 | 1:aabe6887447c | 73 | wait_flag = 1; |
Morimoto448 | 1:aabe6887447c | 74 | mode = STATE_A; |
Morimoto448 | 1:aabe6887447c | 75 | break; |
Morimoto448 | 1:aabe6887447c | 76 | |
Morimoto448 | 1:aabe6887447c | 77 | } |
Morimoto448 | 1:aabe6887447c | 78 | |
Morimoto448 | 1:aabe6887447c | 79 | // 状態が切り替わるときは一時停止 |
Morimoto448 | 0:7e3b7c017977 | 80 | if(wait_flag==1) |
Morimoto448 | 0:7e3b7c017977 | 81 | { |
Morimoto448 | 0:7e3b7c017977 | 82 | // フラグの初期化 |
Morimoto448 | 0:7e3b7c017977 | 83 | wait_flag = 0; |
Morimoto448 | 0:7e3b7c017977 | 84 | myled = 0; // LED消灯 |
Morimoto448 | 0:7e3b7c017977 | 85 | // 左モータの制御 |
Morimoto448 | 0:7e3b7c017977 | 86 | mypwm4.pulsewidth_ms(80); |
Morimoto448 | 1:aabe6887447c | 87 | mypwm6.pulsewidth_ms(80); |
Morimoto448 | 0:7e3b7c017977 | 88 | // 右モータの制御 |
Morimoto448 | 0:7e3b7c017977 | 89 | mypwm2.pulsewidth_ms(80); |
Morimoto448 | 0:7e3b7c017977 | 90 | mypwm3.pulsewidth_ms(80); |
Morimoto448 | 0:7e3b7c017977 | 91 | // 500ms待機する |
Morimoto448 | 1:aabe6887447c | 92 | wait(0.5); |
Morimoto448 | 0:7e3b7c017977 | 93 | } |
Morimoto448 | 0:7e3b7c017977 | 94 | |
Morimoto448 | 0:7e3b7c017977 | 95 | switch (mode) |
Morimoto448 | 0:7e3b7c017977 | 96 | { |
Morimoto448 | 0:7e3b7c017977 | 97 | // STATE_A : 前進(左:正転 右:正転) |
Morimoto448 | 0:7e3b7c017977 | 98 | case STATE_A: |
Morimoto448 | 0:7e3b7c017977 | 99 | myled = 1; // LED点灯 |
Morimoto448 | 0:7e3b7c017977 | 100 | // 左モータの制御 |
ishi777 | 2:f568ec2e6955 | 101 | mypwm4.pulsewidth_ms(70); |
Morimoto448 | 1:aabe6887447c | 102 | mypwm6.pulsewidth_ms(0); |
Morimoto448 | 0:7e3b7c017977 | 103 | // 右モータの制御 |
ishi777 | 2:f568ec2e6955 | 104 | mypwm2.pulsewidth_ms(75); |
ishi777 | 2:f568ec2e6955 | 105 | mypwm3.pulsewidth_ms(0); |
ishi777 | 2:f568ec2e6955 | 106 | break; |
ishi777 | 2:f568ec2e6955 | 107 | // STATE_A : 前進(左:正転 右:正転) |
ishi777 | 2:f568ec2e6955 | 108 | case STATE_A2: |
ishi777 | 2:f568ec2e6955 | 109 | myled = 1; // LED点灯 |
ishi777 | 2:f568ec2e6955 | 110 | // 左モータの制御 |
ishi777 | 2:f568ec2e6955 | 111 | mypwm4.pulsewidth_ms(98); |
ishi777 | 2:f568ec2e6955 | 112 | mypwm6.pulsewidth_ms(0); |
ishi777 | 2:f568ec2e6955 | 113 | // 右モータの制御 |
ishi777 | 2:f568ec2e6955 | 114 | mypwm2.pulsewidth_ms(100); |
Morimoto448 | 0:7e3b7c017977 | 115 | mypwm3.pulsewidth_ms(0); |
Morimoto448 | 0:7e3b7c017977 | 116 | break; |
Morimoto448 | 0:7e3b7c017977 | 117 | |
Morimoto448 | 0:7e3b7c017977 | 118 | // STATE_B : 右旋回(左:正転 右:逆転) |
Morimoto448 | 0:7e3b7c017977 | 119 | case STATE_B: |
Morimoto448 | 0:7e3b7c017977 | 120 | myled = 1; // LED点灯 |
Morimoto448 | 0:7e3b7c017977 | 121 | // 左モータの制御 |
Morimoto448 | 1:aabe6887447c | 122 | mypwm4.pulsewidth_ms(50); |
Morimoto448 | 1:aabe6887447c | 123 | mypwm6.pulsewidth_ms(0); |
Morimoto448 | 0:7e3b7c017977 | 124 | // 右モータの制御 |
Morimoto448 | 0:7e3b7c017977 | 125 | mypwm2.pulsewidth_ms(0); |
Morimoto448 | 1:aabe6887447c | 126 | mypwm3.pulsewidth_ms(50); |
Morimoto448 | 0:7e3b7c017977 | 127 | break; |
Morimoto448 | 0:7e3b7c017977 | 128 | |
Morimoto448 | 0:7e3b7c017977 | 129 | // STATE_C : 左旋回(左:逆転 右:正転) |
Morimoto448 | 0:7e3b7c017977 | 130 | case STATE_C: |
Morimoto448 | 0:7e3b7c017977 | 131 | myled = 1; // LED点灯 |
Morimoto448 | 0:7e3b7c017977 | 132 | // 左モータの制御 |
Morimoto448 | 0:7e3b7c017977 | 133 | mypwm4.pulsewidth_ms(0); |
Morimoto448 | 1:aabe6887447c | 134 | mypwm6.pulsewidth_ms(50); |
Morimoto448 | 0:7e3b7c017977 | 135 | // 右モータの制御 |
Morimoto448 | 1:aabe6887447c | 136 | mypwm2.pulsewidth_ms(50); |
Morimoto448 | 0:7e3b7c017977 | 137 | mypwm3.pulsewidth_ms(0); |
Morimoto448 | 0:7e3b7c017977 | 138 | break; |
Morimoto448 | 0:7e3b7c017977 | 139 | |
Morimoto448 | 0:7e3b7c017977 | 140 | // STATE_D : 後退(左:逆転 右:逆転) |
Morimoto448 | 0:7e3b7c017977 | 141 | case STATE_D: |
Morimoto448 | 0:7e3b7c017977 | 142 | myled = 1; // LED点灯 |
Morimoto448 | 0:7e3b7c017977 | 143 | // 左モータの制御 |
Morimoto448 | 0:7e3b7c017977 | 144 | mypwm4.pulsewidth_ms(0); |
ishi777 | 2:f568ec2e6955 | 145 | mypwm6.pulsewidth_ms(80); |
Morimoto448 | 0:7e3b7c017977 | 146 | // 右モータの制御 |
Morimoto448 | 0:7e3b7c017977 | 147 | mypwm2.pulsewidth_ms(0); |
ishi777 | 2:f568ec2e6955 | 148 | mypwm3.pulsewidth_ms(83); |
Morimoto448 | 0:7e3b7c017977 | 149 | break; |
Morimoto448 | 0:7e3b7c017977 | 150 | |
Morimoto448 | 0:7e3b7c017977 | 151 | // STATE_E : ブレーキ(左:ブレーキ 右:ブレーキ) |
Morimoto448 | 0:7e3b7c017977 | 152 | case STATE_E: |
Morimoto448 | 0:7e3b7c017977 | 153 | myled = 0; // LED消灯 |
Morimoto448 | 0:7e3b7c017977 | 154 | // 左モータの制御 |
Morimoto448 | 0:7e3b7c017977 | 155 | mypwm4.pulsewidth_ms(60); |
Morimoto448 | 1:aabe6887447c | 156 | mypwm6.pulsewidth_ms(60); |
Morimoto448 | 0:7e3b7c017977 | 157 | // 右モータの制御 |
Morimoto448 | 0:7e3b7c017977 | 158 | mypwm2.pulsewidth_ms(60); |
Morimoto448 | 0:7e3b7c017977 | 159 | mypwm3.pulsewidth_ms(60); |
Morimoto448 | 0:7e3b7c017977 | 160 | break; |
Morimoto448 | 0:7e3b7c017977 | 161 | } |
Morimoto448 | 0:7e3b7c017977 | 162 | } |
Morimoto448 | 0:7e3b7c017977 | 163 | |
Morimoto448 | 0:7e3b7c017977 | 164 | } |