' RVB TRACK 3 Feb 16, 2008 '{$STAMP BS2} 'STAMP directive (specifies a BS2) '{$PBASIC 2.5} ' {$PORT COM6} '--------------- Data -------------------- step1 DATA %1100 step2 DATA %0110 STEP3 DATA %0011 step4 DATA %1001 STEP5 DATA %0000 ' no power to motor DATA @40 '-------------- I/O ----------------- Tilt VAR IN3 'I/O 3 - stamp pin8 - LM339 u10 pin2 Pan VAR IN4 'I/O 4 - stamp pin9 - LM339 u10 pin14 DIRC = %1111 ' Set PINS 8-11 to outputs DIRD = %1111 ' Set pins 12-15 to outputs '----------------- Variable -------------- MotorTilt VAR OUTD 'outputs 12,13,14,15 -> motor tilt MotorPan VAR OUTC 'outputs 8,9,10,11 -> motor pan StepPan VAR Nib ' StepTilt VAR Nib ' rvbd CON 100 ' my time delay constant '============================================================== start: ' begin with reflection on top and right hand RASP elements findpan: ' rapid pan until centered on RASP DO StepPan = StepPan + 3 // 4 ' pan right READ (step1 + StepPan), MotorPan LOOP UNTIL PAN = 1 findtilt: ' rapid tilt until centered on RASP DO StepTilt = StepTilt + 1 // 4 'tilt up READ (step1 + StepTilt), Motortilt LOOP UNTIL TILT = 0 track: ' see where we are and adjust IF Tilt=1 THEN GOSUB tilt_up ELSE GOSUB tilt_down 'DEBUG DEC ? Tilt, " tilt" IF pan=1 THEN GOSUB PAN_left ELSE GOSUB pan_right 'DEBUG DEC ? pan, " pan" PAUSE 1000 GOTO track ' repeat to keep beam on target END '=== subroutine calls === TILT_UP: 'DEBUG "up " DO StepTilt = StepTilt + 1 // 4 'tilt up READ (step1 + StepTilt), Motortilt PAUSE rvbd LOOP UNTIL TILT = 0 RETURN TILT_DOWN: 'DEBUG "dn " DO StepTilt = StepTilt + 3 // 4 ' tilt down READ (step1 + StepTilt), Motortilt PAUSE rvbd LOOP UNTIL TILT = 1 RETURN PAN_LEFT: 'DEBUG "lt " DO StepPan = StepPan + 1 // 4 'pan left READ (step1 + StepPan), MotorPan PAUSE rvbd LOOP UNTIL PAN = 0 RETURN PAN_RIGHT: 'DEBUG "rt " DO StepPan = StepPan + 3 // 4 ' pan right READ (step1 + StepPan), MotorPan PAUSE rvbd LOOP UNTIL PAN = 1 RETURN