Rui Kato
/
Nucleo_SS2_No2
2号機
Fork of Nucleo_SS2 by
main.cpp
- Committer:
- Morimoto448
- Date:
- 2017-11-07
- Revision:
- 0:7e3b7c017977
- Child:
- 1:aabe6887447c
File content as of revision 0:7e3b7c017977:
#include "mbed.h" PwmOut mypwm4(D4); PwmOut mypwm5(D6); PwmOut mypwm2(D2); PwmOut mypwm3(D3); Ticker flag; DigitalOut myled(LED1); #define STATE_A (0) #define STATE_B (1) #define STATE_C (2) #define STATE_D (3) #define STATE_E (4) char mode; int wait_flag; 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; } } int main() { mode = STATE_E; wait_flag = 0; mypwm4.period_ms(100); mypwm5.period_ms(100); mypwm2.period_ms(100); mypwm3.period_ms(100); flag.attach(&flg, 2.0); // 状態が切り替わるときは一時停止 if(wait_flag==1) { // フラグの初期化 wait_flag = 0; myled = 0; // LED消灯 // 左モータの制御 mypwm4.pulsewidth_ms(80); mypwm5.pulsewidth_ms(80); // 右モータの制御 mypwm2.pulsewidth_ms(80); mypwm3.pulsewidth_ms(80); // 500ms待機する wait(800); } while(1){ switch (mode) { // STATE_A : 前進(左:正転 右:正転) case STATE_A: myled = 1; // LED点灯 // 左モータの制御 mypwm4.pulsewidth_ms(30); mypwm5.pulsewidth_ms(0); // 右モータの制御 mypwm2.pulsewidth_ms(30); mypwm3.pulsewidth_ms(0); break; // STATE_B : 右旋回(左:正転 右:逆転) case STATE_B: myled = 1; // LED点灯 // 左モータの制御 mypwm4.pulsewidth_ms(30); mypwm5.pulsewidth_ms(0); // 右モータの制御 mypwm2.pulsewidth_ms(0); mypwm3.pulsewidth_ms(30); break; // STATE_C : 左旋回(左:逆転 右:正転) case STATE_C: myled = 1; // LED点灯 // 左モータの制御 mypwm4.pulsewidth_ms(0); mypwm5.pulsewidth_ms(30); // 右モータの制御 mypwm2.pulsewidth_ms(30); mypwm3.pulsewidth_ms(0); break; // STATE_D : 後退(左:逆転 右:逆転) case STATE_D: myled = 1; // LED点灯 // 左モータの制御 mypwm4.pulsewidth_ms(0); mypwm5.pulsewidth_ms(30); // 右モータの制御 mypwm2.pulsewidth_ms(0); mypwm3.pulsewidth_ms(30); break; // STATE_E : ブレーキ(左:ブレーキ 右:ブレーキ) case STATE_E: myled = 0; // LED消灯 // 左モータの制御 mypwm4.pulsewidth_ms(60); mypwm5.pulsewidth_ms(60); // 右モータの制御 mypwm2.pulsewidth_ms(60); mypwm3.pulsewidth_ms(60); break; } } }