sasasa

Dependencies:   HMC6352 PID eeprom mbed

Fork of ver1_2_2_1 by ryo seki

Revision:
2:09fabba6c00d
Parent:
0:74bf4953c0d1
--- a/IR.cpp	Sun Mar 10 07:31:31 2013 +0000
+++ b/IR.cpp	Fri Apr 05 07:26:42 2013 +0000
@@ -20,6 +20,11 @@
     int memory_ir = 0;         /*赤外線時間カウンタ*/
     int flag_ir = 0;
     int value = 0;
+    
+    static int direc = 99; 
+    static int past_direc = 99;
+    
+    int liftball;
 
     for(int i=0; i<ALL_IR; i++) {
         flag_ir = 1;
@@ -91,32 +96,42 @@
                     youso_min = i;
                 }
             }
-    
-            double hiritu = 0;
-    
-            int direc = 0;
-    
-            if(youso_min == 0) {
-                hiritu = (double)ir_value[7]/(double)ir_value[1];
-            } else if(youso_min ==7) {
-                hiritu = (double)ir_value[6]/(double)ir_value[0];
-            } else {
-                hiritu = (double)ir_value[youso_min-1]/(double)ir_value[youso_min+1];
+            
+            if(youso_min == 8){
+                direc = 1;        
+            }else if(youso_min == 9){
+                direc = 15;            
+            }else{
+                direc = youso_min * 2;
+            }
+            /*
+            if(ir_value[youso_min] > 50){
+                liftball = 1;
+            }else{
+                liftball = 0;
             }
             
-            if((hiritu <= 0.85)&&(youso_min != 0)) {
-                direc = youso_min*2-1;
-            }else if((hiritu <= 0.85)&&(youso_min == 0)){
-                direc = 15; 
-            }else if(hiritu >= 1.15) {
-                direc = youso_min*2+1;
-            } else {
-                direc = youso_min*2;
-            }
+            if((past_direc != 99)&&(liftball == 0)){
+                if(past_direc == 0){
+                    if((direc >= 4)&&(direc <= 12)){
+                        direc = past_direc;
+                    }
+                }else if(past_direc == 1){
+                    if((direc >= 4)&&(direc <= 14)){
+                        direc = past_direc;
+                    }
+                }else if(past_direc == 15){
+                    if((direc >= 2)&&(direc <= 12)){
+                        direc = past_direc;
+                    }
+                }else{
+                    if(abs(past_direc - direc) >= 4){
+                        direc = past_direc;
+                    }
+                }
+            }*/
             
-            /*if(youso_min == 0){
-                direc = 0;   
-            }*/
+            //direc = youso_min * 2;
     
             /*******  direction end  *******/
     
@@ -147,42 +162,45 @@
             
             double hihhihi = 0;
             
-            hihhihi = (double)ir_value[youso_min]/(double)ir_value[8];
+            if(!ir_value[10]) ir_value[10] = 1000000;
             
+            hihhihi = (double)ir_value[youso_min]/(double)ir_value[10];
             
-            if((direc == 0)&&(hihhihi  >= 0.80)){
-                dista = 10;
-            }else if((direc == 1)&&(hihhihi  >= 0.80)){
-                dista = 10;
-            }else if((direc == 2)&&(hihhihi  >= 0.65)){
-                dista = 10;
-            }else if((direc == 3)&&(hihhihi  >= 0.65)){
-                dista = 10;
-            }else if((direc == 4)&&(hihhihi  >= 0.80)){
-                dista = 10;
-            }else if((direc == 5)&&(hihhihi  >= 0.65)){
-                dista = 10;
-            }else if((direc == 6)&&(hihhihi  >= 0.65)){
-                dista = 10;
-            }else if((direc == 7)&&(hihhihi  >= 0.80)){
-                dista = 10;
-            }else if((direc == 8)&&(hihhihi  >= 0.80)){
-                dista = 10;
-            }else if((direc == 9)&&(hihhihi  >= 0.80)){
-                dista = 10;
-            }else if((direc == 10)&&(hihhihi  >= 0.65)){
-                dista = 10;
-            }else if((direc == 11)&&(hihhihi  >= 0.65)){
-                dista = 10;
-            }else if((direc == 12)&&(hihhihi  >= 0.80)){
-                dista = 10;
-            }else if((direc == 13)&&(hihhihi  >= 0.65)){
-                dista = 10;
-            }else if((direc == 14)&&(hihhihi  >= 0.65)){
-                dista = 10;
-            }else if((direc == 15)&&(hihhihi  >= 0.80)){
-                dista = 10;
-            } 
+            if(ir_value[10] <= 45){ 
+                if((direc == 0)&&(hihhihi  >= 1.0)){
+                    dista = 10;
+                }else if((direc == 1)&&(hihhihi  >= 1.0)){
+                    dista = 10;
+                }else if((direc == 2)&&(hihhihi  >= 0.75)){
+                    dista = 10;
+                }else if((direc == 3)&&(hihhihi  >= 0.65)){
+                    dista = 10;
+                }else if((direc == 4)&&(hihhihi  >= 0.60)){
+                    dista = 10;
+                }else if((direc == 5)&&(hihhihi  >= 0.60)){
+                    dista = 10;
+                }else if((direc == 6)&&(hihhihi  >= 0.70)){
+                    dista = 10;
+                }else if((direc == 7)&&(hihhihi  >= 0.70)){
+                    dista = 10;
+                }else if((direc == 8)&&(hihhihi  >= 0.70)){
+                    dista = 10;
+                }else if((direc == 9)&&(hihhihi  >= 0.70)){
+                    dista = 10;
+                }else if((direc == 10)&&(hihhihi  >= 0.60)){
+                    dista = 10;
+                }else if((direc == 11)&&(hihhihi  >= 0.60)){
+                    dista = 10;
+                }else if((direc == 12)&&(hihhihi  >= 0.60)){
+                    dista = 10;
+                }else if((direc == 13)&&(hihhihi  >= 0.65)){
+                    dista = 10;
+                }else if((direc == 14)&&(hihhihi  >= 0.75)){
+                    dista = 10;
+                }else if((direc == 15)&&(hihhihi  >= 1.0)){
+                    dista = 10;
+                }
+            }  
             
             int count = 0;
             
@@ -196,6 +214,8 @@
 
             /********  distance end  *******/
             
+            past_direc = direc;
+            
             direction = direc;
             Distance  = dista;