mirror of
				https://github.com/KevinMidboe/curtains_avantGarde.git
				synced 2025-10-29 17:40:18 +00:00 
			
		
		
		
	Removed the big list of states and now iterates over all the states in a clear way.
This commit is contained in:
		| @@ -1,3 +1,10 @@ | |||||||
|  | #!/usr/bin/env python3 | ||||||
|  | # -*- coding: utf-8 -*- | ||||||
|  | # @Author: KevinMidboe | ||||||
|  | # @Date:   2017-08-25 16:04:49 | ||||||
|  | # @Last Modified by:   KevinMidboe | ||||||
|  | # @Last Modified time: 2017-08-25 16:51:30 | ||||||
|  |  | ||||||
| from time import sleep | from time import sleep | ||||||
| import RPi.GPIO as gpio | import RPi.GPIO as gpio | ||||||
|  |  | ||||||
| @@ -6,10 +13,6 @@ class Stepper: | |||||||
| 	# Pins = [pin1, pin2, pin3, pin4] | 	# Pins = [pin1, pin2, pin3, pin4] | ||||||
| 	def __init__(self, pins): | 	def __init__(self, pins): | ||||||
| 		self.pins = pins | 		self.pins = pins | ||||||
| 		self.pin1 = self.pins[0] |  | ||||||
| 		self.pin2 = self.pins[1] |  | ||||||
| 		self.pin3 = self.pins[2] |  | ||||||
| 		self.pin4 = self.pins[3] |  | ||||||
|  |  | ||||||
| 		gpio.setmode(gpio.BCM) | 		gpio.setmode(gpio.BCM) | ||||||
|  |  | ||||||
| @@ -21,17 +24,18 @@ class Stepper: | |||||||
| 	def cleanGPIO(self): | 	def cleanGPIO(self): | ||||||
| 		gpio.cleanup() | 		gpio.cleanup() | ||||||
|  |  | ||||||
|  | 	def rotate(l, n=1): | ||||||
|  | 		return l[n:] + l[:n] | ||||||
|  |  | ||||||
|  | 	def togglePin(pins, waitTime=0.001): | ||||||
|  | 		for pin in pins: | ||||||
|  | 			gpio.output(pin, True) | ||||||
|  | 			sleep(waitTime) | ||||||
|  |  | ||||||
|  | 		for pin in pins: | ||||||
|  | 			gpio.ouput(pin, False) | ||||||
|  |  | ||||||
| 	def step(self, rotations, dir, speed=1, forever=False): | 	def step(self, rotations, dir, speed=1, forever=False): | ||||||
| 		StepSequence = range(0, 8) |  | ||||||
| 		StepSequence[0] = [GpioPins[0]] |  | ||||||
| 		StepSequence[1] = [GpioPins[0], GpioPins[1]] |  | ||||||
| 		StepSequence[2] = [GpioPins[1]] |  | ||||||
| 		StepSequence[3] = [GpioPins[1], GpioPins[2]] |  | ||||||
| 		StepSequence[4] = [GpioPins[2]] |  | ||||||
| 		StepSequence[5] = [GpioPins[2], GpioPins[3]] |  | ||||||
| 		StepSequence[6] = [GpioPins[3]] |  | ||||||
| 		StepSequence[7] = [GpioPins[3], GpioPins[0]] |  | ||||||
| 		 |  | ||||||
| 		for pin in self.pins: | 		for pin in self.pins: | ||||||
| 			gpio.output(pin, True) | 			gpio.output(pin, True) | ||||||
|  |  | ||||||
| @@ -43,21 +47,19 @@ class Stepper: | |||||||
| 			return False | 			return False | ||||||
|  |  | ||||||
| 		steps = rotations * 500 | 		steps = rotations * 500 | ||||||
| 		waitTime = 0.000001/speed | 		pinState = self.pins | ||||||
|  |  | ||||||
| 		while steps > 0: | 		while steps > 0: | ||||||
| 			for pinList in stepSequence:  | 			for i in range(2): | ||||||
| 				for pin in self.pins: | 				self.togglePin([pinState[0]]) | ||||||
| 					if pin in pinList:  | 				self.togglePin([pinState[0], pinState[1]]) | ||||||
| 						GPIO.output(pin, True) |  | ||||||
| 					else: | 				pinState = self.rotate(pinState) | ||||||
| 						GPIO.output(pin, False) |  | ||||||
| 				sleep(waitTime) |  | ||||||
|  |  | ||||||
| 			steps -=1 | 			steps -=1 | ||||||
|  |  | ||||||
|  |  | ||||||
| if __name__ == '__main__': | if __name__ == '__main__': | ||||||
| 	pins = [17, 18, 27, 22] | 	pins = [17, 18, 27, 22] | ||||||
| 	stepper = new Stepper(pins) | 	stepper = Stepper(pins) | ||||||
| 	stepper.step(2, 'left') | 	stepper.step(2, 'left') | ||||||
		Reference in New Issue
	
	Block a user