/* /0LOGBOOK 0 */ program test { #include #include #include #include var lineFound = 0 var finish = 0 event equal_finishEventEqual when finish = 10 sensor light2 on 2 light2 is light as percent macro FORWARD1 { power [ A B C ] 6 bb_Forward(A, C, 30) counter1 = 40 while counter1 > 0 { if light2 < 39{ counter1 = 40 bb_TurnLeft(A, C, 10) } else { counter1 -= 10 bb_TurnRight(A, C, 10) } } counter1 = 40 direction [ C ] [ A ] on [ A C ] wait 10 float [ A C ] } macro TAKESAMPLE { wait 100 if light2 > 41{ bb_TuneCelebration(4) } else { bb_TuneRibbet(2) } } macro TURNLEFT { bb_Forward(A, C, 20) direction [ C ] [ A ] power [ A B C ] 2 on [ A C ] wait 60 while light2 > 38 { bb_TurnLeft(A, C, 10) } bb_TurnLeft(A, C, 10) power [ A B C ] 6 } macro TURNRIGHT { bb_Forward(A, C, 30) direction [ A ] [ C ] power [ A B C ] 2 on [ A C ] wait 60 while light2 > 38 { bb_TurnRight(A, C, 10) } power [ A B C ] 6 } macro FWD_END_GRID { repeat { lineFound = 0 power [ A B C ] 6 bb_Forward(A, C, 40) counter1 = 40 while counter1 > 0 { if light2 < 39{ counter1 = 40 lineFound = 10 bb_TurnLeft(A, C, 10) } else { counter1 -= 10 bb_TurnRight(A, C, 10) } } counter1 = 40 direction [ C ] [ A ] on [ A C ] wait 15 float [ A C ] if lineFound < 10{ finish = 10 } else { finish = 0 } } until equal_finishEventEqual power [ A B C ] 6 bb_Backward(A, C, 40) } main { ext InterfaceType "kRoverBot" rcx_ClearTimers bbs_GlobalReset([A B C]) try { FORWARD1 } retry on fail try { TAKESAMPLE } retry on fail try { TURNLEFT } retry on fail try { TURNRIGHT } retry on fail try { FWD_END_GRID } retry on fail } }