2号機

Dependencies:   HCSR04 mbed

Fork of Nucleo_SS2_No2 by Rui Kato

Committer:
Morimoto448
Date:
Tue Nov 07 01:46:41 2017 +0000
Revision:
0:7e3b7c017977
Child:
1:aabe6887447c
test2

Who changed what in which revision?

UserRevisionLine numberNew 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 }