mirror of
				https://github.com/KevinMidboe/curtains_avantGarde.git
				synced 2025-10-29 17:40:18 +00:00 
			
		
		
		
	Added a cli script for main system calls and stepper interface script from tjmarkham/python-stepper
This commit is contained in:
		
							
								
								
									
										0
									
								
								curtains/cli.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								curtains/cli.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										77
									
								
								curtains/stepper.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								curtains/stepper.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,77 @@ | |||||||
|  | #CURRENT APPLICATION INFO | ||||||
|  | #200 steps/rev | ||||||
|  | #12V, 350mA | ||||||
|  | #Big Easy driver = 1/16 microstep mode | ||||||
|  | #Turn a 200 step motor left one full revolution: 3200 | ||||||
|  |  | ||||||
|  | from time import sleep | ||||||
|  | import RPi.GPIO as gpio #https://pypi.python.org/pypi/RPi.GPIO | ||||||
|  | #import exitHandler #uncomment this and line 58 if using exitHandler | ||||||
|  |  | ||||||
|  | class Stepper: | ||||||
|  | 	#instantiate stepper  | ||||||
|  | 	#pins = [stepPin, directionPin, enablePin] | ||||||
|  | 	def __init__(self, pins): | ||||||
|  | 		#setup pins | ||||||
|  | 		self.pins = pins | ||||||
|  | 		self.stepPin = self.pins[0] | ||||||
|  | 		self.directionPin = self.pins[1] | ||||||
|  | 		self.enablePin = self.pins[2] | ||||||
|  | 		 | ||||||
|  | 		#use the broadcom layout for the gpio | ||||||
|  | 		gpio.setmode(gpio.BCM) | ||||||
|  | 		 | ||||||
|  | 		#set gpio pins | ||||||
|  | 		gpio.setup(self.stepPin, gpio.OUT) | ||||||
|  | 		gpio.setup(self.directionPin, gpio.OUT) | ||||||
|  | 		gpio.setup(self.enablePin, gpio.OUT) | ||||||
|  | 		 | ||||||
|  | 		#set enable to high (i.e. power is NOT going to the motor) | ||||||
|  | 		gpio.output(self.enablePin, True) | ||||||
|  | 		 | ||||||
|  | 		print("Stepper initialized (step=" + self.stepPin + ", direction=" + self.directionPin + ", enable=" + self.enablePin + ")") | ||||||
|  | 	 | ||||||
|  | 	#clears GPIO settings | ||||||
|  | 	def cleanGPIO(self): | ||||||
|  | 		gpio.cleanup() | ||||||
|  | 	 | ||||||
|  | 	#step the motor | ||||||
|  | 	# steps = number of steps to take | ||||||
|  | 	# dir = direction stepper will move | ||||||
|  | 	# speed = defines the denominator in the waitTime equation: waitTime = 0.000001/speed. As "speed" is increased, the waitTime between steps is lowered | ||||||
|  | 	# stayOn = defines whether or not stepper should stay "on" or not. If stepper will need to receive a new step command immediately, this should be set to "True." Otherwise, it should remain at "False." | ||||||
|  | 	def step(self, steps, dir, speed=1, stayOn=False): | ||||||
|  | 		#set enable to low (i.e. power IS going to the motor) | ||||||
|  | 		gpio.output(self.enablePin, False) | ||||||
|  | 		 | ||||||
|  | 		#set the output to true for left and false for right | ||||||
|  | 		turnLeft = True | ||||||
|  | 		if (dir == 'right'): | ||||||
|  | 			turnLeft = False; | ||||||
|  | 		elif (dir != 'left'): | ||||||
|  | 			print("STEPPER ERROR: no direction supplied") | ||||||
|  | 			return False | ||||||
|  | 		gpio.output(self.directionPin, turnLeft) | ||||||
|  |  | ||||||
|  | 		stepCounter = 0 | ||||||
|  | 	 | ||||||
|  | 		waitTime = 0.000001/speed #waitTime controls speed | ||||||
|  |  | ||||||
|  | 		while stepCounter < steps: | ||||||
|  | 			#gracefully exit if ctr-c is pressed | ||||||
|  | 			#exitHandler.exitPoint(True) #exitHandler.exitPoint(True, cleanGPIO) | ||||||
|  |  | ||||||
|  | 			#turning the gpio on and off tells the easy driver to take one step | ||||||
|  | 			gpio.output(self.stepPin, True) | ||||||
|  | 			gpio.output(self.stepPin, False) | ||||||
|  | 			stepCounter += 1 | ||||||
|  |   | ||||||
|  | 			#wait before taking the next step thus controlling rotation speed | ||||||
|  | 			sleep(waitTime) | ||||||
|  | 		 | ||||||
|  | 		if (stayOn == False): | ||||||
|  | 			#set enable to high (i.e. power is NOT going to the motor) | ||||||
|  | 			gpio.output(self.enablePin, True) | ||||||
|  |  | ||||||
|  | 		print("stepperDriver complete (turned " + dir + " " + str(steps) + " steps)") | ||||||
|  | 		 | ||||||
		Reference in New Issue
	
	Block a user