Now we have a working stepper driver with little delay and without large lists. Need to refine the evolution step count

This commit is contained in:
2017-08-25 17:36:45 +02:00
parent b7d12d9b82
commit 7451362d40

View File

@@ -3,7 +3,7 @@
# @Author: KevinMidboe # @Author: KevinMidboe
# @Date: 2017-08-25 16:04:49 # @Date: 2017-08-25 16:04:49
# @Last Modified by: KevinMidboe # @Last Modified by: KevinMidboe
# @Last Modified time: 2017-08-25 16:51:30 # @Last Modified time: 2017-08-25 17:34:07
from time import sleep from time import sleep
import RPi.GPIO as gpio import RPi.GPIO as gpio
@@ -24,16 +24,17 @@ class Stepper:
def cleanGPIO(self): def cleanGPIO(self):
gpio.cleanup() gpio.cleanup()
def rotate(l, n=1): def rotate(self, l, n=1):
return l[n:] + l[:n] return l[n:] + l[:n]
def togglePin(pins, waitTime=0.001): def togglePin(self, pins):
for pin in pins: for pin in self.pins:
gpio.output(pin, True) if pin in pins:
sleep(waitTime) gpio.output(pin, True)
else:
gpio.output(pin, False)
for pin in pins: sleep(0.001)
gpio.ouput(pin, False)
def step(self, rotations, dir, speed=1, forever=False): def step(self, rotations, dir, speed=1, forever=False):
for pin in self.pins: for pin in self.pins:
@@ -53,13 +54,15 @@ class Stepper:
for i in range(2): for i in range(2):
self.togglePin([pinState[0]]) self.togglePin([pinState[0]])
self.togglePin([pinState[0], pinState[1]]) self.togglePin([pinState[0], pinState[1]])
pinState = self.rotate(pinState) pinState = self.rotate(pinState)
steps -=1 steps -=1
if __name__ == '__main__': if __name__ == '__main__':
pins = [17, 18, 27, 22] pins = [17, 18, 27, 22]
stepper = Stepper(pins) stepper = Stepper(pins)
stepper.step(2, 'left') stepper.step(10, 'left')
stepper.cleanGPIO()