REM "Programma per il pilotaggio di un motore passo-passo" REM "Written by Rosario Solimene" DATA 1,5,4,6,2,10,8,9 DATA 1,0,4,0,2,0,8,0 DATA 5,0,6,0,10,0,9,0 RESTORE FOR y = 1 TO 8 READ dato mezpas(y) = dato NEXT y FOR y = 1 TO 8 READ dato unafas(y) = dato NEXT y FOR y = 1 TO 8 READ dato duefas(y) = dato NEXT y z = 0: t = 0 unafas(0) = 0: duefas(0) = 0 OUT 888, 9 FOR y = 1 TO 5000: NEXT y OUT 888, 0 10 CLS COLOR 2 PRINT " -------------------------------------------------------------------" PRINT " - Controllo motori passo-passo V1.0 - Written by Rosario Solimene -" PRINT " -------------------------------------------------------------------" PRINT COLOR 3 INPUT "Inserisci il numero di passi"; passi 30 INPUT "Inserisci la velocit… [1..10]"; vel IF vel < 1 OR vel > 10 THEN 30 50 INPUT "Inserisci la direzione [a/i]"; dir$ IF dir$ = "a" THEN 70 IF dir$ = "i" THEN 70 GOTO 50 70 PRINT PRINT "Inserisci il tipo di azionamento : " PRINT "( 1 ) Azionamento 1 fase" PRINT "( 2 ) Azionamento 2 fasi" PRINT "( 3 ) Azionamento a mezzo passo" PRINT 75 INPUT "[1..3] "; tipo IF tipo = 3 THEN 100 IF tipo = 2 THEN 200 IF tipo = 1 THEN 300 GOTO 75 100 IF dir$ = "i" THEN 120 ss = CSRLIN + 4 COLOR 4 FOR x = 1 TO passi LOCATE ss, 1 PRINT "Passo num. : "; x z = z + 1 IF z > 8 THEN z = 1 OUT 888, mezpas(z) FOR y = 1 TO (10000 * vel): NEXT y OUT 888, 0 NEXT x GOTO 10 120 COLOR 4 ss = CSRLIN + 4 FOR x = 1 TO passi LOCATE ss, 1 PRINT "Passo num. : "; x z = z - 1 IF z < 1 THEN z = 8 OUT 888, mezpas(z) FOR y = 1 TO (10000 * vel): NEXT y OUT 888, 0 NEXT x GOTO 10 200 IF dir$ = "a" THEN 230 IF dir$ = "i" THEN 270 230 ss = CSRLIN + 4 COLOR 4 IF duefas(z) = 0 THEN z = z + 1: t = 1 FOR x = 1 TO passi LOCATE ss, 1 PRINT "Passo num. : "; x IF z >= 7 THEN z = -1 IF x = 1 AND t = 1 THEN 235 z = z + 2 235 OUT 888, duefas(z) FOR y = 1 TO (10000 * vel): NEXT y OUT 888, 0 t = 0 NEXT x GOTO 10 270 ss = CSRLIN + 4 COLOR 4 IF duefas(z) = 0 THEN z = z - 1: t = 1 IF z = -1 THEN t = 0 FOR x = 1 TO passi LOCATE ss, 1 PRINT "Passo num. : "; x IF z <= 1 THEN z = 9 IF x = 1 AND t = 1 THEN 275 z = z - 2 275 OUT 888, duefas(z) FOR y = 1 TO (10000 * vel): NEXT y OUT 888, 0 t = 0 NEXT x GOTO 10 300 IF dir$ = "a" THEN 330 IF dir$ = "i" THEN 370 330 ss = CSRLIN + 4 COLOR 4 IF unafas(z) = 0 THEN z = z + 1: t = 1 FOR x = 1 TO passi LOCATE ss, 1 PRINT "Passo num. : "; x IF z >= 7 THEN z = -1 IF x = 1 AND t = 1 THEN 335 z = z + 2 335 OUT 888, unafas(z) FOR y = 1 TO (10000 * vel): NEXT y OUT 888, 0 t = 0 NEXT x GOTO 10 370 ss = CSRLIN + 4 COLOR 4 IF unafas(z) = 0 THEN z = z - 1: t = 1 IF z = -1 THEN t = 0 FOR x = 1 TO passi LOCATE ss, 1 PRINT "Passo num. : "; x IF z <= 1 THEN z = 9 IF x = 1 AND t = 1 THEN 375 z = z - 2 375 OUT 888, unafas(z) FOR y = 1 TO (10000 * vel): NEXT y OUT 888, 0 t = 0 NEXT x GOTO 10