Rui Kato
/
Nucleo_SS2_No2
2号機
Fork of Nucleo_SS2 by
Diff: main.cpp
- Revision:
- 1:aabe6887447c
- Parent:
- 0:7e3b7c017977
- Child:
- 2:f568ec2e6955
diff -r 7e3b7c017977 -r aabe6887447c main.cpp --- a/main.cpp Tue Nov 07 01:46:41 2017 +0000 +++ b/main.cpp Mon Dec 04 04:30:44 2017 +0000 @@ -1,11 +1,12 @@ #include "mbed.h" PwmOut mypwm4(D4); -PwmOut mypwm5(D6); +PwmOut mypwm6(D6); PwmOut mypwm2(D2); PwmOut mypwm3(D3); Ticker flag; +Timer t; DigitalOut myled(LED1); @@ -18,42 +19,63 @@ char mode; int wait_flag; +int timer; void flg(){ - wait_flag = 1; - switch(mode){ - case STATE_A: - mode = STATE_B; - break; - case STATE_B: - mode = STATE_C; - break; - case STATE_C: - mode = STATE_D; - break; - case STATE_D: - mode = STATE_E; - break; - case STATE_E: - mode = STATE_A; - break; - } + timer = t.read(); } int main() { +t.start(); mode = STATE_E; wait_flag = 0; mypwm4.period_ms(100); -mypwm5.period_ms(100); +mypwm6.period_ms(100); mypwm2.period_ms(100); mypwm3.period_ms(100); -flag.attach(&flg, 2.0); +flag.attach(&flg, 1.0); - // 状態が切り替わるときは一時停止 + +while(1){ + + switch(timer) +{ + case 8.0: + wait_flag = 1; + mode = STATE_A; + break; + case 13.0: + wait_flag = 1; + mode = STATE_B; + break; + case 17.0: + wait_flag = 1; + mode = STATE_A; + break; + case 27.0: + wait_flag = 1; + mode = STATE_D; + break; + case 42.0: + wait_flag = 1; + mode = STATE_A; + break; + case 50.0: + wait_flag = 1; + mode = STATE_C; + break; + case 54.0: + wait_flag = 1; + mode = STATE_A; + break; + +} + +// 状態が切り替わるときは一時停止 if(wait_flag==1) { // フラグの初期化 @@ -61,26 +83,24 @@ myled = 0; // LED消灯 // 左モータの制御 mypwm4.pulsewidth_ms(80); - mypwm5.pulsewidth_ms(80); + mypwm6.pulsewidth_ms(80); // 右モータの制御 mypwm2.pulsewidth_ms(80); mypwm3.pulsewidth_ms(80); // 500ms待機する - wait(800); + wait(0.5); } -while(1){ - switch (mode) { // STATE_A : 前進(左:正転 右:正転) case STATE_A: myled = 1; // LED点灯 // 左モータの制御 - mypwm4.pulsewidth_ms(30); - mypwm5.pulsewidth_ms(0); + mypwm4.pulsewidth_ms(50); + mypwm6.pulsewidth_ms(0); // 右モータの制御 - mypwm2.pulsewidth_ms(30); + mypwm2.pulsewidth_ms(53); mypwm3.pulsewidth_ms(0); break; @@ -88,11 +108,11 @@ case STATE_B: myled = 1; // LED点灯 // 左モータの制御 - mypwm4.pulsewidth_ms(30); - mypwm5.pulsewidth_ms(0); + mypwm4.pulsewidth_ms(50); + mypwm6.pulsewidth_ms(0); // 右モータの制御 mypwm2.pulsewidth_ms(0); - mypwm3.pulsewidth_ms(30); + mypwm3.pulsewidth_ms(50); break; // STATE_C : 左旋回(左:逆転 右:正転) @@ -100,9 +120,9 @@ myled = 1; // LED点灯 // 左モータの制御 mypwm4.pulsewidth_ms(0); - mypwm5.pulsewidth_ms(30); + mypwm6.pulsewidth_ms(50); // 右モータの制御 - mypwm2.pulsewidth_ms(30); + mypwm2.pulsewidth_ms(50); mypwm3.pulsewidth_ms(0); break; @@ -111,10 +131,10 @@ myled = 1; // LED点灯 // 左モータの制御 mypwm4.pulsewidth_ms(0); - mypwm5.pulsewidth_ms(30); + mypwm6.pulsewidth_ms(50); // 右モータの制御 mypwm2.pulsewidth_ms(0); - mypwm3.pulsewidth_ms(30); + mypwm3.pulsewidth_ms(50); break; // STATE_E : ブレーキ(左:ブレーキ 右:ブレーキ) @@ -122,7 +142,7 @@ myled = 0; // LED消灯 // 左モータの制御 mypwm4.pulsewidth_ms(60); - mypwm5.pulsewidth_ms(60); + mypwm6.pulsewidth_ms(60); // 右モータの制御 mypwm2.pulsewidth_ms(60); mypwm3.pulsewidth_ms(60);