170 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			170 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Python
		
	
	
#!/usr/bin/python
 | 
						|
import serial, reprap, time, sys
 | 
						|
 | 
						|
reprap.openSerial( 0, 19200, 60 )
 | 
						|
 | 
						|
# these devices are present in network
 | 
						|
reprap.cartesian.x.active = True
 | 
						|
reprap.cartesian.y.active = True
 | 
						|
reprap.cartesian.z.active = True
 | 
						|
reprap.extruder.active = True
 | 
						|
reprap.cartesian.x.setNotify()
 | 
						|
reprap.cartesian.y.setNotify()
 | 
						|
reprap.cartesian.z.setNotify()
 | 
						|
reprap.cartesian.x.limit = 2700
 | 
						|
reprap.cartesian.y.limit = 2500
 | 
						|
reprap.cartesian.y.limit = 2000
 | 
						|
 | 
						|
def printHelp():
 | 
						|
	print "\nreprapcontrol command [args]"
 | 
						|
	print "    Commands:"
 | 
						|
	print "        stop                 Stop all axies"
 | 
						|
	print "        reset                Send all axies to home"
 | 
						|
	print "        pos                  Print current position"
 | 
						|
	print "        goto [x] [y] [z]     Go to specified position"
 | 
						|
	print "        power [0 to 63]      Set power level"
 | 
						|
	print "        speed [0 to 255]     Set steper speed"
 | 
						|
	print "        go                   Test routine"
 | 
						|
	print "        free                 Power off steper motors"
 | 
						|
	print "        run [x/y] [speed]    Spin motor forwards"
 | 
						|
	print "        runb [x/y] [speed]   Spin motor backwards"
 | 
						|
	print "        step [x/y/z]         Step motor forward"
 | 
						|
	print "        stepb [x/y/z]        Step motor backwards"
 | 
						|
 | 
						|
def printPos():
 | 
						|
	x, y, z = reprap.cartesian.getPos()
 | 
						|
	print "Location [" + str(x) + ", " + str(y) + ", " + str(z) + "]"
 | 
						|
 | 
						|
print "================================================================"
 | 
						|
 | 
						|
if len(sys.argv) < 2:
 | 
						|
	printHelp()
 | 
						|
 | 
						|
 | 
						|
 | 
						|
########### Cartesian control commands #########
 | 
						|
 | 
						|
# Stop all steppers
 | 
						|
if sys.argv[1] == "stop":
 | 
						|
	reprap.cartesian.stop()
 | 
						|
 | 
						|
# Reset all axies
 | 
						|
elif sys.argv[1] == "reset":
 | 
						|
	reprap.cartesian.homeReset( waitArrival = True, speed = 220 )
 | 
						|
 | 
						|
# Print current positon
 | 
						|
elif sys.argv[1] == "pos":
 | 
						|
	printPos()
 | 
						|
 | 
						|
# Goto a specific location
 | 
						|
elif sys.argv[1] == "goto":
 | 
						|
	reprap.cartesian.seek( ( int(sys.argv[2]), int(sys.argv[3]), int(sys.argv[4]) ), speed = 200, waitArrival = True)
 | 
						|
 | 
						|
# Set stepper power (%)
 | 
						|
elif sys.argv[1] == "power":
 | 
						|
	reprap.cartesian.setPower( int( sys.argv[2] ) )	# This is a value from 0 to 63 (6 bits)
 | 
						|
 | 
						|
# Free motors (switch off all coils)
 | 
						|
elif sys.argv[1] == "free":
 | 
						|
	reprap.cartesian.free()
 | 
						|
 | 
						|
# Test routine
 | 
						|
elif sys.argv[1] == "go":
 | 
						|
	reprap.cartesian.seek( (1000, 1000, 0), 200, True )	
 | 
						|
	time.sleep(2)
 | 
						|
	reprap.cartesian.seek( (500, 1000, 0), 200, True )
 | 
						|
	time.sleep(2)
 | 
						|
	reprap.cartesian.seek( (500, 500, 0), 200, True )
 | 
						|
	time.sleep(2)
 | 
						|
	reprap.cartesian.seek( (10, 10, 0), 200, True )
 | 
						|
 | 
						|
 | 
						|
 | 
						|
############## control of individual steppers #############
 | 
						|
 | 
						|
# Spin stepper forwards
 | 
						|
elif sys.argv[1] == "run":	# run axis
 | 
						|
	if sys.argv[2] == "x":
 | 
						|
		reprap.cartesian.x.forward( int(sys.argv[3]) )
 | 
						|
	elif sys.argv[2] == "y":
 | 
						|
		reprap.cartesian.y.forward( int(sys.argv[3]) )
 | 
						|
	elif sys.argv[2] == "z":
 | 
						|
		reprap.cartesian.z.forward( int(sys.argv[3]) )
 | 
						|
 | 
						|
# Spin stepper backwards
 | 
						|
elif sys.argv[1] == "runb":	#runb axis
 | 
						|
	if sys.argv[2] == "x":
 | 
						|
		reprap.cartesian.x.backward( int(sys.argv[3]) )
 | 
						|
	elif sys.argv[2] == "y":
 | 
						|
		reprap.cartesian.y.backward( int(sys.argv[3]) )
 | 
						|
	elif sys.argv[2] == "z":
 | 
						|
		reprap.cartesian.z.backward( int(sys.argv[3]) )
 | 
						|
 | 
						|
# Step motor forwards
 | 
						|
elif sys.argv[1] == "step":
 | 
						|
	if sys.argv[2] == "x":
 | 
						|
		reprap.cartesian.x.forward1()
 | 
						|
	elif sys.argv[2] == "y":
 | 
						|
		reprap.cartesian.y.forward1()	
 | 
						|
	elif sys.argv[2] == "z":
 | 
						|
		reprap.cartesian.z.forward1()	
 | 
						|
 | 
						|
# Step motor backwards
 | 
						|
elif sys.argv[1] == "stepb":
 | 
						|
	if sys.argv[2] == "x":
 | 
						|
		reprap.cartesian.x.backward1()
 | 
						|
	elif sys.argv[2] == "y":
 | 
						|
		reprap.cartesian.y.backward1()	
 | 
						|
	elif sys.argv[2] == "z":
 | 
						|
		reprap.cartesian.z.backward1()	
 | 
						|
 | 
						|
 | 
						|
 | 
						|
################# control of extruder #####################
 | 
						|
 | 
						|
# Test extrder motor
 | 
						|
elif sys.argv[1] == "motor":
 | 
						|
	nn = 0
 | 
						|
	while 1:
 | 
						|
		if nn > 0:
 | 
						|
			nn = 0
 | 
						|
		else:
 | 
						|
			nn = 150
 | 
						|
		reprap.extruder.setMotor(reprap.CMD_REVERSE, nn)
 | 
						|
		time.sleep(1)
 | 
						|
 | 
						|
elif sys.argv[1] == "getinfo":
 | 
						|
	mtype = reprap.extruder.getModuleType()
 | 
						|
	version = reprap.extruder.getVersion()
 | 
						|
	print "module", mtype, "version", version
 | 
						|
 | 
						|
elif sys.argv[1] == "heat":
 | 
						|
	reprap.extruder.setHeat(255, 255, 255, 255)
 | 
						|
 | 
						|
#setHeat(self, lowHeat, highHeat, tempTarget, tempMax
 | 
						|
 | 
						|
elif sys.argv[1] == "temp":
 | 
						|
	print "Temp is ", reprap.extruder.getTemp()
 | 
						|
 | 
						|
 | 
						|
 | 
						|
############### scan network for devices ###################
 | 
						|
 | 
						|
# Scan snap network
 | 
						|
elif sys.argv[1] == "scan":
 | 
						|
	reprap.scanNetwork()
 | 
						|
 | 
						|
# Test comms
 | 
						|
elif sys.argv[1] == "test":
 | 
						|
	reprap.testComms()
 | 
						|
 | 
						|
 | 
						|
else:
 | 
						|
	printHelp()
 | 
						|
 | 
						|
reprap.closeSerial()
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 |