mech / Mbed OS Shiken_3
Revision:
6:9bd1da494e0b
Parent:
5:237c49800e14
Child:
7:de699a50fc63
--- a/main.cpp	Mon Dec 17 12:02:19 2018 +0000
+++ b/main.cpp	Tue Dec 18 19:04:49 2018 +0000
@@ -11,7 +11,8 @@
 AnalogIn   in2(A4);         //フォトリフレクタ真ん中
 AnalogIn   in3(A3);         //フォトリフレクタ右
 
-float g = 0.0f;//目標値(パルス数)
+float g1 = 0.0f;//目標値(パルス数)
+float g2 = 0.0f;//目標値(パルス数)
 float gain1 = 0.0f;//左ゲイン
 float gain2 = 0.0f;//右ゲイン
 float dif1 = 0.0f;//目標との差左
@@ -25,6 +26,7 @@
 int mode1 = 10;
 int mode2 = 2;
 int mode3 = 2;
+int curve_num = 1;
 
 int main() {
     pwm11.period(0.01f);  //100Hz
@@ -41,7 +43,7 @@
     while(1) {
         distance = (distance1+distance2)/2;
         
-        if(distance < 43*2*12*mode1){
+       // if(distance < 43*2*12*mode1){
         /*
         if(  led_count1 + led_count2 > 43*2*12){ //200mm毎にLEDを点滅
         LED = 1.0f;
@@ -75,78 +77,162 @@
         
             switch(n){
               case(2)://白黒白進む
-              g = 500.0f;
-              gain1 = g - c1;
-              gain2 = g - c2;
+              g1 = 500.0f;
+              g2 = 500.0f;
+              dif1 = g1 - c1;
+              dif2 = g2 - c2;
+            
+              pwm11.write(0.35f);
+              pwm12.write(0.10f);
+              pwm21.write(0.35f);
+              pwm22.write(0.10f);
+              break;
+              
+            
+              case(1)://黒白白左回転強
+              
+              pwm11.write(0.30f);
+              pwm12.write(0.20f);
+              pwm21.write(0.38f);
+              pwm22.write(0.20f);
+              break;
               
+              case(3)://黒黒白左回転弱             
+              pwm11.write(0.27f);
+              pwm12.write(0.10f);
+              pwm21.write(0.33f);
+              pwm22.write(0.10f);
+              break;
+            
+            
+              case(4)://白白黒右回転強
               pwm11.write(0.40f);
+              pwm12.write(0.20f);
+              pwm21.write(0.30f);
+              pwm22.write(0.20f);
+              break;
+            
+              
+              case(6)://白黒黒右回転弱
+              pwm11.write(0.33f);
+              pwm12.write(0.10f);
+              pwm21.write(0.27f);
+              pwm22.write(0.10f);
+              break;
+              
+              case(7)://黒黒黒爆走
+              pwm11.write(0.45f);
               pwm12.write(0.30f);
-              pwm21.write(0.40f);
+              pwm21.write(0.45f);
               pwm22.write(0.30f);
               break;
               
               case(0)://白白白
-              g = 600.0f;
-              gain1 = g - c1;
-              gain2 = g - c2;
               
-              pwm11.write(0.30f);
-              pwm12.write(0.40f);
-              pwm21.write(0.30f);
-              pwm22.write(0.40f);
+              switch(curve_num){
+                  case(1):
+                  
+                  pwm11.write(0.10f);
+                  pwm12.write(0.20f);
+                  pwm21.write(0.10f);
+                  pwm22.write(0.20f);
+                  
+                  while(in2 < thr2){
+                      pwm11.write(0.30f);
+                      pwm12.write(0.30f);
+                      pwm21.write(0.48f);
+                      pwm22.write(0.30f);
+                  }
+                  curve_num++;
+                  
+                  pwm11.write(0.40f);
+                  pwm12.write(0.10f);
+                  pwm21.write(0.20f);
+                  pwm22.write(0.45f);
+                  
+                  
+                  break;
+                  
+                  case(2):
+                  pwm11.write(0.20f);
+                  pwm12.write(0.40f);
+                  pwm21.write(0.20f);
+                  pwm22.write(0.40f);
+                  
+                  
+                  while(in1 < thr1){
+                      pwm11.write(1.00f);
+                      pwm12.write(1.00f);
+                      pwm21.write(0.40f);
+                      pwm22.write(0.20f);
+                  }
+                  curve_num++;
+                  
+                  while(in2 > thr2){
+                      pwm11.write(0.80f);
+                      pwm12.write(0.10f);
+                      pwm21.write(0.20f);
+                      pwm22.write(0.20f);
+                  }
+                  
+                  break;
+                  case(3):
+                  while(in2 < thr2){
+                      pwm11.write(0.45f);
+                      pwm12.write(0.10f);
+                      pwm21.write(0.20f);
+                      pwm22.write(0.20f);
+                  }
+                  curve_num++;
+                  
+                  while(in2 > thr2){
+                      pwm11.write(0.90f);
+                      pwm12.write(0.20f);
+                      pwm21.write(0.20f);
+                      pwm22.write(0.10f);
+                  }
+                  
+                  break;
+                  case(4):
+                  while(in1 < thr1){
+                      pwm11.write(0.35f);
+                      pwm12.write(0.10f);
+                      pwm21.write(0.48f);
+                      pwm22.write(0.20f);
+                  }
+                  curve_num++;
+                  pwm11.write(0.20f);
+                  pwm12.write(0.20f);
+                  pwm21.write(0.40f);
+                  pwm22.write(0.10f);
+                  
+                  break;
+              
+                  default:
+                  pwm11.write(0.30f);
+                  pwm12.write(0.40f);
+                  pwm21.write(0.30f);
+                  pwm22.write(0.40f);
+                  break;
+                  
+              }
+              
               break;
               
-              
-            
-              case(1)://黒白白左回転強
-              pwm11.write(0.30f);
-              pwm12.write(0.30f);
-              pwm21.write(0.30f);
-              pwm22.write(0.20f);
-              break;
-            
-              case(4)://白白黒右回転
-              pwm11.write(0.30f);
-              pwm12.write(0.20f);
-              pwm21.write(0.30f);
-              pwm22.write(0.30f);
-              break;
-              
-              case(3)://黒黒白左回転弱             
-              pwm11.write(0.30f);
-              pwm12.write(0.30f);
-              pwm21.write(0.30f);
-              pwm22.write(0.20f);
-              break;
-              
-              case(6)://白黒黒右回転弱
-              pwm11.write(0.30f);
-              pwm12.write(0.20f);
-              pwm21.write(0.30f);
-              pwm22.write(0.30f);
-              break;
-              
-              case(7)://黒黒黒爆走
-              pwm11.write(0.40f);
-              pwm12.write(0.30f);
-              pwm21.write(0.40f);
-              pwm22.write(0.30f);
-              break;
-               
               default://それ以外(ないけど)
               pwm11.write(0.00f);
               pwm12.write(0.00f);
               pwm21.write(0.00f);
               pwm22.write(0.00f);
               break;
-              }
         }
-        else{
+        
+  /*      else{
             
             pwm11.write(0.00f);
             pwm12.write(0.00f);
             pwm21.write(0.00f);
             pwm22.write(0.00f);
-            }
+            }*/
     }
 }
\ No newline at end of file