Dependencies:   mbed HCSR04

Files at this revision

API Documentation at this revision

Comitter:
Tomo1213
Date:
Tue Dec 21 00:59:40 2021 +0000
Parent:
8:dd676df43fe7
Commit message:
hobokansei

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r dd676df43fe7 -r 71b780f8d345 main.cpp
--- a/main.cpp	Mon Dec 20 23:49:12 2021 +0000
+++ b/main.cpp	Tue Dec 21 00:59:40 2021 +0000
@@ -19,7 +19,7 @@
 #define DEC_CLEAN 1000
 
 #define KICK 2000
-#define CLEAN_OFFSET 30
+#define CLEAN_OFFSET 3
 
 #define WALL 45
 #define WALL_MIN 25
@@ -32,7 +32,9 @@
 DigitalOut led4(LED4);
  
 Timer t;
+Timer Clean_right;
 double Time = 0;
+double Clean_right_time = 0;
 
 Serial pc(USBTX, USBRX);
 char Serialdata;
@@ -191,16 +193,21 @@
     Init_Pos = ActPos;//起動時の角度を保存
     t.reset();
     t.start();
+    Clean_right.reset();
+    
 
     //set_MODE_T();
 
     printf("\nstart\r\n");
+    LED = 0b1111;
 
     while(1){
                 
         Time = t.read();
+        Clean_right_time = Clean_right.read();
+        
         //pc.printf("state_1:%d  state_2:%d\r\n",state_1,state_2);
-        pc.printf("state_1:%d state_2:%d ACT:%d TMP:%d \r\n",state_1,state_2,ActPos,X_DIST_TMP);
+        pc.printf("state_1:%d state_2:%d ACT:%d TMP:%d \r\n",state_1,state_2,dist3,X_DIST_TMP);
         readActPos(1);
         ActPos=canmsgRx.data[4]+canmsgRx.data[5]*256+canmsgRx.data[6]*65536;
         if(ActPos > 8388608){
@@ -220,12 +227,15 @@
             }else{   
                 if(ActPos < (Init_Pos - KICK)){ //前入力検出
                     ride_count++; 
+                    LED = 0b0111;
                     state_1 = 1;
                 }else if(ActPos > (Init_Pos + KICK)){ //右入力検出
                     ride_count++;
+                    LED = LED = 0b1101;;
                     state_1 = 11;
                 }else{
                     set_MODE_T();
+                    LED = 0b1111;
                 }
             }
             
@@ -233,6 +243,7 @@
             if(dist1 < WALL && dist1 >= WALL_MIN){
                 vel_stop();
                 wait(GETOFF_TIME);
+                LED = 0b1011;
                 state_1 = 2;
             }else{
                 set_ACC(ACC_RIDE);//加速度設定
@@ -243,6 +254,7 @@
         }else if(state_1 == 2){//前進からの帰還フェーズ
             if(ActPos > -3000){
                 vel_stop();
+                LED = 0b1111;
                 t.reset();
                 t.start();
                 state_1 = 0;
@@ -254,6 +266,7 @@
             if(dist3 < WALL && dist3 >= WALL_MIN){
                 vel_stop();
                 wait(GETOFF_TIME);
+                LED = 0b1110;
                 state_1 = 12;
             }else{
                 set_ACC(ACC_RIDE);//加速度設定
@@ -264,6 +277,7 @@
         }else if(state_1 == 12){//右進からの帰還フェーズ
             if(ActPos < 3000){
                 vel_stop();
+                LED = 1111;
                 t.reset();
                 t.start();
                 state_1 = 0;
@@ -283,18 +297,17 @@
                     vel_forward_con(RPM_CLEAN);//前進速度指令
                 }   
             }else if(state_2 == 1){
-                if((X_DIST_TMP - dist3) > CLEAN_OFFSET){
-                    state_2 == 2;
+                if(dist3 < WALL && dist3 >= WALL_MIN){
+                    state_2 = 4;
                 }else{
-                    if(dist3 < WALL && dist3 >= WALL_MIN){
-                        state_2 = 4;
-                    }else{
-                        set_ACC(ACC_CLEAN);//加速度設定
-                        set_DEC(DEC_CLEAN);//減速度設定
-                        set_MODE_V();//速度制御モード送信
-                        vel_right(RPM_CLEAN);//右進速度指令
-                    }
+                    set_ACC(ACC_CLEAN);//加速度設定
+                    set_DEC(DEC_CLEAN);//減速度設定
+                    set_MODE_V();//速度制御モード送信
+                    vel_right(RPM_CLEAN);//右進速度指令
+                    wait(CLEAN_OFFSET);
+                    state_2 = 2;
                 }
+                
             }else if(state_2 == 2){
                 if(ActPos > -3000){
                     state_2 = 3;
@@ -305,18 +318,16 @@
                     vel_backward_con(RPM_CLEAN);//後進速度指令
                 }
             }else if(state_2 == 3){
-                if((X_DIST_TMP - dist3) > CLEAN_OFFSET){
-                    state_2 == 0;
+                if(dist3 < WALL && dist3 >= WALL_MIN){
+                    state_2 = 4;
                 }else{
-                    if(dist3 < WALL && dist3 >= WALL_MIN){
-                        state_2 = 4;
-                    }else{
                     set_ACC(ACC_CLEAN);//加速度設定
                     set_DEC(DEC_CLEAN);//減速度設定
                     set_MODE_V();//速度制御モード送信
                     vel_right(RPM_CLEAN);//右進速度指令
-                    }
-                } 
+                    wait(CLEAN_OFFSET);
+                    state_2 = 0;
+                }
             }else if(state_2 == 4){
                 if(ActPos < 3000){
                     state_2 = 5;