IRIR

Revision:
1:d6c8be12a3de
Parent:
0:0c7c6eefafe4
Child:
2:22b099fbdd14
--- a/main.cpp	Mon Mar 04 07:50:18 2013 +0000
+++ b/main.cpp	Tue Mar 05 09:45:33 2013 +0000
@@ -2,7 +2,7 @@
 
 #define IR_TIME_NOTFOUND 833    /* 見つけられなかったと判断するまでの時間(単位:us) */
 #define IR_COUNTMAX 487     /*最大パルス幅 パルスの存在しうる最大時間は487us*/
-#define ALL_IR 8
+#define ALL_IR 9
 #define DIRECTION 16
 #define TERM 0
 #define SWAP(type,a,b) { type temp = a; a = b; b = temp; }
@@ -24,26 +24,27 @@
     p17,
     p18,
     p19,
-    p20
+    p20,
+    p30
 };
 
 int Convert_Direction[DIRECTION] = {
-    0,
-    23,
+    90,
+    67,
     45,
-    68,
-    90,
-    113,
+    22,
+    0,
+    337,
+    315,
+    292,
+    270,
+    247,
+    225,
+    202,
+    180,
+    157,
     135,
-    158,
-    180,
-    -158,
-    -135,
-    -113,
-    -90,
-    -68,
-    -45,
-    -23
+    112
 };
 
 int moving_ave(int data,int active_ir)
@@ -166,16 +167,20 @@
             } else {
                 hiritu = (double)ir_value[youso_min-1]/(double)ir_value[youso_min+1];
             }
-    
-            if((hiritu <= 0.83)&&(youso_min != 0)) {
+            
+            if((hiritu <= 0.85)&&(youso_min != 0)) {
                 direc = youso_min*2-1;
-            }else if((hiritu <= 0.83)&&(youso_min == 0)){
+            }else if((hiritu <= 0.85)&&(youso_min == 0)){
                 direc = 15; 
-            }else if(hiritu >= 1.17) {
+            }else if(hiritu >= 1.15) {
                 direc = youso_min*2+1;
             } else {
                 direc = youso_min*2;
             }
+            
+            if(youso_min == 0){
+                direc = 0;   
+            }
     
             /*******  direction end  *******/
     
@@ -197,6 +202,42 @@
                 dista = 0;
             }
             
+            if(dista <= 30){
+                if((direc == 0)&&(ir_value[8] <= 30)){
+                    dista = 10;
+                }else if((direc == 1)&&(ir_value[8] <= 30 )){
+                    dista = 10;
+                }else if((direc == 2)&&(ir_value[8] <= 40 )){
+                    dista = 10;
+                }else if((direc == 3)&&(ir_value[8] <= 43)){
+                    dista = 10;
+                }else if((direc == 4)&&(ir_value[8] <= 42)){
+                    dista = 10;
+                }else if((direc == 5)&&(ir_value[8] <= 42)){
+                    dista = 10;
+                }else if((direc == 6)&&(ir_value[8] <= 42)){
+                    dista = 10;
+                }else if((direc == 7)&&(ir_value[8] <= 40)){
+                    dista = 10;
+                }else if((direc == 8)&&(ir_value[8] <= 38)){
+                    dista = 10;
+                }else if((direc == 9)&&(ir_value[8] <= 34)){
+                    dista = 10;
+                }else if((direc == 10)&&(ir_value[8] <= 40)){
+                    dista = 10;
+                }else if((direc == 11)&&(ir_value[8] <= 42)){
+                    dista = 10;
+                }else if((direc == 12)&&(ir_value[8] <= 39)){
+                    dista = 10;
+                }else if((direc == 13)&&(ir_value[8] <= 40)){
+                    dista = 10;
+                }else if((direc == 14)&&(ir_value[8] <= 41)){
+                    dista = 10;
+                }else if((direc == 15)&&(ir_value[8] <= 33)){
+                    dista = 10;
+                }
+            }       
+            
             /********  distance end  *******/
             
             *direction = Convert_Direction[direc];