sasasa
Dependencies: HMC6352 PID eeprom mbed
Fork of ver1_2_2_1 by
Diff: IR.cpp
- 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;