2号機

Dependencies:   HCSR04 mbed

Fork of Nucleo_SS2_No2 by Rui Kato

Revision:
1:aabe6887447c
Parent:
0:7e3b7c017977
Child:
2:f568ec2e6955
--- 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);