Files
curtains_avantGarde/curtains/stepper_driver.py

69 lines
1.3 KiB
Python

#!/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 17:34:07
from time import sleep
import RPi.GPIO as gpio
class Stepper:
# Initiate stepper
# Pins = [pin1, pin2, pin3, pin4]
def __init__(self, pins):
self.pins = pins
gpio.setmode(gpio.BCM)
for pin in self.pins:
gpio.setup(pin, gpio.OUT)
gpio.output(pin, False)
# Clears the GPIO settings
def cleanGPIO(self):
gpio.cleanup()
def rotate(self, l, n=1):
return l[n:] + l[:n]
def togglePin(self, pins):
for pin in self.pins:
if pin in pins:
gpio.output(pin, True)
else:
gpio.output(pin, False)
sleep(0.001)
def step(self, rotations, dir, speed=1, forever=False):
for pin in self.pins:
gpio.output(pin, True)
turnLeft = True
if (dir == 'right'):
turnLeft = False
elif (dir != 'left'):
raise ValueError('STEPPER ERROR: no direction supplied')
return False
steps = rotations * 500
pinState = self.pins
while steps > 0:
for i in range(2):
self.togglePin([pinState[0]])
self.togglePin([pinState[0], pinState[1]])
pinState = self.rotate(pinState)
steps -=1
if __name__ == '__main__':
pins = [17, 18, 27, 22]
stepper = Stepper(pins)
stepper.step(10, 'left')
stepper.cleanGPIO()