yusuke takahashi
/
Ball_fanction
IRIR
Diff: main.cpp
- 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];