' PROGRAM NAME=Test-arm.BAS, Test-Arm.exe (STAND ALONE PROGRAM) ' Written in MS-DOS qbasic v1.1 for testing Robot Arm ' Chuck Schoeffler, Univ. of Idaho 5-27-98, Moscow, IDaho ' Runs fine compiled in Qbasic 4.5. CLS 5 PRINT "Armdroid Test" 10 L = 888 20 PRINT 28 CLS 'clears the screen 30 PRINT "half step values" 40 T = 8: C = 2: S = 10: M = 1: I = 1: A$ = "F" 'DEFAULT VALUES 50 FOR I = 1 TO T 'Loop for reading data values (stepper motor windings) 60 READ W(I) 61 PRINT W(I) 62 NEXT I 63 PRINT 64 PRINT "Motor 6 = Base" 65 PRINT "Motor 5 = Shoulder" 66 PRINT "Motor 4 = Forearm" 67 PRINT "Motor 3 = Right Wrist" 68 PRINT "Motor 2 = Left Wrist" 69 PRINT "Motor 1 = Gripper" 70 PRINT 75 INPUT "MOTOR NUMBER (1-6) 6=BASE, 5=SHOULDER ETC. "; M 'Default will be at least 1 80 IF M < 1 OR M > 6 THEN 70 85 PRINT 86 PRINT "Use F&B for shoulder, use U&D for forarm" 87 PRINT 90 INPUT "LEFT/RIGHT, UP/DOWN (Enter a capital letter F,B,L,R,U,D,O,C ETC.) "; A$ 'Default will be t least "F" forward 96 PRINT 100 IF A$ = "B" THEN D = 0: GOTO 130 110 IF A$ = "F" THEN D = 1: GOTO 130 112 IF A$ = "L" THEN D = 1: GOTO 130 114 IF A$ = "R" THEN D = 0: GOTO 130 115 IF A$ = "D" THEN D = 0: GOTO 130 116 IF A$ = "U" THEN D = 1: GOTO 130 117 IF A$ = "O" THEN D = 0: GOTO 130 118 IF A$ = "C" THEN D = 1: GOTO 130 119 PRINT 120 GOTO 90 130 INPUT "STEPS "; S 'default value will be at least 10 140 IF S < 1 THEN 130 150 O = M + M + 1 'math to get output bits in correct order 160 FOR Y = 1 TO S * C 'begin step loop here, multiply by 2 170 F = W(I) + O 'get step data values 180 OUT L, F 'send data to LPT1 port (888 decimal) '185 FOR DELAY = 1 TO 500: NEXT DELAY 'Delay so I can watch the lights 190 OUT L, F - 1 'used to toggle the 1 shot in the robot on line 1 PRINT "F VALUE = "; F 'information for me to see the step value 200 IF D = 0 THEN 230 210 I = I + 1: IF I > T THEN I = 1 220 GOTO 240 230 I = I - 1: IF I < 1 THEN I = T 'FOR DELAY = 1 TO 1000: NEXT DELAY 240 NEXT Y OUT L, 0 'used to turn all output lines off to save power 242 PRINT 243 INPUT "Do you want to make another robot move? "; M$ 245 IF M$ = "y" THEN 250 ELSE 255 250 GOTO 63 'go back and start over again 255 IF M$ = "Y" THEN 250 ELSE 300 260 DATA 192,128,144,16,48,32,96,64 ' END OF DEMO PROGRAM AS IN ARMDROID BOOK ' Had to replace the POKE statements with OUT ' Added some delays to see what is happening ' L=parallel port number LPT1=888 decimal 378h ' LPT2=632 decimal 278h 300 PRINT 305 CLS 306 PRINT 310 PRINT "OK... Have a Good Day..Bye Bye" 320 END